sit in the room first
I take the stakeholder call. Requirements, constraints, and a straight answer on whether it's feasible.
Five years building production SaaS platforms — multi-tenant, AI-native, and load-tested before launch. One clear span from requirements to production alert: no intermediate supports, no handoff at any boundary.
see the work →Usually vague, usually urgent, usually described as small.
I take the stakeholder call. Requirements, constraints, and a straight answer on whether it's feasible.
The stack depends on the load, the team who'll maintain it, and how fast it has to move. I've shipped production in TypeScript, Python, Go and PHP.
Increments short enough to change direction. I write the review comments too, not just receive them.
Unit and E2E coverage, load tests against real throughput, auth and access boundaries checked before launch.
CI/CD pipelines, infrastructure defined in code, staged releases. A deploy should be boring enough to do on a Thursday.
Dashboards, distributed traces, error tracking, custom metrics, and alerting that actually reaches a human.
And I'm still on it afterwards. Shipping is the middle of the job, not the end of it.
The breadth came first — four language ecosystems before any of this existed. The harness that compresses my estimates is written up in full: conventions, agent roles, the MCP servers actually wired in, and the gates nothing merges without.
Mostly SaaS, mostly multi-tenant, mostly things that break loudly when they break. Voice AI built before the platforms existed, autonomous delivery logistics, Japanese government data pipelines, UK edtech, Dutch equity plans, and a Norwegian task platform that quietly holds millions of users.
Two halves. The sequence a piece of work moves through, and the tooling that compresses the mechanical parts of it. The first half hasn't changed in five years. The second changed completely in the last two.
The breadth came first. I was shipping across four language ecosystems before any of this existed — MERN, then Laravel and Vue, then Go and Python. Agents amplify judgment. They don't supply it. What follows compresses the mechanical half of a build. It does nothing for the half that depends on knowing what should be built.
Illustrative — the real ratio depends on the codebase. The estimate drops because the mechanical part collapsed, not because anything got skipped. Review and hardening grow in absolute terms.
Skills teach an agent how to do a repeatable job. MCP gives it a live connection to the system where that job happens. The value isn't the tool — it's the specific hour of the week it deletes.
Architecture boundaries and an explicit list of things never to do — the brief I'd hand a new engineer on day one.
removes: re-explaining how we do things, every sessionOne drafts, one reviews against the spec, one runs the suite. No agent approves its own work — the same rule we apply to people, for the same reason.
removes: a single unreviewed opinion reaching the branchOne drives the browser through the real user flow, the other diagnoses what it finds — network, console, performance.
removes: clicking through the same checkout for the twentieth timeVersion-specific library docs fetched at request time rather than recalled from training data.
removes: code written against an API that moved two releases agoMigrations and types written against the tables that exist, not the ones somebody remembered.
removes: the migration that passes review and fails on a real columnLive errors with stack, release tag and frequency, pulled into the working context.
removes: guessing which deploy broke itLint, types and tests block the merge. On retrieval work, a dropped eval score is a red build like any other.
removes: judgment calls that should have been a failing checkPackaged procedures, including docx / pptx / xlsx / pdf generation for specs and handover decks built from the same source of truth as the code.
removes: documentation drifting from the system it describesFast is a result.
It isn't the method.
No engineers to spare, or none who can take it end to end. I scope it, build it, deploy it, and stay on it after launch.
You have a team and a backlog that's outgrown it. I join properly — your process, your conventions, your review queue, not a parallel track.
You have people but nobody scoping the work, estimating it honestly, or holding the review bar. That's a role, and I've done it.
I started in JavaScript, on the MERN stack, building whatever the client needed. Five years later the list of languages is longer — but that was never the point. The point is that I stopped needing the stack to be decided for me.
Early on, "full stack" meant frontend, backend, database. That's a narrow definition and it stops being useful the moment something goes wrong in production. So the scope widened: CI/CD, infrastructure, scaling, monitoring, security. Not because I collected them, but because each one turned out to be the thing standing between a feature working on my machine and a feature working for real users at 2am.
What I actually do day to day is develop and ship. But I'm also the person who takes the call with stakeholders, turns a vague request into requirements, and says early whether it's feasible — instead of finding out in week three. I work in agile cycles: short iterations, real testing, PR reviews in both directions, and monitoring afterwards. End to end ownership, and I mean the end part.
I use agent teams, Claude Code and MCP in my daily loop, with guardrails, because velocity that skips review isn't velocity — it's debt arriving early.
B.S. Computer Science, University of South Asia, 3.9 CGPA. Started working professionally in the seventh semester, so the coursework and the production incidents overlapped.
MVPs through production apps, solo and in teams. REST APIs, OAuth, relational modeling — and the first time I had to think about a system rather than a screen.
Owned more than half of usebetty.ai, a no-code AI call agent. Speech, telephony, queues, workers, and a canvas where non-engineers build their own call flows.
Geospatial platforms for a Japanese government digitization programme. OCR pipelines at scale, medallion architecture, Go and Hono on GCP, all managed in Terraform.
Several legacy systems merged into one Next.js and NestJS platform. Containerized, instrumented end to end, production bugs down roughly 99%. Then a RAG knowledge engine on top, with real evals.
Strongest where AI systems meet infrastructure that isn't allowed to fall over.