QuestSim · Wicked Problem Prototypes
▶ Open the Persona Lab GitHub ↗
This page is the background. The working tool is the Synthetic Persona Lab — shape a population of synthetic students and test educational apps and games against them, live in the browser.
Personalization without the data districts can't defend

Three prototypes for one wicked problem

QuestSim's adaptive engine (ACE) gets better the more fine-grained the data it sees. COPPA, FERPA, and the districts that enforce them push the other way. Solving for personalization makes the privacy problem harder; solving for privacy degrades personalization — so there's no optimum, only a position each district sets.

How might we personalize learning without collecting the data districts can't defend?

Classroom stream

What this child did today. Written into the district's own Google Workspace, owned by the district, never stored by QuestSim.

never crossed

Engineering stream

How children in general behave. Synthetic or de-identified aggregates only — never an individual record.

The three prototypes — one per place a district's objection can land
1 Data Diet Toggle screen
Reframes the policy surface

Data Diet Toggle

A clickable admin-console mock: the district picks how much the classroom stream collects — Full, Standard, or Minimal — with tradeoffs in plain language and QuestSim's share fixed at nothing.

Clickable HTML mock
2 Divergence summary
Reframes the architecture

Mastery-Only Export

A replay harness proving ACE can adapt on-device and export only a mastery vector. ~99% of adaptation decisions survive; it names the two signals that carry the residual.

Runnable Python harness
3 Within-range validation
Reframes where the data comes from

Synthetic Student Tuning

A simulation harness that develops and calibrates ACE on ~200 synthetic middle schoolers, so real student data is needed only for low-volume aggregate validation — never for model development.

Runnable Python harness

How they interlock