← All work
LLM workflow · Document generation · SaaS

Classroom-ready lesson decks, in the school's own template

EdTech SaaS · paying teachers · 2025 · Sole developer — frontend, backend, agents

Not a slide picture. A real deck a teacher can open and change.

Teachers describe a lesson; the system returns an editable PowerPoint in their template, plus worksheets and quizzes drawn from a 120GB+ curriculum corpus.

Corpus
120GB+ curriculum, retrieval-augmented
Outputs
PPTX · DOCX · XLSX · quizzes
Verified deck
59 slides, 11 layouts, fully editable
Team
One person, ~230 commits

What they needed

Korean elementary teachers spend their evenings making lesson decks, worksheets and quizzes. The client wanted a product that produces those files — in the school’s own design, editable, aligned to the curriculum — from a short description of the lesson.

What I built

The whole product: the teacher-facing app, the admin console, the backend, and the generation agents. The core is a template engine that fills the client’s own PowerPoint in place, so the branding is the template itself and every text box stays editable. A retrieval layer over a 120GB+ corpus grounds the content; images are chosen by meaning, not keyword.

What changed

Teachers pay for it and use the output in class. The deck length follows the lesson duration; the template survives untouched.

Under the hood
  • In-place PPTX filling with python-pptx: rewrites existing text frames, runs and table cells, then copies run/paragraph/frame styles forward. Slide masters, layouts and theme are inherited from the source deck.
  • Layout fidelity: stable shape addressing across grouped shapes and tables, geometry save/restore, and binary-search font autofit with word-wrap simulation so text fits the original box.
  • Constrained generation: LLM output is bound to a Pydantic schema (slide, shape, content) with a deterministic fallback mapping.
  • Deck pipeline in LangGraph: computes target length from lesson duration, selects and reorders which template slides survive, swaps images by semantic vector search (Pinecone + embeddings) at the original placeholder geometry.
  • Ingestion: OCR and image auto-tagging; adjacent DOCX/XLSX/CSV/PDF generators in the same codebase.
  • Stack: Lovable/React apps, Supabase + FastAPI backend, S3, Redis, EC2/Vercel.
Six slides from a generated 29-slide classroom board-game deck
Six of 29 slides from one generated deck — a classroom board game for a 4th-grade Korean lesson, filled into the school's template (Korean text; every box is editable)
MangoFactory app — the teacher-facing product
The teacher-facing app — describe the lesson, receive the files
Generated quiz slide
A quiz slide from a second generated deck
LangGraphpython-pptxPineconeFastAPISupabaseReactLovableS3Redis
mangofactory.co.kr ↗ · App ↗