Flash Cards Mode
Drill the framework’s own steps, weighted toward the ones you keep missing.
Quiz Mode
Read a beat and name the step it performs.
No beats yet
Nothing to quiz on yet. Add beats in your own words — a scene you remember, described how you'd describe it out loud — or restore the starter beats in Settings. Whatever you write stays in this browser.
Where what you type goes. Everything you write stays in this browser, on this device. It is not uploaded anywhere and there is no account. It is included in any backup you export, so a backup file contains whatever you put in — worth knowing before you send one to someone.
What you put in is your call. Beats are capped at 200 characters, which keeps them descriptions rather than reproductions, and describing what a beat does works fine for a work still in copyright. Pasting someone else's dialogue, script pages or transcripts is up to you and at your own risk.
Stories were tidied up
Beats used to name their story as free text, so the same story could appear under several spellings. Matching titles were folded together. Anything that only looks similar is left alone until you say.
Stories in play
Narrow the bank, the quiz and your progress to one medium. Stories switched off above stay off whichever you pick.
Analysis Mode
Grade a draft of your own against the active framework, or lay a story from the beat bank across every framework at once.
Teaching cases — check the rubric against a known answer
Invented briefs with a deliberate hole. Load one, run it, and the app scores the rubric's answer against the answer the brief was built to have. Run the same case Strict and Lenient to see where the two part company.
Needs your Anthropic API key — add it in Settings. This is the only feature that goes online.
Result
Paste a full script. It gets read against every framework this medium allows, ranked by how well it fits, with the beats it cannot find named rather than counted. Nothing reaches your bank until you tick it.
The script stays in this tab's memory and is never saved. Reload and it is gone — what persists is the verdict, a 400-character excerpt, and whatever beats you keep.
How it fits
The work
Your notes
Yours, not the model's — these are saved with the run and never mixed into its verdict.
0 / 1000
Beats it found
Edit anything before you take it. A flagged beat is unticked, not blocked — the call is yours.
Keep a record
Full record carries the draft as well, and only while this session holds it. Verdict only is the stub, the verdict and your notes — available from run history forever.
No stories in the bank yet
Compare reads what you have already filed. Add beats against a story in the Beat bank, or restore the starter pack in Settings, and it will show up here.
Progress
Accuracy by step, daily, weekly and all time.
No analysis runs yet
Runs from “Analyze” land here — with the rubric you used, so you can tell a real improvement from a looser grader.
Settings
Appearance, timing, your key, and your data.
Frameworks shared
Which sheets appear in the bar at the top. Switching one off hides it — nothing you have written there is deleted, and it returns as you left it.
Appearance shared
The paper themes write prompts onto the page a line at a time. Answers never animate — a reveal that takes a second changes what “did I know it?” means, and that is the one thing this app is measuring. Your system’s reduce-motion setting turns the animation off on its own.
These settings are per framework. The card timer, card mode, analysis rubric and progress period are each remembered separately for each Story Framework. Your API key and model ID are shared.
Flash card timer
When the timer runs out the answer reveals itself and the card is recorded as a miss. Timeouts are counted separately on the Progress tab, so you can tell "didn't know it" from "was still thinking".
Getting started
The tour that runs the first time you open the app. It is the shortest description of what everything does, so it is here rather than gone forever.
About
Add a beat batch
Adds beats to the current framework's bank without touching anything else. Beats already present are skipped, so re-importing the same file changes nothing. Each beat is checked against the 200-character cap and the source list before any of it is written.
The template has one row per beat and a Steps sheet listing every framework's numbering. Fill it in, save it as .xlsx or .csv, and load it with the button above — .json batches still work unchanged.
Your data
Everything lives in this browser. Clearing site data wipes it. Export before you reinstall. Backups cover both frameworks.
Exports include your beats and stats. They never include your API key. Importing a backup replaces your beat banks. To add beats without replacing anything, use the batch import below.
Export your practice log
One row per graded card, in the order you answered them, with the step named rather than numbered. This is a record, not a backup — it restores nothing and cannot be imported.
The log ages out on its own, so an export can only cover what is still stored. The count above says what was actually found, not what was asked for.
Starter beats
Starter beats describe public-domain works and are written for this app, not quoted. Removing them never touches beats you wrote — anything you write stays in this browser and is never part of the repository.
Reset settings
Puts every setting back the way it shipped — theme, timer, card mode, rubric, which frameworks show, the model ID and the tour. Your beats, progress and run history are not touched, and neither is your API key.
Anthropic API key shared
localStorage only, and sent only to api.anthropic.com.
It is never written to a file in this repo. Anything in localStorage is readable by any script running on this page —
use a key you can rotate, and never commit a key to git.
Model shared
If the API returns a “model not found” error, change this to a model ID your account can use.
App
Checking offline status…