Five systems, each written up as it was built.
Each case study covers the problem, how data moves through the system, what was built, and the decisions that mattered. Client systems are described without naming the client, and metrics that belong to a client aren’t published. The two products of my own are linked.
Client work
3 · anonymized
- Support agent platformAn AI support agent across tickets, live chat and a first-party chat widget, with a learning loopNext.js 16 · AI SDK v6 · Upstash Redis + Vector · Claude, Gemini, OpenRouterAn AI support agent across tickets, live chat and a first-party chat widget, with a learning loopNext.js 16 · AI SDK v6 · Upstash Redis + Vector · Claude, Gemini, OpenRouterIn productionClient work
- Support IntelligenceA morning read of a support desk for people who don't read ticketsNext.js · Gemini 2.5 Flash · RedisA morning read of a support desk for people who don't read ticketsNext.js · Gemini 2.5 Flash · RedisIn productionClient work
- Community SignalTwo small internal tools that each replaced a weekly manual taskPython · SQLite · Claude / Next.js · monday.com GraphQL · GeminiTwo small internal tools that each replaced a weekly manual taskPython · SQLite · Claude / Next.js · monday.com GraphQL · GeminiInternalClient work
Own products
2 · open them
- NEPSE CopilotA multi-account investing copilot for the Nepal Stock Exchange that grades its own callsNext.js 16 · Neon Postgres · AI SDK v7 · Gemini Live · TelegramA multi-account investing copilot for the Nepal Stock Exchange that grades its own callsNext.js 16 · Neon Postgres · AI SDK v7 · Gemini Live · TelegramLive · sign-in ↗Own product
- offScriptA rehearsal partner for actors: two speech engines, a directing room, and a cue engine that knows the lineNext.js · Gemini TTS + ElevenLabs · Gemini Live · browser speech · IndexedDBA rehearsal partner for actors: two speech engines, a directing room, and a cue engine that knows the lineNext.js · Gemini TTS + ElevenLabs · Gemini Live · browser speech · IndexedDBLive ↗Own product
Next step
Have a process that runs on someone copying data between two tabs?
Describe it: what it is, who does it, how often, and what goes wrong when it's late. I reply within one working day with a scoping call or a reason it isn't worth automating.