Video quizzes + the open Taleemabad content library (Pakistan region) - #79
Merged
Conversation
…egion)
A teacher pulls a curriculum video with /video and is offered its quiz 3s
later: 15 questions one at a time with per-answer feedback, tappable
picture-option Flows, phonics by voice note, a forwardable wa.me class link
(each child plays 1:1, is remembered between quizzes, can invite a friend),
and a next-morning designed PDF report naming what to reteach.
Ships with the openly-hosted Taleemabad content library (2015-2021):
890 curriculum videos, 858 with a quiz, 10,929 QA-certified questions,
15,557 studio voice clips, 3,217 hand-drawn illustrations — Pakistani
national curriculum, English + Urdu, all served from the public CDN bucket.
One command imports it: bot/scripts/setup/import-video-quiz-library.js.
Region-gated via region_features.video_quizzes_enabled (seeded ON for
'pakistan'; DEFAULT_REGION=pakistan switches it on). Both entry points
gated: the offer-after-video and share-code joins.
- New services: video-quiz{,-render,-sender,-share,-report,-invite},
student-identity, flow-id-validator (boot-time Flow inventory check),
video-quiz-report template (Lexend + Nastaliq PDF)
- Wiring: vq_ button/list routing, vq:/vqjoin: nfm_reply token routing,
any-time QUIZ-<CODE> parser, quiz_video_report worker job (delay cascade)
- Student-videos endpoint v2: clean titles, duplicate-hiding
(superseded_by), delivery tracking, quiz offer + survey suppression
- Two new registrar Flows: video-quiz-flow.json (RadioButtonsGroup,
media-size large, complete action) + student-join-flow.json
- Schema: quiz_share_codes, video_quiz_deliveries, v_video_quiz_popularity,
increment_share_code_uses(), media/option_feedback/render_pattern/
external_id on quiz_questions, identity columns on quiz_sessions/students,
student_video_feedback scope columns, in_progress status fix, RLS + seed
- Tests: 12 new suites (incl. region-gate red/green), full suite green
(141 suites / 1462 tests); sanitized (no internal numbers/refs; share
links disabled rather than defaulted when WHATSAPP_BOT_NUMBER unset)
Found by the 4-agent pre-publish leak swarm (secrets / DB-infra / WABA-Meta / CDN-data lenses). The only real finding across all four: the test env fixture carried a production WABA id where any 15-digit number would do. Cloners bring their own WABA — nothing in this repo may reference ours. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this is
The biggest content drop the platform has shipped: the video-quiz feature from production, plus the Taleemabad content library it runs on — openly hosted, free to use, importable with one command.
A teacher pulls a curriculum video with
/videoand is offered its quiz 3 s later: 15 questions one at a time with per-answer feedback, tappable picture-option Flows, phonics asked by voice note, one forwardable class link (each child plays 1:1), and a next-morning PDF naming what to reteach.The library
890 curriculum videos (Nursery–Grade 6, Pakistani national curriculum, English + Urdu) · 858 with a quiz · 10,929 QA-certified questions · 15,557 studio voice clips · 3,217 hand-drawn illustrations — all served from the public CDN bucket, so a clone needs zero media hosting:
Region gating
The corpus was authored against these exact Pakistani-curriculum videos, so the feature is gated per-region via
region_features.video_quizzes_enabled— seeded ON forpakistan, OFF elsewhere.DEFAULT_REGION=pakistanswitches it on. Both entry points are gated (the post-video offer AND share-code joins), with a red-first test (tests/quiz/video-quiz-region-gate.test.js).Scope
video-quiz*,student-identity,flow-id-validator) + report templateQUIZ-<CODE>parser, worker report jobvideo-quiz-flow.json,student-join-flow.json)quiz_share_codes,video_quiz_deliveries,v_video_quiz_popularity, question media columns, session identity columns, RLS, seeddocs/features/video-quizzes.md, CHANGELOG 1.2.0WHATSAPP_BOT_NUMBERis unset)🤖 Generated with Claude Code