← All starters
Tier 1 starterLowest load

Tonight's Worksheet

Tomorrow's practice, generated in 30 seconds, printed by bedtime.

AI Builder
open
AI Champion
Daniel K.open

Illustrative team — open seats are real invitations.

Build mode
assemble on blocks
Built on
@k12vls/worksheet-core + @k12vls/curriculum
Output
printable PDF + key

The brief

What it is, and why a teacher says yes

The pain point

Nightly practice prep is real, repeated time. A teacher who finished today's lesson still has to build tomorrow's worksheet — and a good one is differentiated, which multiplies the work. It's not an emergency like a sub day; it's the quiet, every-night tax that never goes away.

What it does

Teacher picks the standard they just taught → gets a differentiated practice sheet at three levels (easy / on-level / challenge) plus an answer key, as a single PDF ready to print.

Why it's adoptable

It's daily and repeatable — it earns its keep by replacing a task the teacher does anyway, every night, rather than adding a new one. The value compounds: the more nights it saves, the more it's reached for.

What the teacher receives — a synthetic example

Multiplication — Practice

Name: ______________________Grade 4 · 4.NBT.B.5

Easy

1) 23 × 3 = ____    2) 14 × 2 = ____

On-level

3) 1,204 × 6 = ____    4) 47 × 58 = ____

5) 865 × 7 = ____    … 3 more …

Challenge

6) A theater has 38 rows of 26 seats. Seats in all? In 3 theaters?

Answer Key — Grade 4 · 4.NBT.B.5

Easy
1) 69   2) 28
On-level
3) 7,224   4) 2,726   5) 6,055 …
Challenge
6) 988 seats; 2,964 in 3 theaters
Watch for: students often drop the carried digit in the 4-digit problems.

Illustrative mockup. All example data is synthetic — no real student data.

The graduation signal

“Built” doesn't count — real, repeated use does. Here's the ladder.

  1. 1

    Pilot

    A teacher generates a real differentiated sheet, prints it, and uses it with students for an actual lesson or homework — not just generates and prints (teacher-side, with real learners served).

  2. 2

    Active use

    The sheet shows up in the print tray on consecutive nights — the repeat-use pattern, not a single try (teacher-side).

  3. 3

    Sustained MAU

    A teacher still generating sheets across consecutive weeks, week over week. Graduation is teacher-side MAU; student participants aren't counted by login (no student logs in) but can be estimated from the classes receiving the sheets, per the program's separate student/teacher counting.

For the AI Builder

How you build it

The honest build path — what it builds on, the rough assembly, the data flow, and the gaps the blocks don't give you for free.

Blocks it builds on

  • @k12vls/worksheet-core — provides the CCSS standards model (GradeID, CCSSStandard, the StandardsTree type), problem-generation config + record types (CcssProblemGenerationConfig, CcssProblemRecord), the problem-generation prompt surface (getProblemGenSystemPrompt(subject) + exported prompt constants), rendering UI (@k12vls/worksheet-core/ui), and a PrintOptions type. Print layout/CSS is app-level, not a package export, and there's no server-side PDF generator.
  • @k12vls/curriculum — the curriculum data/utilities the standards selection draws on.

Rough assembly

  1. 1Pick — a single standard selector, populated from the worksheet-core CCSS standards tree, plus a per-band length input wired to numProblems on the config (fewer for homework, more for class practice). One pick, not three — the difficulty fan-out is automatic.
  2. 2Differentiate (the distinctive part). This is the build element that sets this starter apart from a single-sheet generator: run three generation passes over the same standard to produce an easy, an on-level, and a challenge band. Note the grounding limit — CcssProblemGenerationConfig does not expose a difficulty input (it carries ccssStandardId, numProblems, subject, optional customInstructions; difficulty is an easy|medium|hard tag on the output CcssProblemRecord, not a generation knob), and getProblemGenSystemPrompt(subject) takes only the subject. So encode the difficulty band in the prompt — via customInstructions and the per-pass user prompt around the same standard — not via a config difficulty parameter the type doesn't have. The distinction lives in the prompt, over one standard, across three passes.
  3. 3Generate — collect the resulting CcssProblemRecords (problems + answers) from all three passes.
  4. 4Render — display each band with the worksheet-core ui components; lay the three out as sections of one packet, then the combined answer key.
  5. 5Print — apply PrintOptions and the app's own print layout/CSS; the teacher prints to paper or “Print → Save as PDF.”

The data flow

Teacher picks today's standard.
Build 3 CcssProblemGenerationConfig: easy · on-level · challenge.
3 LLM calls with getProblemGenSystemPrompt.
Problems + answers: CcssProblemRecord ×3.
Render bands with worksheet-core/ui.
Apply PrintOptions.
Print / Save as PDF: 3 levels + answer key.

Caveats — the honest gaps

“PDF” means browser-print. worksheet-core exposes a PrintOptions type, not print CSS and not a turnkey generatePDF() — the print layout/styles are yours to write at the app level, and the packet becomes a PDF via the browser's print-to-PDF. That's fine here — but don't promise a server-side PDF the block doesn't provide, and design the print layout so all three bands + the key paginate cleanly when printed.
firebase-auth dependency. worksheet-core depends on @k12vls/firebase-auth. For a no-login starter, keep generation/printing on a path that doesn't require a signed-in user; verify at runtime what the package actually requires before claiming “no login” — three generation passes touch the package three times, so confirm none of them quietly demands an authenticated user.

Scope boundaries

This is a print-once generator, not an LMS: it doesn't assign sheets to students, track who completed them, or store scores — the moment it logs student work it stops being a no-data tool and inherits a heavier safeguarding load.

For the AI Champion

Taking it to a teacher

The adoption kit — the pitch, the pain it lands on, the objections you'll hear, and what a real pilot looks like.

The 30-second pitch

You taught multiplication today — tomorrow you need practice for the kids who've got it, the kids who don't, and everyone in between. Pick the standard, and this prints all three levels plus the answer key as one PDF. Thirty seconds tonight instead of half an hour.

The pain it lands on

The 9 p.m. worksheet — the teacher who's done teaching for the day but still owes tomorrow a differentiated practice sheet, and is choosing between doing it right and going to bed.

Objections → responses

Is it aligned to what I'm actually teaching?

It's generated from the exact Common Core standard you taught today, so all three levels target that same skill — just at different challenge.

I don't have time to learn another tool.

There's nothing to learn — pick one standard, print. It's faster than the worksheet you'd have made anyway, which is the whole point.

Where does my students' data go?

Nowhere. You pick a standard; it generates a printable. No student logs in, no names are entered, and no student data is stored. (The PDF is yours to keep or reprint — it just carries no student data.)

What a pilot looks like

Not a one-off demo — the test is next week, and the week after. Success = the teacher reaches for it on consecutive nights and it quietly becomes how tomorrow's practice gets made. Still using it after three weeks is the sustained-use signal — it's on track for graduation (the graduation bar itself is the program's MAU gate, not a fixed three-week count).

The bar

Safeguarding & the pilot gate

The minimum conditions before any classroom use, and the data posture that keeps the solution honest.

Pilot gate

Sponsoring adult
The classroom teacher who will print and use the sheets (sponsoring teacher required program-wide).
Minimum version
All three bands plus the answer key generate from one standard pick and paginate cleanly when printed — not just an on-screen demo of a single band.
Pilot setting
Homework / next-day in-class practice — the teacher's own class.
Success evidence
The teacher generates, prints, and actually uses a real differentiated sheet with students for a lesson or homework — learners served, not just a sheet produced (mirrors the Pilot rung above).
Stop condition
Immediate — at review the teacher judges a band mis-leveled (the “easy” isn't easier, the “challenge” is off-standard), the answer key wrong, or the sheet misaligned to what they taught, and won't print it. Over the pilot — the no-login path breaks (a generation pass starts demanding a sign-in), the packet doesn't paginate well enough to use, or the teacher stops reaching for it on consecutive nights.

Safeguarding

Lowest load

Data touched

No student data. The teacher-selected standard generates the packet (and passes through the three LLM problem-generation calls); no student login, no PII, no uploads, no completed work. No student data is persisted; the generated PDF is ordinary lesson material the teacher may save or reuse, carrying no student data. Load is Lowest — the scale is data sensitivity, and this touches no student data class; the daily-use cadence raises operational hygiene but not data risk, so it doesn't move the rating.

Checklist

  • Sponsoring teacher ✓ (required program-wide).
  • Data-handling review n/a (no student data).
  • Consent n/a.
  • Supervision = ordinary classroom/homework use.
  • Content review applicable — the three bands and answer key are LLM-generated and go to students, so the sponsoring teacher verifies correctness, answer-key accuracy, alignment, and that each band's difficulty lands right before use (a required classroom quality/safeguarding gate, not a data-handling item).

One thing to verify

That the no-login path holds across all three generation passes (see the firebase-auth caveat) — a daily tool that silently starts requiring a sign-in would quietly break the “no data” claim mid-use, so confirm it at runtime, not just at first load.

What would change the load

The Lowest profile holds only while the tool stays a stateless print generator. Adding teacher/student logins, sheets or telemetry saved against a class/roster/student or assessment history, letting students submit or upload work, capturing scores per student, or sending sheets home with personalized feedback would each introduce a stored data class and push this higher-risk. (Saving the generic sheet, or a product-only generation count with no identity, is not a trigger — only the identity-linked versions are.) None of those exist today; the moment one is added, re-run the safeguarding gate.

Want to build Tonight's Worksheet?

Tell us this starter caught your eye — or browse the others first.