👋
Hi, I'm Aaron
🐢
Available for full-time roles

Hi, I'mAaron Tao.I build AI products that ship.

Two years ago I was writing CRUD endpoints. Now I ship RAG systems, agents, and streaming chat to real users.

Based in Melbourne. Solo-shipped to the App Store. Currently obsessed with closing the gap between LLM demos and shipped products.

About

Field Notes

What's on my desk.

May · MMXXVI

i.Now⚗️

Going wide on the AI stack

Three threads in parallel — vibe-coding with Claude Code, RAG pipelines end-to-end (chunking, hybrid search, re-ranking), and AI agents (tool use, state, when to stop). Less demo-magic, more "why does this actually hold up in production".

ii.Reading📖

Karpathy's second-brain stack

Claude Code + Obsidian — the agent-on-your-notes workflow Andrej Karpathy calls a "second brain". Also tinkering with GPT-Image-2 for visual experiments.

"Memory is finite. Externalizing knowledge is how thought scales."
iii.Building🛠️

Small AI Chrome extensions

Vibe-coding tiny browser tools with Claude Code — each one a weekend from idea to install. EchoReply (Gmail intent decoder) and JD Analyzer (resume ↔ JD match) just shipped to the Chrome Web Store. Next one already on the bench.

See the lineup

Always under
construction.

Aaron
May 26
— i —

I started in CRUD apps — the kind of work where the hard part is naming things and the easy part is the framework. The pattern got familiar fast. When LLMs started actually working in production, I went chasing what wasn't familiar yet, and I haven't stopped — retrieval, streaming, agents, vibe-coding workflows, the messy second half of an AI feature where the demo ends and the user shows up.

RAG was the first thing I picked to go deep on, because it's the part that decides whether an LLM product feels smart or stupid, and almost no one writes about it honestly. DocuMind is my running notebook on the topic — I rebuild the same pieces (chunking, eval sets, hybrid search) until I can say why each one is the size and shape it is. Agents and vibe-coding are next.

Mostly I care about shipping. A demo I can't put in front of a real user is a research project with better lighting. The work I'm proud of is on the App Store, on Vercel, and now in production as the internal payroll system for Shangxue Tutoring (Mar – Jun 2026) — getting hit by traffic from people who don't know me.

I keep picking up new ways of working — the stack moves, you move with it. Right now I'm vibe-coding AI Chrome extensions with Claude Code. EchoReply is the first one out the door — an AI sidebar for Gmail that decodes what the sender actually wants and drafts replies in three tones, now live on the Chrome Web Store. Proof I'm not just reading about this stuff, I'm shipping with it.

Stack

AI / LLMOpenAI APILangChainClaude APIPrompt Eng.RAGAI Agents
FrontendReactNext.jsTypeScriptTailwind CSSShadcn/UIFramer Motion
MobileReact NativeExpo
BackendNode.jsExpressPythonPrismaREST API
Cloud & DBAWSMongoDBVercelSupabaseClerkStripe
Recently shippedAll projects ↓

Selected work

A handful of things I've shipped — each link is a real product or a working repo.

FeaturedAI · RAG · SaaS

DocuMind

AI-powered SaaS platform — upload PDFs and query them in natural language via RAG. Built with LangChain, OpenAI GPT-4o-mini, and Pinecone vector DB. Streaming SSE responses, source citations, multi-turn memory, and per-user namespace isolation.

Streaming SSE · RAG pipeline · Pinecone vector search · Deployed Vercel + Render

ReactNode.jsLangChainOpenAIPineconeMongoDBTailwind CSS
Deep diveBuilding DocuMind: a production RAG case study
DocuMind
  • SkillPath — Adaptive AI Learning Paths
    SkillPath — Adaptive AI Learning Paths

    LangGraph-powered learning-path generator. Three compiled StateGraphs (planner / quiz / retry) design a week-by-week roadmap, fetch real resources via Tavily, generate quizzes, and adapt to your weak spots. Wrong answers get embedded into Pinecone with concept tags, so memory shapes future roadmaps — even across different topics.

    LangGraph StateGraphs · Pinecone long-term memory · SSE streaming agent log · Adaptive retry loop · Google OAuth + JWT · 15 vitest specs

    React 19ViteExpressLangGraph
  • ShangXue · Teacher Salary System
    ShangXue · Teacher Salary System

    Internship project for Shangxue Tutoring — production payroll platform replacing paper-based teacher salary claims. 10+ weeks shipping with one PM and Claude Code as my AI pair. Three-tier RBAC (teacher · admin · superadmin), invitation-based onboarding, live AUD→CNY rate locked per claim, bilingual EN/Chinese UI. Layered Express backend with 39 unit tests.

    Internship (Mar–Jun 2026) · 10+ weeks shipping · 3-tier RBAC · Bilingual · 39 backend tests

    React 19ViteExpressMongoDB
    Deep diveBuilding ShangXue: a payroll system, a PM, and an AI pair
  • EchoReply — AI Email Coach for Gmail
    EchoReply — AI Email Coach for Gmail

    AI email coach that lives in Gmail. Open any thread and the sidebar reads the sender's real intent, emotional temperature, and reply urgency, then drafts replies in three voices — Professional / Warm / Confident — plus a Tone Check that audits your own drafts before you hit send. Powered by your own Claude or OpenAI key — emails never touch a third-party server.

    Chrome Web Store · Manifest V3 · Vanilla JS, zero build, zero deps · 24h local cache · Multi-provider (Claude · OpenAI) · Zero backend

    Chrome ExtensionManifest V3Vanilla JSClaude API
    Deep diveBuilding EchoReply: an AI email coach that lives in Gmail
  • JD Analyzer — AI Resume & JD Match
    JD Analyzer — AI Resume & JD Match

    Privacy-first Chrome extension that scores your resume against any job description in seconds. Open a posting on LinkedIn, Seek, or Indeed, click Auto-fill, and get a 4-dimension match score, skill-gap analysis, streaming cover letter, line-by-line resume rewrites, and 10 predicted interview questions. Powered by your own Claude or OpenAI API key — every byte stays in your browser.

    Live on Chrome Web Store (May 2026) · 8 job sites · ~$0.01–0.03 per analysis · 37 unit tests · Zero backend, zero tracking

    Chrome ExtensionManifest V3Service WorkerClaude API
    Deep diveBuilding JD Analyzer: a privacy-first Chrome extension for resume-JD matching
  • Wayfarer — Melbourne Motorcycle Guide (骑迹行者)
    Wayfarer — Melbourne Motorcycle Guide (骑迹行者)

    Bilingual six-chapter Chinese-language guide for Melbourne motorcycle newcomers — VIC licensing, bike picking (11 curated + 43-bike catalog with side-by-side compare), gear, 12-month skill progression, Black Spur route notes, and insurance comparison. React 18 + Vite SPA pre-rendered to static HTML with Puppeteer so each chapter is SEO-indexable, content driven by a single editable data file.

    6 chapters · 43-bike catalog · Puppeteer SPA pre-rendering · React 18 + Vite · Deployed Vercel

    React 18VitePuppeteerVercel
  • All Storage
    All Storage

    Full-featured cloud storage and file-sharing platform. Passwordless email OTP auth, real-time data sync, and modular architecture built for scale. Next.js 15 App Router with TypeScript and AppWrite backend.

    Passwordless OTP auth · Real-time sync · Next.js 15 · Deployed Vercel

    Next.jsTypeScriptAppWriteTailwindCSS

Writing

Notes on building, shipping, and what I'm learning along the way.

All posts

Let's talk.

Open to full-stack and AI engineering roles. If you're building something where shipping matters, drop me a line.

taoaaron5@gmail.com
GitHubLinkedInReplies within 24h · Australian PR