Writing·30 articles
How I built the things I built.
Architecture, trade-offs, and the honest story behind each project: the hackathon wins, the products, and the experiments.
Guides 3
What I learned across many builds, with links to each write-up.
Guide3D web lessons
What Six 3D Web Builds Taught Me About Three.js and R3F
Lessons from Apartment 4B, Living Photos, Horror POV, Jellyverse, Anirudh's World and FaceTime from Mars on React Three Fiber, Three.js and performance.
GuideAgent lessons
What Building MCP Servers and Multi-Agent Systems Taught Me
Lessons from LARK, Second Shift, ScreenSense, Super Nova and Director on MCP tool design, agent orchestration, and checking what an agent actually did.
GuideVoice AI lessons
Lessons From Building a Dozen Voice AI Agents and Apps
What twelve voice AI builds taught me about latency, turn-taking, interruptions, TTS choice, captions, fallbacks, and browser versus server speech to text.
Project write-ups
3rd Place, ElevenHacks (ElevenLabs x Zed)Apartment 4B
How Apartment 4B Bakes an Entire Horror Game Into Static Files
Apartment 4B is a browser horror game whose voices, screams and theme music were generated with ElevenLabs ahead of time, so the site never calls an API.
D-ID You
Putting a Talking AI Presenter in Any Video With ffmpeg and D-ID
How D-ID You turns an uploaded video into a narrated MP4 with a circular AI presenter, using ElevenLabs, DeepSeek V3, D-ID Talks and one long ffmpeg filter.
InsightEDU
InsightEDU: Retrieval in the Browser, Generation in the Cloud
How my University of Minnesota capstone turned six school-district equity datasets into Plotly dashboards and a chatbot that retrieves in the browser.
RUA (product story)
From a Chatbot for One Elder to RUA, a Caregiver Command Center
The 0-to-1 story of RUA across five repos: a 2025 Flask chatbot, a privacy proposal, a pure-HTML mockup, a local-first iOS app, and a waitlist site.
ScreenSense (v2)
How ScreenSense Runs a Browser Agent Loop on Amazon Nova
ScreenSense v2 turns a spoken command into a Chrome extension agent loop: screenshot, DOM snapshot, one Nova Lite action, re-observe, repeat until done.
Second Shift
Building Second Shift, a Dispatch Agent That Proves Its Writes
How Second Shift re-plans a field crew's day across Slack, Sheets, Calendar and Gmail with a CP-SAT solver, then reads every write back to verify it landed.
Voices of the Last World
How I Gave Four AI Characters Their Own ElevenLabs Voices
Voices of the Last World is a browser crisis game where two AI minds debate in ElevenLabs voices. Here is the voice, DSP, and LLM fallback design behind it.
YouTube Shorts Factory
Building a YouTube Shorts Factory That Posts Every Day
An unattended pipeline that turns a topic into a published YouTube Short: LLM scripts, Fal.ai images, ElevenLabs voice, Whisper captions, and FFmpeg.
AniBot (this site)
How AniBot Streams Answers About Me From a Netlify Function
AniBot is the chat assistant on my portfolio. How it streams gpt-4o-mini tokens through a Netlify Function, why I dropped RAG, and how the blog is built.
Anirudh's World (Vivarium)
Building a 3D Village That Is a Pure Function of the Clock
How Anirudh's World keeps 20 villagers living on the real clock with no server, using seeded PRNG streams, the drand beacon and a golden-digest test.
Granted Patent (ID 202341031598)CIVS
A Voting Booth You Never Touch, From Face Scan to Thumbs Up
CIVS is a patented contactless voting kiosk that verifies a voter's face with ArcFace and takes the ballot by hand gesture, built in Python and Flask.
Director (fal x Sequoia hackathon)
The Video Editor You Talk To, Compiled to One ffmpeg Command
How I built Director, a voice-directed video editor where a LiveKit agent casts characters, renders shots on fal, and edits an ffmpeg timeline by tool call.
2nd Place, ElevenLabs x Replit HackathonFaceTime from Mars
Faking a 225 Million Kilometer Phone Call to Mars
How FaceTime from Mars turns browser speech recognition, gpt-4o-mini and ElevenLabs voices into a push-to-talk call with three AI Mars colonists.
Horror POV
How Horror POV Paces Its Ghost With a Director State Machine
Horror POV is a browser horror game where a Director state machine paces the ghost, sanity is read from the light field, and five floors share a collider list.
Jellyverse
How Jellyverse Makes Dice Wobble Without a Physics Library
Jellyverse is a four-page browser toy suite built on a from-scratch Three.js rigid-body solver and a GLSL jelly deformer that also drives the shadow pass.
Jungle Safari
How Jungle Safari Hides Every AI Round Trip From a Toddler
Jungle Safari is a toddler animal-sound quiz where every ElevenLabs clip and GPT-4o-mini mascot line is generated ahead of time and cached so nothing loads.
Top 10, Y Combinator AI HackathonLARK
How Lark Turns ChatGPT Into a Phone With One MCP Gateway
How Lark, a Top 10 build at the Y Combinator AI Hackathon, aggregates other MCP servers behind one gateway and a phone-style widget inside ChatGPT and Claude.
Winner, ElevenHacks (Stripe x ElevenLabs)Living Photos
Walking Into a Photograph with Gaussian Splats and a Cloned Voice
How I built Living Photos, a Next.js app that turns one photo into a walkable 3D splat scene with a consent-gated ElevenLabs voice inside it.
Tax It Easy
Building a Voice CPA That Only Says What It Can Cite
How Tax It Easy, a voice AI CPA built overnight at the Moss x YC hackathon, grounds every spoken number and tax-law answer in cited retrieval.
RUA (native app)
Building RUA, an Offline-First Caregiver App With Provable Math
How I built RUA, a SQLCipher-encrypted, no-server iOS caregiver app whose refill math, digest ranking, and label parsing are pure, tested TypeScript.
ScreenSense (v1)
ScreenSense v1: A Hold-to-Talk Chrome Extension Built in 36 Hours
How I built a voice-first Chrome extension that screenshots your tab, transcribes your spoken question, and streams a vision-model answer next to your cursor.
Best Voice Agent, ElevenLabs x Firecrawl HackathonScreenSense (v3)
Teaching ScreenSense to Hold a Conversation While It Clicks
How I rebuilt ScreenSense as a conversational voice browser agent with Firecrawl page context and ElevenLabs voice, and won Best Voice Agent.
Spotify for Hackers
Building an AI DJ That Never Leaves Dead Air Between Tracks
How Spotify for Hackers uses Groq, ElevenLabs and browser-side audio ducking so a voiced AI host bridges every track handoff without a gap of silence.
Super Nova
Wiring a Voice-Only Companion to MCP, Groq and ElevenLabs
How Super Nova turns continuous speech into MCP tool calls and on-screen widgets with a hand-written MCP client, regex-first routing, and ElevenLabs TTS.
TalkativePDF
TalkativePDF: Wiring Chat-with-PDF RAG on Next.js and Pinecone
How I built TalkativePDF, a chat-with-your-PDF app on Next.js 15, Clerk, Firebase, Pinecone and LangChain, and what the code gets right and wrong.
The Missing Angle
Interrogating AI Suspects Out Loud with ElevenLabs Speech Engine
How The Missing Angle wires ElevenLabs Speech Engine, Groq and a Gaussian-splat rooftop into a murder mystery you solve by talking to the suspects.
VoiceCaptcha
Bots Can Click Checkboxes. Can They Speak? Building VoiceCaptcha
How VoiceCaptcha makes a user speak a one-time phrase, transcribes it with Groq Whisper on a Cloudflare Worker, and scores it with a small fuzzy matcher.