You are in: Approach, outside the gate
Product-minded software engineer
Great products start with serving people. I build from there.
In 2026 I worked on LangSmith at LangChain, on trace filtering and the views people use to inspect LLM and agent runs. Before that I built shopping experiences at Google, where I learned to obsess over the user's experience. Now I'm in Gauntlet AI, Cohort 7 · 2026, building AI products and the agent workflows that build them.
The gate
Come in.
Through the passage is the courtyard. Three rooms open onto it, one for each featured work.
The courtyard
Featured work
- West roomGoogle Shopping Brand PickerShoppers save the brands they love and see more of them.
- North roomLangSmith Trajectory ViewFollow an agent's run step by step, and see where it went wrong.
- East roomEighth RankA chess coach for adults with half an hour a day and no coach.
Upstairs: Projects, the master bedroom, where I write, and About. Below the courtyard: How I build.
Google Shopping Brand Picker
Shoppers save the brands they love and see more of them.
I built the mobile frontend and core, and led the desktop extension.
The deep dive, in the master bedroomBuilding Brand Picker for Google ShoppingLangChain
LangSmith Trajectory View
Follow an agent's run step by step, and see where it went wrong.
It shipped as “Messages View” before it was renamed.
I worked with our UX designer over multiple calls to refine how Messages View felt to use. I built rendering for different message formats, including subagent and tool calls, and worked on navigation and scroll restoration.
The deep dive, in the master bedroomWorking on Trajectory ViewPersonal project, built during Gauntlet
Eighth Rank
A chess coach for adults with half an hour a day and no coach.
A chess training roguelite. March your pawn up the board one rank at a time, and beat the boss to promote it. Learn a named technique, drill it until you see it without looking, then use it against opponents who know a little more each circuit.
The daily session takes about 25 minutes: reviews first, one new technique, then one rated game with the coach's review. It's built for a working week.
Each opponent is the same engine with different knowledge switched on. Weak ones only count material; strong ones understand king safety, pawn structure and open files.
A mentor reviews every game: accuracy, the evaluation graph, and the three moments that mattered. Your worst moment becomes a puzzle you retry and review later.
Upstairs
Projects
Eighth RankPlayable
A chess coach for adults with half an hour a day and no coach.
Load BearingIn progress
A game for anyone learning system design, starting with me: each room is a product in trouble, and a simulation shows whether your fix holds, degrades or breaks.
CountersIn design
I’m designing Counters, an Android and web game based on the Ghanaian street game where you flick bottle caps to knock a paper ball past your opponent, with kids and teens across West Africa in mind.
The master bedroom
Writing
Blog posts, ideas, and deep dives into the work in the rooms downstairs.
- Why my portfolio is a houseI’ve studied architecture on my own time, alongside software. This site is my ideal house, built in the browser, and the place where my work lives.
- Working on Trajectory ViewWhat I built on LangSmith's Trajectory View, and why following an agent's run step by step matters more as agents nest runs inside runs.
- Building Brand Picker for Google ShoppingShoppers save the brands they love and see more of them. What it was like to build, and how I see Google using it now.
Upstairs
About
I studied computer science at NYU, built Living Insight during the Insight fellowship, and shipped product at Novative and Google. From January to July 2026 I was a frontend engineer at LangChain, on LangSmith.
I’ve also studied architecture on my own time, and I love African architecture. This house is my ideal one: mud brick and timber, a riad courtyard, and a roof that opens to the sky. The pool underneath is meant to help cool the air circulating through the house, an idea inspired by Persian yakhchal designs.
Timeline
- 2026Gauntlet AICohort 7, building AI products and the agent workflows that build them
- Jan–Jul 2026LangChainFrontend engineer on LangSmith: trace filtering and Messages View, now Trajectory View
- Oct 2021 – Apr 2024GoogleFrontend on the personalization team in Google Shopping, including Brand Picker
- 2021Novative SolutionsEmail and shipping services in C# and .NET, and React dashboards for inventory and sales
- 2020Insight fellowshipBuilt Living Insight, joining NYC open data with simulated real-estate data
- From 2017NYUComputer science
- Languages
- TypeScript · JavaScript · Python · Java · C#
- Frontend
- React · Next.js
- Backend
- Node.js · Express · .NET
- Databases
- PostgreSQL · MongoDB
- Cloud and tools
- AWS · GCP · Docker · Git · Spark
About this house
Why my portfolio is a house: the brief, the inspiration, and what building it taught me.
- Architecture inspired by the earth-and-timber work of Francis Kéré. This is an homage, not his design.
- Brick, timber, plaster, stone, water and plant textures are generated in the browser for this site.
- Sky: three.js Sky shader (Preetham model). 3D built with three.js and React Three Fiber.
The cooling pool
How I build
I built a production line for software. Each small piece of work moves down the line past separate AI workers. Automatic checks decide when a step is really finished, and a fresh reviewer on a different AI model decides whether the work may join the product. I set the plan, the budget and the limits, keep the calls only a person can make, and can overrule any review.
- 1 script running the line
- 3 AI workers on it
- 3 review gates on another model
- 0 merges without a GO
Who does what
The orchestrator
The shift manager
A short script with no AI inside. It decides what happens next, gives each worker only what that worker needs, runs the checks, writes everything down, and enforces the limits. It never writes the product's code, and it never merges.
The coordinator
The lead on the floor
An AI session that runs the project between factory runs. It writes the work orders, starts each run, finishes a run that stopped, calls the gates, and merges on a GO. It works only within the permissions and caps I set.
The factory
The whole production line
The stations in order, the AI worker at each one, the automatic checks between them, and the gates. One small piece of work goes down the line at a time.
Where the factory fits
Building starts only after the planning is done. Each planning phase ends at a gate, and the factory builds the plan one small piece at a time.
- Understand the problem
- Map who uses it
- Design the system
- Prepare the work
- Build, in the factory
One piece of work, station by station
- MeRead the brief
The client's request is read first and its traps listed: licence terms, privacy and ethics problems, banned tools, and anything that quietly drops the hard part.
- MeSet the limits
The spending caps, what the AI may do without asking, and what always comes back to me: scope changes, more money, anything destructive, and changes to cloud resources.
- CoordinatorWrite the work order
One small piece of work, with exact pass and fail examples and a list of the files it may touch.
- GateSpec gate
Reads the work order cold, before any code exists, looking for tests that could pass with no code and rules a builder could read two ways. STOP sends it back; GO locks it.
- OrchestratorStarting check
Runs every existing test before anything changes. They must all pass, so a later failure can only come from the new work.
- AI workerTest writer
Turns the work order's examples into tests before anything is built. The tests must fail now, because nothing exists yet. Then they're locked.
- AI workerBuilder
Builds until every test passes. It can't edit the tests, save its own work, or bring in helper AIs. It stops after 3 attempts and one switch to the stronger model.
- OrchestratorInspection
Runs the tests itself, because a worker saying “done” isn't proof. Checks that nothing locked was touched.
- AI workerReviewer
Always a different model from the builder. Reads the work fresh, names the exact line for every problem, and ends with MERGE or DO NOT MERGE.
- OrchestratorEvidence report
One page: the work order, test results before and after, the review, the cost, how to undo it, and a list headed “Needs your attention”.
- GateMerge gate
A fresh reviewer reads the whole change against the work order and the evidence report, from four sides: product, engineering, testing and logs.
- CoordinatorMerge, deploy, look
On GO, the coordinator merges and pushes. Traffic moves to the new version only after its smoke tests pass.
- GateMilestone review
Reads across every piece in the milestone, looking for what the user sees that the system doesn't actually do.
- MeApprove what only a person can
Facts no reviewer can vouch for come to me as multiple-choice questions. I can also read any review and overrule it.
Why it's built this way
- Nobody grades their own work
The builder doesn't write the tests and doesn't run the final check. A different worker writes the tests, and the script runs them.
- The goalposts are locked
Tests are written before any building and locked once saved. If anything locked changes, the line stops.
- “Done” means a check passed
A worker saying it has finished counts for nothing. Only a test result the script produced itself counts as proof.
- A second opinion from a different AI
A model reviewing its own kind of work tends to miss the same things, so every reviewer is a different model from the one whose work it reads.
- Pieces can each pass and still not fit
Every gate on the line looks at one piece. Only a review across the whole milestone sees how the pieces meet.
- Real data before a format is approved
One real record goes through the code before a format is approved, because made-up text hides the cases that don't fit.
- One builder, not a crowd
In an earlier project, one AI working alone caught 16 of 18 unwritten rules in 28 minutes for $7.77. Teams of AIs took 35 to 58 minutes, cost $17 to $31, and missed rules that fell between team members.
Limits written as numbers
- $15most a single job can spend by default
- 30 minmost any one worker can run
- 3attempts before the builder is marked stuck
- 0helper AIs a worker may start on its own
- 400lines changed before a job always lands on my list
- STOPa file with this name halts the line before the next worker
How it has gone so far
- AEA: an AI agent that answers phone calls
18 work orders for a pretend heating and plumbing company. $71.69 in total AI cost, about $3.98 and 22 minutes per job. 12 passed review, 3 were refused by the reviewer, and 3 stopped themselves.
- Home Building Regulatory Engine
What can be built on a Los Angeles lot. Four milestones in seven days, 21 pieces, each merge-gated, with $37.60 of logged factory spend. Every milestone review found a seam between pieces.
- AI Interpreter Workbench
A benchmark of live speech translation, built in the one-shot mode in 14 pieces for $18.56, under a $20 cap. The whole-build review found a bug every piece's review had passed.
Dollar figures are what each AI run reported.