pdf-quiz-generator/docs
Daniel 448bfdd71c fix: the difficulty facet counts itself, and the adaptive item is closed
Two halves of one TODO, settled with a measurement rather than a guess.

*Shrunk readiness* was already done — `CandidateRanking.accuracy()` pulls a
topic towards NEUTRAL_RECALL by PRIOR_ANSWERS, so one miss does not read as 0%
— and there is now a test pinning it, because the note claiming otherwise
outlived the fix by weeks.

*Difficulty as a dimension the session moves along* cannot be built, and the
reason is a number: all 2,924 questions have a NULL `difficulty`, and the
empirical route is no better at 788 answers over 706 questions from 5 learners,
about one answer each. A ladder scored against that would be scoring noise
while looking as though it worked.

What is built instead is honesty in the control that already exists: the
Difficulty facet counts each level under the other filters and disables one
that would empty the bank, so nobody picks Hard and watches the count fall to
zero with no explanation. Reopen the ordering when something writes that
column.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TqXevQJhxFrM7jJg82cgZN
2026-09-12 19:57:21 +02:00
..
quiz-revamp feat: authorize tutor context and protect uploaded media 2026-09-07 15:04:00 +02:00
adaptive-sessions.md feat: a session prepared for you, and a model that can see when the one on the job cannot 2026-09-12 15:46:04 +02:00
api-reference.md feat: Cap replaces hCaptcha, self-hosted beside the app 2026-09-12 06:14:14 +02:00
architecture.md feat: Cap replaces hCaptcha, self-hosted beside the app 2026-09-12 06:14:14 +02:00
deployment.md feat: Cap replaces hCaptcha, self-hosted beside the app 2026-09-12 06:14:14 +02:00
frontend.md feat: Cap replaces hCaptcha, self-hosted beside the app 2026-09-12 06:14:14 +02:00
migrations.md fix: gateway-agnostic URL handling for TTS and embeddings, docs cleanup 2026-04-19 02:17:35 +02:00
quiz-revamp-plan.md docs: sync backlog with what shipped today 2026-09-09 20:11:20 +02:00
quiz-revamp-progress.md feat: Cap replaces hCaptcha, self-hosted beside the app 2026-09-12 06:14:14 +02:00
README.md docs: how article links, highlights and views are actually written 2026-09-12 19:30:43 +02:00
reranking.md feat: rerank what a learner is shown, with Cohere through the proxy 2026-09-12 18:23:06 +02:00
retrieval-thresholds.md feat: rerank what a learner is shown, with Cohere through the proxy 2026-09-12 18:23:06 +02:00
services.md Improve quiz TTS and Android release build 2026-05-12 01:01:01 +02:00
study-recommendations.md fix: the difficulty facet counts itself, and the adaptive item is closed 2026-09-12 19:57:21 +02:00
tied-conditions.md content: every article has a high-yield view, and three ties that were not ties 2026-09-12 18:16:59 +02:00
TODO.md fix: the difficulty facet counts itself, and the adaptive item is closed 2026-09-12 19:57:21 +02:00
writing-articles.md docs: how article links, highlights and views are actually written 2026-09-12 19:30:43 +02:00

PedsHub Documentation

Deep technical documentation for the PedsHub pediatric learning platform.

Pages

Document Description
Architecture System overview, database schema, multi-worker setup, vector search, auth, rate limiting, concurrent quiz protection
API Reference Every endpoint: method, path, auth, request/response, notes
Services Backend service layer: AI extraction, embedding, vector search, PDF processing, email, reminders
Frontend React app structure, pages, components, state patterns, runtime config
Deployment Docker setup, environment variables, HTTPS, rebuilding, monitoring, troubleshooting, scaling
Adaptive sessions What the Adaptive toggle selects, where the code is, and what it deliberately ignores
Study recommendations How focus areas are ranked and what readiness means
Writing articles Cross-reference links, key-point highlights, teaching tips, the three views, linking questions, and what deleting does
Reranking Where the cross-encoder is applied and where it deliberately is not
Retrieval thresholds The numbers behind sourced / adjacent / open answers