Hello, I’m Basant Bhattarai.

Senior Data & AI Engineer

I design data platforms, AI systems, and the architecture between them.

Nine years on systems that have to keep working: terabyte-scale ingestion, the databases underneath, and agents that write into governed stores, not a chat window.

Basant Bhattarai
Taking one or two consulting engagements

Four problems worth calling me about.

How an engagement works
  1. Data platforms that keep working at the next scale

    Ingestion, processing and serving that worked at one scale and stopped at the next: streams that stay exact through failure, lakehouse tables you can roll back, and contracts that wait for the consumers they would break.

  2. AI systems that have to touch production data

    Agents with typed output, provenance and a review path, and the evaluation under them: a gate that can tell a regression from noise, and a defined answer for when the model cannot decide.

  3. Databases that scale out and survive failure

    Sharding and rebalancing, failover, backup and point-in-time recovery, and the upgrades in between, measured on real clusters before anyone depends on them.

  4. System architecture with the recovery path designed first

    Where state lives, what is idempotent, what a second delivery does, and how a release stops itself when it is bad — decided before the incident and written down as decisions you can revisit.

Measured, with the method in each write-up.

All writing
  1. p = 0.39 A 4.8-point eval drop that 12 changed answers out of 83 could not separate from noise The eval score fell 4.8 points. Twelve answers decided whether it meant anything.
  2. 3 of 37 auto-published agent answers were wrong, and no check in the pipeline could see them The agent got 48 of 54 right. Three of the wrong ones published themselves.
  3. 0.746 → 0.363 AUC-PR of the leaky fraud model: on validation, then on the next two weeks Validation picked the fraud model that had read the future
  4. 3.9 of 10 rows returned by post-filtered vector search at a 10% filter, with no error raised Filtered vector search returned four rows instead of ten, and nothing failed
  5. 59.8% of on-time events counted by 10-second windows in the worst broker kill, while every record stayed exact Exactly-once held through nine failures. The window counts did not.
  6. 33 retries of one Citus shard move, blocked by cleanup records for a node that no longer existed Citus removed the node. Its cleanup records stayed behind.
  7. 6 of 6 bad releases aborted by canary analysis, once it judged against stable and refused empty windows My canary analysis aborted a good release and promoted a bad one
  8. 0 breaking schema changes the contract checker passed as safe, across 51 labelled changes Removing an optional field breaks consumers. Adding one breaks history.
  9. 63% of a real trend recovered by counting a 95%-accurate classifier's labels The classifier was 95% accurate. The trend it counted was a third too flat.

Working across European afternoons and US mornings.

Email instead