AI-native email and CRM, backed by a16z. Seed-stage, about ten engineers. These four systems are mine, end to end.
Serving ~100 → 1,400 MAU
Drafting / Auto-labelling
Every inbound email gets read once and turned into structure: sender type, status, labels, and a reply draft waiting in the composer. Micro's labels sync back into Gmail, so the classification is visible wherever you read mail. The hard part isn't the model — it's that Needs Response is a Gmail label anyone can toggle, so work is armed on every observation and collapsed by a debounced queue rather than run at ingest.
PostgresLLM APIsGmail API
Meetings
A bot joins from your calendar, streams transcript in under a second to anyone watching live, and files everything afterward. The transcript is one shared document; summaries are one per person. Same words, your copy — so editing or regenerating doesn't rewrite someone else's. Prep lands before you join: who's attending, what you last discussed. The interesting constraint is Recall's — sub-second transcription requires committing to a language, so live and multilingual are mutually exclusive.
LLM APIsPostgres
Follow-up
The system reads inbound email and LinkedIn and writes down what you owe people — as a real task, held in a suggested state. Muted, dashed, with accept and dismiss as the only controls. Accept promotes it; dismiss deletes it. The gate matters because some suggestions are automations with schedules attached, so they're created closed — nothing fires until you say yes. Every task carries a verbatim quote from the source, or it's dropped.
LLM APIsGmail APILinkedIn
Prism
Our query layer over the object graph. Objects are almost empty; everything real lives in typed property tables, edges included, with values scoped per app, team, and user. Every node a query touches has to answer two independent questions: which value wins for you, and whether you can see it at all. Answer the second one in two places and you don't have a permissions system, you have two that agree for now.
PostgresGraphQLTypeScript
400K
messages / mo through the queue I built
Micro
$1M+
bookings through the flow I owned
Pilot
02Work
2024–25
Pilot
Software Engineer II
Owned the trip planner and worked on a hotel booking flow that processed $1M+ in bookings. Delivered Smart Import end to end and helped migrate the platform from Firebase to MongoDB.
2022–24
CuroStrides
Product Engineer II
One of three engineers on DrCuro, a HIPAA-compliant EHR — scheduling, consultation records, prescriptions, plus a WhatsApp booking flow. Integrated ABHA, India's national health record network, straight against the official APIs instead of through a reseller. Clinics trialled it and it never launched; all of it argued out before agentic coding existed.
2021–22
Velozity
Senior Developer, contract
Built the ECG annotation tool a diagnostics company's technicians worked in daily, and the pipeline that normalized their labelled output for an in-house arrhythmia model. Laid the front end and the data flow the rest of the team built on. Twenty technicians used it every day.
2019–21
StudyMonk
Founding engineer
First technical hire. Built the app, hired the team, and rewrote the product when COVID killed the offline-first version it depended on. The market wasn't ready for the replacement and we shut it down — but I had hired and led engineers before I'd finished my diploma.
A conformance benchmark for agent tool-call authorization. It runs adversarial calls through each framework's real approval machinery to test argument scope, delegated authority, and escalation quality. Early design stage.
Personal
Pulse
Pulse watches my Garmin data and nudges me on Telegram when my routine slips; months of using it on myself turned a simple notifier into a health-coaching system, with every false alarm or missed intervention shaping the next version.
Leaderboards, badges, and XP as an API and SDK, so an app can add progression without designing the schema for it. My first go at shipping something for other developers to build on.
Every first version I've shipped was too confident.
i
Two data points became a trend.
A context builder treated missing data as negative data. The model filled the gaps with a confident explanation and turned two observations into a pattern. I fixed the input, then required every claimed pattern to cite its sample size. The pipeline had erased uncertainty before the prompt.
ii
The work queue reclaims its own failures.
Workers claim due jobs with a lease. If one crashes, the same query that claims new work also picks up expired jobs. Recovery happens during normal operation, removing the need for a separate reaper process that can fail or fall behind.
Architecture through deploy.
Hit me up if you need an engineer to help figure out the system and own what ships, whether you're starting from a blank repo or improving something people already depend on.