← All guides
Learning

Test Prep

/test-prep — four standardized tests, each modelled on its real published structure rather than on a generic quiz engine.

testroutedeliveryscoring
Digital SAT/test-prep/digital-satadaptive, two-stage by module200–800 per section → 400–1600
ACT (Enhanced)/test-prep/actlinear — everyone sees the same formEnglish/Math/Reading averaged into a composite; Science optional, reported separately
PSAT/NMSQT/test-prep/psatadaptiveReading & Writing, Math
CAASPP (California)/test-prep/caasppELA, Math, CAST Science

What "adaptive" means here

For the Digital SAT it is real multistage adaptivity: Module 1 performance routes you to an easier or harder Module 2, exactly as the live test does, and the harder route is the one that can reach the top of the scale. The ACT is deliberately not adaptive, because the real one is not.

Two ways to sit a test

  • Track home (/test-prep/[test]) — sectional practice, domain-by-domain
  • Full (/test-prep/[test]/full) — the whole test, timed, including the scheduled break

(the SAT's is 10 minutes, after Reading & Writing)

Scores are reported on each test's real scale, with a standard error of measurement — ±40 on an SAT total. Reporting a single number without the band would imply a precision the instrument does not have.

Adding a test

It is a config-and-content job, not an engineering one: add an entry to lib/testprep/registry.js and author its item bank. sections, domains, itemTypes, scoreScale and adaptive drive the engine. No new engine code.

The real ceiling: bank depth

This is the thing to understand about Test Prep. An attempt draws a fresh form from a fixed authored item pool. When a section's pool is barely larger than one attempt needs, a learner sitting the test twice sees mostly the same items — and the score stops meaning anything.

The admin panel has a whole tab for this. See 20 · The admin backend → Test Prep. Check bank depth before promoting a test, and treat a thin pool as a content bug rather than a nice-to-have.

Domain → lesson

Every domain maps to the classes that teach it (lib/testprep/domainLessons.js), so a missed question routes back into the curriculum rather than into a dead end. This mapping is real and is one of the few "adaptive" claims about the product that is safe to make.

The Curious FeedPlans, access and learners
HomePracticeFeedBlogMe