← All starters
Tier 1 starterLowest load

Bell-Ringer-a-Day

Five minutes of warm-up, spiraled across the standards, all month.

AI Builder
Theo W.
AI Champion
open

Illustrative team — open seats are real invitations.

Build mode
assemble on blocks
Built on
@k12vls/curriculum + @k12vls/worksheet-core + @k12vls/marp-slides
Output
monthly printable pack or daily slide

The brief

What it is, and why a teacher says yes

The pain point

Daily warm-ups that meaningfully spiral prior standards take ongoing planning — not just “a problem a day,” but a problem a day that revisits what's fading. Doing this well, every day, is a quiet recurring tax on a teacher's prep time.

What it does

Teacher picks a grade (and where they are in the sequence) → generates a month of daily warm-up problems that spiral earlier standards, as a printable monthly pack or a daily slide they drop into the projector at bell.

Why it's adoptable

It fills a daily ritual teachers already run — they're not adopting a new habit, just outsourcing the planning behind one they have. One generation covers a whole month.

What the teacher receives — a synthetic example

The surface they use

k12worx.app/bell-ringer — Grade 5 Math

Set up a month of warm-ups

Configure once · refreshes each week.
Standards in rotation
5.NBT.B.6 ×5.NBT.A.4 ×5.NF.A.2 ×5.OA.A.1 ×+ add
Generate the monthOne run → a printable pack and a daily projector slide.
Output:Print packPresent slidesDownload PDF

What a teacher opens to produce the pack and slides below. You assemble this surface from the blocks — see “How you build it.”

What they get back

Bell-Ringers — Grade 5 · Week 3

MonDivide: 4,832 ÷ 8
TueRound 5,471 to the nearest hundred
WedEstimate 612 × 39, then check
ThuCompare 2/3 and 5/8
FriMulti-step: cost of 6 tickets at $9, minus a $5 coupon
= spiraled review (an earlier standard)
Daily slide — Wednesday

Grade 5 · Bell-Ringer · Wed

Estimate 612 × 39.

Then check: was your estimate close?

One generation covers a month — print the pack, or drop a slide a day at bell.

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 month and actually runs the warm-ups at bell across that month — real classroom use, not a download (teacher-side).

  2. 2

    Active use

    The teacher renews for the next month when the pack runs out — the daily ritual now leans on this, not on ad hoc planning (teacher-side).

  3. 3

    Sustained MAU

    The teacher comes back month after month across a term — sustained, teacher-side MAU, not a one-time grab; students never log in, so participants are estimated from classes served (teacher-side).

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/curriculum — content-access and a curriculum node model (CurriculumNode/CurriculumStructure, with a per-node sequence number) plus validation utilities. Useful background, but be honest about its limit: it sequences content nodes within the product's own curriculum tree — it does not ship an ordered CCSS-standards relation that tells you “standard X comes before 5.NBT.B.5.” That cross-standard “what's prior” judgment is yours to supply, not a function this package hands you.
  • @k12vls/worksheet-core — the warm-up problems. Provides the CCSS standards model (GradeID, CCSSStandard, the StandardsTree — a subject→grade→domain→cluster browse hierarchy for populating selectors, not a learning order), problem-generation config + record types (CcssProblemGenerationConfig, CcssProblemRecord), the prompt constants (getProblemGenSystemPrompt), rendering UI (@k12vls/worksheet-core/ui), and PrintOptions for the printable pack.
  • @k12vls/marp-slides — the optional daily-slide output. Exports types plus the K12 theme (K12_THEME_NAME, k12ThemeCSS, writeK12ThemeFile) so a one-problem-per-day slide looks on-brand.

Rough assembly

  1. 1Pick — a grade + current-standard selector (populated from worksheet-core's StandardsTree browse hierarchy), plus the spiral controls: instructional-days/weeks to cover and how often a review day recurs.
  2. 2Schedule the spiral — this is the part you build, and it needs data the blocks don't ship. Decide which earlier standards reappear on which days (e.g. mostly current-standard, with a fixed cadence of review days). To do that you need a prior-standards ordering — “what comes before 5.NBT.B.5” — which neither package provides; you supply it as a small builder-authored map (a hand-curated prior-standards list per standard is enough to start). The blocks fill the slots this schedule defines; the schedule and its ordering source are your contribution, not a function call.
  3. 3Generate — for each day's chosen standard, call the LLM with getProblemGenSystemPrompt(...) + a CcssProblemGenerationConfig (type: 'ccss', subject: 'math', grade, ccssStandardId, and the required numProblems: 1 for a single warm-up; difficulty/scaffold emphasis goes through optional customInstructions — there is no difficulty config input) to produce that day's warm-up and its answer.
  4. 4Render — lay the month out with the worksheet-core ui components for the printable pack path, or emit one Marp slide per day (themed via @k12vls/marp-slides) for the daily-slide path.
  5. 5Output — apply PrintOptions for print-to-PDF, or hand off the themed slides.

The data flow

Teacher picks grade + current standard + cadence.
Spiral schedule: builder-supplied prior-standards ordering → a standard per day.
Per day: LLM call with getProblemGenSystemPrompt, numProblems: 1.
Daily problems + answers.
Output mode branches — pack: render month with worksheet-core/ui + PrintOptions → print / save as PDF monthly pack; slide: emit Marp slides themed via marp-slides → daily slide deck.

Caveats — the honest gaps

The spiral is your sequencing layer, including its ordering data. Be honest about the seam: worksheet-core generates problems for a standard and gives you a browse hierarchy of standards, but neither package ships a “what standard comes before this one” relation. @k12vls/curriculum sequences content nodes inside the product's own curriculum tree — that's not the same as a CCSS prerequisite order, and you can't lean on it for the spiral. So which prior standard appears on which day — and the prior-standards ordering it rests on — is logic and data you author. The blocks supply the standards model, the problems, and the slide theming; the spiral schedule and its ordering source are the builder's contribution, not a function call. This is the most aspirational-sounding part of the starter — keep it grounded.
“PDF” means browser-print. worksheet-core exposes PrintOptions and print styling, not a turnkey generatePDF(). The monthly pack becomes a PDF via the browser's print-to-PDF. Fine for this use; don't promise a server-side PDF the block doesn't provide.
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; confirm what the package actually requires at runtime before claiming “no login.”

Scope boundaries

This generates warm-ups and hands them off; it deliberately does not track who completed them, store student answers, or grade them — it's a planning aid, not an LMS, and adding score-tracking would turn it into a bigger thing and start touching student data (breaking the no-login, no-data profile).

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 already do a bell-ringer every morning, right? Tell me your grade and where you are, and this gives you a whole month of them — and it quietly mixes in stuff from earlier in the year so kids keep it fresh. Print the pack, or grab one slide a day. You stop writing them.

The pain it lands on

The 6:30am “what's today's warm-up?” — multiplied by every school day, and the nagging sense that yesterday's spiral problem was random, not actually revisiting what's slipping.

Objections → responses

My warm-ups already work — why change?

You don't change the ritual; you keep running it. This just writes the month for you and makes the review days deliberate instead of ad hoc.

Will it actually spiral, or just give me this week's topic five times?

Yes, it spirals: the builder sets up which earlier standards return and on what cadence, so review days are deliberate rather than a repeat of this week. You'll see the prior-standard days marked in the pack — and the pilot is exactly where you confirm the choices match what your class actually needs revisited.

Where does my students' data go?

Nowhere. It generates a pack or a slide deck; no student logs in, and the tool stores no student data. The pack/deck is yours to keep and reprint like any lesson material.

What a pilot looks like

The teacher runs it daily for one month. Success isn't the download — it's reaching for next month's pack when this one runs out. That renewal is the graduation signal.

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 already runs a bell-ringer (or a program/after-school lead serving real learners).
Minimum version
A real generated month — grade + current standard + cadence in, a full month of daily warm-ups (with answers) out, in at least one output mode (printable pack or daily slide), which the sponsoring teacher has reviewed for correctness and for whether the spiral days revisit the right prior skills — not a single-day demo, and not an unreviewed dump.
Pilot setting
The daily bell-ringer slot in a class period (or the equivalent warm-up ritual in an after-school/community setting).
Success evidence
The teacher runs the generated warm-ups at bell across the month — real use, observed, mirroring the Pilot rung above.
Stop condition
The spiral doesn't actually revisit earlier standards (just repeats the current topic), the problems or answers are wrong, or any output path quietly requires a login — pause and revise before continuing.

Safeguarding

Lowest load

Data touched

No student data — the teacher-selected grade + current standard generate the month (and pass through the per-day LLM problem-generation call); no student login, no student PII, no uploads, no completed work. No student data is persisted; the printable pack / slide deck it produces is ordinary lesson material the teacher may save and reprint — it holds no student data.

Checklist

  • Sponsoring teacher ✓ (required program-wide).
  • Data-handling review n/a (no student data).
  • Consent n/a.
  • Supervision = ordinary classroom use (warm-up at bell).
  • Content review applicable — a month of warm-ups is LLM-generated and projected/handed to students, so the sponsoring teacher reviews the generated set for correctness, standard alignment, and that the spiral days actually revisit the right prior skills before classroom use (a required quality/safeguarding gate, not a data-handling item).

One thing to verify

That both output paths — the printable pack and the daily slide — stay on a build path that doesn't require a student/teacher login (see the firebase-auth caveat), so the “no data” claim holds across the whole month, not just at first generation.

What would change the load

The Lowest profile holds only while the tool just generates and hands off. It would rise the moment any of these is added — student logins or accounts, telemetry tied to a class/roster/student (which student or class ran which warm-up, per-class usage history), students submitting or uploading answers, saved/persisted student work, parent contact, or per-student personalized feedback. Any one of those turns the firebase-auth caveat from “keep it off the path” into “now we handle data,” and the no-login, no-data claim no longer holds.

Want to build Bell-Ringer-a-Day?

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