work / coursified
Coursified
Any public YouTube video into a structured course with quizzes, a graded assessment and a verifiable certificate.
- Years
- 2025–26
- Status
- live
- Live
- coursified.app
What it is
Paste a YouTube link. About two minutes later there is a course: modules cut from the creator's own chapters, a summary per module, quizzes answerable only from the transcript, a graded final assessment with labs, and a certificate with a public verification page.
Read more
The hard part is the transcript. YouTube does not offer one through a stable public API, so the pipeline climbs a three-tier ladder: an edge fetcher Worker rotating Innertube clients (free), a residential-proxy relay on a VM, then a transcript library run through the same proxy. Each tier's health is tracked and emails me when it degrades. Transcripts sit in KV over a Neon row that expires after 21 days.
Generation runs on Z.ai's GLM-4.6, with GLM-4.5-Air for the cheaper steps, and every model call is traced with its token count. A course costs about $0.035 and takes about 115 seconds. Pricing is in naira, with transfer and mobile money, because the first users are in Nigeria.
It ships as a Next.js web app, an Expo app and an MCP server at mcp.coursified.app, so an agent can build and take courses with OAuth or an API key.
Stack
- TypeScript
- Next.js
- Expo
- Hono
- Cloudflare Workers
- Cloudflare Queues
- Durable Objects
- Neon Postgres
- Drizzle
- better-auth
- Z.ai GLM
- MCP
Counted
- 543commits in the rebuild
git rev-list, 2026-09-03 → 09-17 - ~$0.035cost per generated course
README, measured - ~115 swall clock per course
README, measured - 103test files
repo count - 5 / 10apps / packages
workspace manifest
How it works
The system as a machine on a bench. Hover or use the arrow keys to drive it.
The path through it
- resolve_sourceThe URL becomes a video id and its metadata: title, duration, the creator's chapters.
- fetch_transcriptsTier 1 edge fetcher, tier 2 residential relay, tier 3 a transcript library through the proxy, then a chapter fallback. KV hot cache over a 21-day Neon row.
- classify_course · generate_outlineModules follow the creator's chapters, grouped and never split, about one per 20 minutes, capped at 16.
- enrich_modules · generate_quizzesSummaries, then questions that must be answerable from the transcript alone.
- generate_assessment · finalizeA graded final and labs, checked by the sheet and slides validators; the course is published.
- Learn and certifyPlayback stays in YouTube's own player. A pass issues a certificate verifiable at
/verify-certificate.