About TLC
A lesson-building tool with a point of view.
TLC was built for the Gemma 4 Good Hackathon (Impact Track). It answers a specific question: what does an AI lesson-builder look like when it’s scoped to a single honest job and given structure instead of chat?
Why two Teacher’s Assistants
One-pass lesson generation is usually flat. Every section sounds the same because one model is doing every job. TLC splits the work across two specialist Teacher’s Assistants:

Hunter
Structure & rigor
The lesson architect. Objective, lesson steps, assessment, answer key, time allocation. Direct. Precise. Doesn’t soften.

Christine
Depth & engagement
The pedagogue. Engagement, demonstrations, teacher notes, discussion prompts, misconception recovery. Warm. Practical. Specific.
They’re not style skins on the same call. They’re separate Gemma 4 invocations with separate system prompts and separate ownership areas. A review layer audits both before the final package is assembled.
What Gemma 4 does here
Every lesson takes five Gemma 4 calls: two in the Build phase (Hunter and Christine in parallel), one in the Review phase, two in the Package phase. All use function-calling so the output is structured JSON, not free text. If a call doesn’t honor the schema, we retry once with the validation error in the prompt. If that also fails, we surface a clean error — we never fabricate output.
Every content field in every lesson carries a source_origin label: grounded (traces to teacher’s source), scaffolded (source shaped structure), or generated (open generation — teacher should review). Teachers see the labels inline. Transparency over magic.
Privacy
- No login. No teacher accounts, no emails collected, no tracking.
- Lessons kept for 30 days.Each lesson lives at a private UUID URL. After 30 days it’s deleted. You can share the URL freely while it exists.
- Uploaded source material kept for 1 hour.If you upload a PDF or paste source text, it’s used to build your lesson and then deleted. A content hash is kept briefly for deduplication but never the text.
- IPs never stored raw.Rate limiting uses a daily-salted SHA-256 hash — it’s stable for you for 24 hours, not reversible to an IP, and rotates out.
- All code is open source. MIT license. Everything — schema, prompts, orchestration — is in the public repo.
Credits
Built for the Gemma 4 Good Hackathon, Impact Track. Model: Gemma 4 via Google AI Studio. Stack: Next.js + Tailwind + Prisma + Neon Postgres + Vercel. Two Teacher’s Assistants, one goal: teachers get a lesson they can teach tomorrow.