Ujian SD
Ujian SD turns a single sentence — "Pendidikan Pancasila, kelas 5, sumatif tengah semester, tema sila ke-3" — into a print-ready exam sheet: 20 questions, mixed types (multiple choice, complex MCQ, true/false, short answ
Core trick
Parses Kurikulum Merdeka PDFs into per-outcome units, then binds each generated question to one CP/TP code and checks it against a banned-word list.
Tags
Description
Ujian SD turns a single sentence — "Pendidikan Pancasila, kelas 5, sumatif tengah semester, tema sila ke-3" — into a print-ready exam sheet: 20 questions, mixed types (multiple choice, complex MCQ, true/false, short answer, essay), each with an answer key and a teacher-facing pembahasan (explanation). One click → PDF on A4, ready for the photocopier.
THE PROBLEM
Indonesian SD (elementary) teachers spend 4–8 hours every week hand-writing exam sheets in Microsoft Word. They reuse and recombine the same question banks every term because building from scratch is too slow. The result is uneven quality — items that are too easy, vocabulary above grade level, or explanations written in academic Indonesian no 10-year-old can follow. Generic LLM chatbots produce text that sounds like an exam but fails on the constraints that actually matter: Kurikulum Merdeka phase alignment, learning outcome codes (CP/TP), age-appropriate vocabulary, and proper KD coverage across Bloom's taxonomy levels.
WHAT UJIAN SD DOES DIFFERENTLY
- Curriculum-grounded generation — the system reads from official Kurikulum Merdeka PDFs (parsed into per-CP/TP units) and ties every question to a real learning outcome, not free-form generation.
- Banned vocabulary list for SD level — Opus 4.7 is given an explicit blacklist of academic Indonesian words that shouldn't appear in grades 1–6 material, ensuring age-appropriate language.
- Pembahasan that teachers can read aloud — explanations are written for a 10-year-old listener using respectful but simple Indonesian, not dense answer-key prose.
- Mixed question types in one sheet — PG (pilihan ganda), PG kompleks, benar-salah, isian singkat, and uraian, properly distributed across difficulty levels following Bloom's taxonomy.
- Two-pane preview — the same JSON drives both the on-screen preview and the print PDF, so what teachers see is exactly what gets photocopied.
- History + duplicate-as-draft — every generated exam is saved. Teachers can fork last term's sheet, swap the topic, and regenerate without losing the original.
- Print-first design — A4 layout, photocopier-safe fonts, proper margins, header with school name/class/semester fields. This is built for Indonesian school reality where 90%+ of exams are still paper-based.
TECH STACK
Frontend: React 19 + Vite + TanStack Router + Tailwind v4 + Radix primitives
Backend: Hono v4 on Node 22 + Effect-TS service layers + Drizzle ORM (Postgres) + better-auth (Google OAuth)
AI: Claude Opus 4.7 via official SDK with prompt-cached curriculum context and structured output via Effect Schema validation
Monorepo: pnpm + Turborepo with shared Effect Schemas as single source of truth
Deploy: VPS + Caddy + Docker, live at ujian-sekolah.faldi.xyz
IMPACT
A working version of Ujian SD saves an Indonesian teacher 4–8 hours per week on exam creation alone. With 2.9 million SD teachers in Indonesia, even modest adoption addresses a massive, underserved need that no existing edtech product properly solves — because none of them understand what a printed Indonesian exam sheet actually needs to look like.
README excerpt
# Ujian Sekolah
> AI-generated, print-ready exam sheets for Indonesian elementary-school teachers — pair-built with **Opus 4.7**, **GPT 5.5**, and **Composer 2.5**; core exam generation runs on **OpenAI GPT-6 Luna**.
[](https://ujian-sekolah.naufaldi.com)
[](https://api-ujian-sekolah.naufaldi.com/api/health)
[](https://www.anthropic.com/)
[](https://openai.com/)
[](https://cursor.com/)
[](https://openai.com/)
[](#stack)
[](LICENSE)
**Ujian Sekolah** turns one sentence ("PPKn kelas 5, sumatif tengah semester, sila ke-3, 20 soal")
into an A4-ready exam sheet — mixed item types, answer key, and a teacher-facing
*pembahasan* (explanation) for every question. One click → PDF on the photocopier.
Indonesian SD teachers spend 4–8 hours a week hand-writing exams in Word.
Ujian Sekolah compresses that into a 30