selected work
The same move, in every medium I’ve had.
350+ kids taught to code, a startup that reached Microsoft for Startups and ended because I ended it, an agent that answers a real phone, essays about brains I taught myself. They look unrelated. They’re not — each one is the same three steps, and the steps are the only thing I’m really claiming.
the move — what every exhibit below is a version of
- 01 problem Something that actually hurts someone — a traveler getting robbed, a kid locked out of CS, a paralysed brain, an acidifying ocean.
- 02 prototype The most ambitious thing I can build at it with what I have. Ships rough before it ships polished.
- 03 teach / give away The point was never to own it. Teach it, open it, or let it die honestly when it should.
teach / give away
The clearest proof
- SkillTern Taught 350+ 2022–23
An education nonprofit I co-founded and ran as CTO, teaching computer science and AI literacy to kids in Delhi who were locked out of it — 350+ of them, with the curriculum, the website, and the certification system built to match.
This is the whole move in one object: a real gap that hurt specific people, a curriculum and a room built at it, and an organisation designed from day one to survive my leaving. Everything else on this page is a variation on that shape.
build, then let it die honestly
The one I shut down
- TurtleShell Shut down 2022–23
A tourist-safety startup I co-founded. Registered it, got it into Microsoft for Startups, built the thing — and then shut it down when shutting it down was the right call.
I’m listing the shutdown as an achievement because it was one. TurtleShell taught me to kill a project cleanly and say so out loud — the same reflex that later made me comfortable stamping my own live-looking work “Demo”.
the current chapter
Agents, and the guardrails around them
- The correspondent layer Demo 2025–
At Superpowr I own an AI voice-and-email agent that handles first-contact recruiting end to end — the calls, the follow-ups, and a guardrail around every action it is allowed to take.
It runs against a seeded synthetic world: no real candidates, no production traffic, so the stamp reads Demo and not Live. The agents are only the medium; what I care about is running one without letting it lie to me, which is where the lessons below came from.
- adversarial battery, not static eval
- harness truth ≠ wire truth
- guardrails that refuse me
- what kills these systems is state, not intelligence
- Steering models Ongoing 2023–
The craft under all of the above — the one my resume would call “prompt engineering” and I’d call, more honestly, manipulating the AI. It means making a model’s output something I can run again and get again: rules it cannot drift out of, reasoning I can inspect, and no trust extended to a single word I did not constrain.
It has two halves. Offense: squeeze deterministic, software-shaped output out of a random text predictor. Defense: a guardrail around every action it’s allowed to take, so being wrong is survivable. It runs through the correspondent layer, through CiteGuard’s external rail, and — the receipt I like best — through the headline on my own home page, which was steered by an adversarial panel of models, not typed.
- A private voice agent Unverified 2024–
A separate, personal build: an agent that answers a real phone number, holds a conversation, and can be interrupted mid-sentence — running on a 2013 Mac Pro with 12GB of RAM under the desk.
It works when I call it — an anecdote, and I am its friendliest possible caller. No dated dependency check exists, so it gets no green: it prints Unverified until one does.
- CiteGuard Prototype v0.3 2025–
A separate venture: a neutral verification rail for legal citations. Not another model that promises to be right — a check that sits outside the model and refuses to take its word for it.
The problem is concrete. Grounded legal AI still hallucinates citations at a rate no filer can absorb, and jurisdictions are starting to require that every citation be certified before it is filed. Verification like that has to be a process the tool cannot skip, not a feature it can be talked out of. It is a prototype, and it is stamped like one.
- Automated bug detection Prototype —
A static-analysis tool that catches 20+ classes of bug and security flaw as you type — regex plus AST traversal, wired into a VS Code extension that flags them live and suggests the fix.
It hit 89% on the test repositories I ran it against — undeclared variables, unused imports, logic slips. A test-repo number, not a universal one, and it says so. A site about not letting code lie has a soft spot for a tool that reads code for exactly that.
- AI Builder Prototype 2025
A cabin-design platform where the generator is the easy half. Around it: a Seattle residential-code rule engine, NSGA-II optimisation over spaciousness, cost and comfort, full MEP routing, daylight and energy simulation, and export to IFC, DXF, STL and glTF — the formats a plan reviewer and a contractor actually open.
Generative design demos beautifully and gets trusted far too easily, because nobody checks the render against the setback table. This one has to survive the things that decide whether a building can legally exist before it is allowed to show you anything. 5,919 lines of Python, and the honest scope is on the page: Seattle rules, a prototype, no users claimed.
- The conversation simulator Working 2025
A Slack conversation simulator whose central decision is to not simulate time at all. It runs from cron, and most invocations post nothing — so the silence between messages is literal silence, which is the only way you get 3am gaps, threads that go dormant, and someone necroposting four days later.
The engine decides whether and who; the model only writes the words. 35 personas on circadian availability curves, thread heat on a half-life, fatigue, dormancy. My favourite constant is the one that says a sleeping person speaks with probability 0.02 rather than 0 — because a perfectly empty night is its own tell.
strategy, not code
The same move without a compiler
- IKEA × TKS Recommended 2023
A strategy engagement for IKEA through The Knowledge Society. Gen-Z loves the store and buys nothing from the showroom — not because they dislike it, but because every room in it is laid out for a life they do not have yet, so the store’s single best mechanism aims slightly past them.
The recommendation was a browser-based world where they lay out their own rooms at their own dimensions, the best designs go on kiosks at the store entrance, and the creators whose layouts sell get paid a share. Primary survey plus practitioner interviews, delivered as a 19-page recommendation on a staged roadmap. Delivered, not built — and the page says so.
- The phishing policy paper Runner-up 2023
A co-authored policy paper on AI-driven phishing — specifically Business Email Compromise, the attack where someone who sounds exactly like your CFO asks you to move money. Generative models had just removed its last reliable tell: bad grammar was the free signal that let a distracted human catch a fake, and it is gone.
Almost every proposal in the space stops at “build a better classifier”, which is the part that already works. We spent the paper on who maintains the model in year four, who funds it, who feeds it — and who is allowed to define what counts as an attack, because a shared flagged-sender list is a blocklist with real consequences. Runner-up at the WatGov Hackathon; three authors, and not adopted.
learning in public
Teaching myself, in the open
- Teaching myself neuroscience in public Four essays 2022–23
Four essays working through optogenetics, brain-computer interfaces, connectomics, and building a convolutional net from scratch — written as I taught myself each one.
These are writing, not lab credentials. The habit is old: if I cannot explain a hard thing plainly, I do not actually understand it yet, and the essay is how I find out which one it is. Same move as SkillTern, pointed at my own gaps instead of someone else’s.
- DeepTracer Research 2025–
I’m an undergraduate research assistant in Dong Si’s DAIS lab at UW, on DeepTracer — the cryo-EM-to-3D-protein-structure pipeline. Data preprocessing and model training in PyTorch and OpenCV on backbone trace alignment, plus PyMOL rendering and annotation tools.
The honest caveat is the credit: undergraduate RA work carries no paper byline, so I claim none — no authorship, no borrowed paper credit. It is a real, current role, and that is exactly how it reads.
before it was a career
The founder reflex, early
- H2OAquatics & civic platforms Civic 2020–23
Before any of this was a job: H2OAquatics, an autonomous underwater vehicle aimed at ocean acidification, and a set of civic platforms that aggregated NGO campaigns so people could actually find them.
They are here to show the instinct started young and started civic — a problem that hurt someone, the most ambitious build I could manage at the time, and no interest in keeping any of it once it had done its job.
If one of these is the shape of a problem you are sitting on, I would rather talk about that than about me.