AI-powered offline classroom resource generator for rural teachers in Papua New Guinea using lightweight local LLMs and a multi-agent workflow
# PNG Classroom Resource Generator
An AI assistant that helps teachers in Papua New Guinea schools generate lesson
plans, activities, teacher notes, and assessments - grounded in the real PNG
Standards-Based Curriculum, and running entirely on a light local LLM
(`google/gemma-4-e2b` via LM Studio) so it works without a paid cloud API or
reliable internet access.
The agent layer is built around **ADK Agent Skills**
(`load_skill_from_dir` / `SkillToolset`): each agent's procedural
knowledge - the rules and output structure for the resource type it
generates - lives in a `skills/*/SKILL.md` file it loads at runtime, rather
than being inlined into a large prompt.
The implementation follows `specs/png-classroom-agent-workflow.md`,
the source of truth for the agent workflow, guardrails, and Definition of Done.
For house rules and the Skills architecture, see `AGENTS.md`.
## How it works
```
Teacher Selection
|
Curriculum Matching - deterministic, no LLM (services/curriculum_store.py)
|
Lesson Planning Agent - LLM [orchestrator/pipeline.py
| run_lesson_plan_stage()]
v (teacher clicks "Next")
Activities Agent -> Teacher Notes Agent - LLM, sequential [run_activities_
| notes_stage()]
v (teacher clicks "Next")
Assessment Agent - LLM [run_assessment_stage()]
|
v
Review and Alignment - deterministic, no LLM (services/review.py)
|
Combined Lesson Pack -> rendered, downloadable (Word or PDF)
```
Curriculum Matching and Review are plain Python, not LLM calls - so curriculum
facts can never be invented and alignment checking is identical every run.
Each of the four `LlmAgent`s carries a `SkillToolset` scoped to exactly two
skills: a shared `png-classroom-conventions` skill (resource-availability
defaults, PNG context, currency, plain-text math, mixed-ability, language
level) and one task-specific skill (`l …