Mar 10, 2026 · Medium
Deterministic gates for AI coding agents
95% of the validations an AI coding agent needs can be done without calling an LLM. Here's the AST-based gate we built, and why it saved us both tokens and correctness.
Abhishek Uniyal
Updated Sep 2026
Currently: ChargerDojo · Draftly
Forward-deployed product engineer
Built to keep working past the demo.
Senior backend and platform engineer. Seven-plus years.
| Subject | Role | Period | Evidence on file |
|---|---|---|---|
| ChargerDojo | Sole engineer | Nov 2025 to now | Live OCPI conformance runner, paying B2B customers |
| Zuddl (YC S20) | Engineer II to senior | 2021 to 2023 | Webinars platform, through the $13.35M Series A |
| SynergyBoat | Founding Engineer & CTO | 2023 to now | Agent platform, Dexter, DeepQuery, Draftly |
TypeScript · Go · React · MongoDB · Redis · Cloudflare Workers · MCP · AWS · isolated-vm · Deno · PostgreSQL
Pick whichever one sounds like you. That's your way in.
I am hands-on every day. Right now I am the sole engineer on ChargerDojo, a hosted OCPI conformance runner with paying B2B customers: TypeScript and Go, MongoDB, Redis, Cloudflare Workers, AWS. The case study has the mechanisms, and I will walk you through the repository on request.
I work with teams two ways: forward-deployed, or on a full product build. I start from the customer problem and the data, not a specific model, and I measure the work by what ships and survives. Recent builds include DeepQuery, Dexter, and the SynergyBoat agent platform.
I write about the engineering that gets AI into production: managing context budgets, building deterministic gates, and designing multi-agent platforms, plus the gap between a demo and a system that survives real load. Most of my writing is on Medium.
Recently
A hosted conformance runner for the OCPI roaming protocol that I build and run alone, with paying B2B customers and a mutation harness where every check is either proven able to fail or listed as one no mutation may name.
TypeScript · Go · React · MongoDB · Redis · Cloudflare Workers · MCP · AWS
| version | rule broken | gate |
|---|---|---|
| wire | The runner calls the peer over OCPI message by message, one lane each way, not a single request. | n/a |
| 2.1.1 | mod_cdrs: a CDR cannot change once sent. This peer reads one back at a new total. | caught |
| 2.2 | status_codes: 2.2 has no hub code 4000. This peer answers 4000 to a hub error. | caught |
| 2.2.1 | transport_and_format: limit=10 returns ten records. This peer serves one object more. | caught |
| 2.3.0 | mod_tariffs: tax_included is required. This peer serves a tariff without it. | caught |
| listed | A check no mutation may name, listed with its reason. | not proven |
| connector | dojo-connect, in Go, dials out through the customer firewall on a WebSocket so an endpoint on a laptop can be reached. | n/a |
Built the agent platform SDK behind a US EV startup's move to 150+ B2B clients, with ~40% lower per-client engineering cost and extended runway on a $2M seed.
TypeScript · MCP · isolated-vm · Deno · Redis · PostgreSQL · BullMQ
| part | what it does |
|---|---|
| planner | An LLM-backed decision node. It dispatches to workers and never executes untrusted code itself. |
| model tier | Routing sits in the planner. Cheap calls default to smaller models; escalation to a frontier model happens only when a plan exceeds a cost-or-quality budget. |
| pure function | A worker that is a plain function. |
| isolated-vm | A sandboxed routine, run in an isolated VM. |
| deno subprocess | A sandboxed routine, run in a Deno subprocess. |
| sandbox | Workers run inside it, so a misbehaving plugin cannot take the process down. |
| channel | Carries the result back to the planner. Every channel has a circuit breaker on it, drawn on the return path. |
| redis | Hot state. |
| postgresql | The durable audit trail. |
| state | Pluggable. Either store swaps without rewriting the planner graph. |
| mcp | External AI agents reach the same workers over MCP, without a new adapter. |
Teams sit on databases their non-technical people cannot query. We built DeepQuery for one client's operations team: it discovers a schema and answers plain-English questions across Postgres, MySQL, and Mongo. It runs their reporting in production, and SynergyBoat is now making it a product other clients can point at their own databases.
TypeScript · PostgreSQL · MySQL · MongoDB · OpenAI
| part | what it does |
|---|---|
| question | Plain English, from the operations team rather than an engineer. The one drawn is customers from last month. |
| intent classification | Maps the request to a small set of query shapes: analytics-style aggregates, lookup by entity, time-series comparisons, or ask me more. |
| ask me more | The branch that punts when confidence is low. |
| schema retrieval | Pre-computed digests, discovered across all three databases, so the prompt never carries a full schema dump. |
| value resolution | Resolves ambiguity before the model generates: last month becomes concrete dates, premium users becomes a resolved filter. |
| context budget | The ceiling is 8K tokens. The context fills toward it and stops short, enforced upstream, so the model never has to decide what to drop. |
| query generation | Runs last. The model is called only after the budget stops. |
| postgresql | Users and billing. The query drawn here routes here. |
| mysql | A legacy product system. |
| mongodb | Event logs. |
2026 – present
Founding Engineer & CTO
2025 – present
Founding Engineer & CTO
2024 – 2026
Founding Engineer & CTO
Mar 10, 2026 · Medium
95% of the validations an AI coding agent needs can be done without calling an LLM. Here's the AST-based gate we built, and why it saved us both tokens and correctness.
Mar 6, 2026 · Medium
Faster command-line tools cut the agent dev loop by two to three times. The subject is the CLI stack under Claude Code and Codex CLI.
Jan 1, 2026 · Medium
The Model Context Protocol, announced in November 2024, standardized how LLMs interact with external systems: you define tools as JSON schemas, the model outputs structured calls…
Nov 22, 2025 · Medium
Intent classification sounds like an LLM problem. In practice it is a budgeting problem: what fits in 8K tokens, and what gets pruned before the model ever sees it.
AI is a value-add, not a reason. The product still has to make sense to the customer without it.
I build the system a product actually needs, then stay until it works in production. Seven-plus years across YC-backed startups and founding-stage teams taught me that the gap between a demo and a system is everything the pitch deck leaves out: real users, production load, the constraints nobody scoped. I start from the customer problem and the data, not the model. The work is technical; the reason it exists is not.
Forward-deployed and product-engineering work with founders shipping AI into production. Selective fractional-CTO too.
Open to forward-deployed, product-engineering, and fractional-CTO conversations.
If something here made you think "I want to work with this person," the fastest way is an email.
Or read more about me · Contact.