I run a data platform for one user.
Then I build things on it.
Kafka, Airflow, Postgres, MinIO, Iceberg, Trino, Nessie, Superset, n8n — self-hosted on a single VPS, used for real work. Currently shipping zoning-compliance RAG / GraphRAG at AIAEC.
What I'm working on, right now
Building scraping pipelines that feed a zoning-compliance chatbot. The interesting half is the retrieval architecture: RAG over the document text, GraphRAG over zoning relationships (overlay districts, parent ordinances, amendment chains), with a verifier that checks generated citations against source PDFs.
- Shipping a new QA Dashboard view this week — surfaces hallucinated section numbers in < 2s p95.
- Reading Designing Data-Intensive Applications, second pass, focused on chapters 5 & 11.
- Studying for Azure DP-203; targeting late June.
The stack I run, end to end
A self-hosted lakehouse on one Contabo VPS, behind Caddy. Five tiers, ten services, one operator. Each node below links to its entry on /stack.
Selected work
alydbouk-stack — one VPS, ten services
Kafka, Airflow, Postgres, MinIO, Iceberg, Trino, Nessie, Superset, n8n on a single Contabo VPS. The platform every other project here runs on.
ChatAEC — QA dashboard, no warehouse
PostgREST + Caddy + versioned SQL views directly on the operational database. Zero ETL, zero freshness lag, four days to first dashboard.
Latest notes
Why ChatAEC has no analytics warehouse
PostgREST over versioned SQL views gave us a dashboard in four days and zero new services to operate. Here's what we'd lose at scale.
The Iceberg compaction job that ate Sunday morning
A small-files problem that wasn't small. Notes from a four-hour incident on a one-operator stack.
GANs are great until you check PSNR
Closing notes from my MSc thesis: where adversarial loss helps satellite super-resolution and where it actively lies.
Get in touch
Open to data-platform / ML-infra roles, contracts, and collaborations. I respond fastest to email. No form — pick the channel that suits you.