Inspiration
I was a private chemistry tutor, and two things bothered me. First, quality: too many of my colleagues "taught" by reading off slides, the same deck for every student. Teaching quality like that is too easily replaceable by AI. Second, access: I charged $100+ a lesson (the standard rate for a good tutor), so the students who needed help most often couldn't afford me. And even for those who could, I was one person on a schedule. I still remember the panicked questions that arrived at 11pm the night before an exam, while I was asleep. When students needed a tutor most, I wasn't there.
Quality tutoring should be accessible to everyone, on demand. So I built it, and my own students now learn from Avocado instead of from me.
What it does
Avocado simulates real one-on-one chemistry lessons for senior Australian students, live across every major state curriculum (NSW HSC, QCE, VCE, and WACE) and drawn from a specialist knowledge stack. Each lesson follows a strict six-phase structure:
$$\text{Open} \rightarrow \text{Diagnose} \rightarrow \text{Teach} \rightarrow \text{Check} \rightarrow \text{Apply} \rightarrow \text{Teach-back}$$
It opens on a syllabus outcome, diagnoses what you already know, teaches to your gaps, checks understanding, applies it to a real exam question, and finishes by making you explain the idea back (the Feynman test). Everything renders in proper chemistry: LaTeX maths like $\text{pH} = -\log_{10}[\text{H}^+]$, SMILES molecular structures, and interactive curriculum diagrams.
Beyond lessons, a suite of supplementary features backs students up: an extended-response marker that grades to the real state rubric, a specialised chemistry Q&A chatbot, a practice-question generator, and more.
How we built it
Largely vibe coded with Claude Code. React 18 + Vite, Vercel serverless functions, Supabase for auth and data, and Anthropic's Claude as the reasoning engine.
The teaching quality comes from the knowledge stack: Avocado doesn't run on the model's general knowledge alone. It teaches from curated material sourced from experienced high-school chemistry teachers and top private tutors, and sharpened with external examiner feedback on how answers are actually marked. That stack, not a single clever prompt, is what lets it teach and mark like a specialist.
Around it sits the system that delivers it: phase-structured prompts that drive the six-phase lesson loop, a curriculum layer mirrored on client and server so the model always knows the exact syllabus and dot point, a jurisdiction vocab adapter so each state's terms come back in its own language, and a strict rendering pipeline ($\LaTeX$ via KaTeX, SMILES via RDKit, vetted diagram components only). Anthropic prompt caching keeps the large teaching prompts affordable at scale.
Challenges we ran into
- Rendering LaTeX reliably. Chemistry runs on maths, so every lesson leans on LaTeX, and getting each expression to render cleanly (across streaming responses, edge-case syntax, and every device) is a persistent, fiddly battle. It still occasionally breaks, and hardening it is ongoing work.
- Building the curated diagram gallery. Every diagram a student sees is a hand-built, verified component rendered live inside each response and lesson, not a stock image. Growing that gallery to cover the whole curriculum, while keeping it correct in both light and dark mode, is slow and deliberate work.
- Marketing is the hardest part. Building the product is one thing. Getting it in front of the right students (and the parents who pay) is another, and honestly the challenge we wrestle with most.
What's next for Avocado
Chemistry is the test, not the final product. The lesson loop, the marking engine, the diagram pipeline, and the curriculum layer are all subject-agnostic by design. Physics and biology are next, then the rest of the sciences, and from there the broader tutoring market. Every student deserves the kind of tutor that, until now, only a few families could afford. We are building exactly that, one science at a time, starting by replacing the one tutor I know best, myself.
Built With
- anthropic-claude
- css
- dompurify
- framer-motion
- html
- javascript
- katex
- node.js
- playwright
- postgresql
- posthog
- rdkit.js
- react
- react-router
- recharts
- resend
- sentry
- stripe
- supabase
- vercel
- vite
- vitest
Log in or sign up for Devpost to join the conversation.