"the biggest problem with the academy mini game is that its a bit overwhelming, and it's not easily clear what the pieces are that the students will enjoy playing. so we need to come up with some ways to indicate to the player this. the goal is to make song selection and course planning a strategic game, but it can't be too hard."
The game already computes the answer for every pupil and every piece: a face (😍 🙂 😰 😱 🥱 😒) and a reason. It shows them only at the bottom of the pupil's sheet, one row at a time, under the gauges, the course, the practice plan and the room. The library shows nobody's face at all, and the course editor's rules ("a big jump", "its scale comes first") are small print. The information exists; the concepts below are five ways of putting it in front of the player before they click.
The rule every concept obeys: the shelf shows the fit for THIS pupil before a click, the plan shows the next three steps rather than the next thirty, and nothing new is computed by the player, only newly seen. The strategy stays where it already is: sequence, timing, taste discovery and what to buy.
Every face comes from three things in academy-lab.js: the piece's load on each hand against the pupil's level and hand skill (ratio()), the pupil's taste for the genre, which is unknown until they have played one piece of it (taste(), u.known), and the pupil's temper (proud, wary, restless).
Two more rules decide the plan: boredom climbs with every repeat of the same piece (a new piece resets it; Sofia needs one every session, Gruber hardly ever), and a course warns when a piece is more than 6 harder than the last or 4 easier. Satisfaction over 90 is peak (tips double, practice 30% faster); a bored or strained pupil packs and leaves.
The three screens the choice lives in now. The faces are real and right; they are just not where the player is looking, and nowhere near the shelf.



Build tiers: small = a new view over functions that exist (reaction(), ratio(), courseAnalysis(), nextPieceOnTheirOwn()), no new rules; medium = a new drawn component or interaction (drag, cards) on the same functions; nothing here changes the model.
| Piece | What it is |
|---|---|
| The fit, everywhere | One function, the reaction() the sheet already calls, rendered in the library and the course editor too, so every list of pieces is read from a pupil's chair. Every concept needs this; only the drawing differs. |
| The pupil in the room | The library and the course editor get a "for whom" chip at the top (the pupil whose sheet you came from, or a picker). Without a pupil there is no fit to show. |
| The plan's next three | The proposal ranking (nextPieceOnTheirOwn() extended to three, with a scale slipped in when the key matches) feeds A's NEXT PICKS, B's dotted bands, C's shelf tray, D's special and E's NEXT FOR card. |
| The drawn part | A: a card renderer. B: one SVG ruler component. C: a staircase with drag and tap-to-place. D: the menu card and the three plates. E: the wall pane and a faces strip on rows. |
| Tests | The Academy recipe (temp/pw/e2e-academy-lab.mjs) gains checks that the shelf's fit matches the sheet's face for the same pupil, that a proposal enrols, and that the phone frame still fits. |
| Languages | Plain strings as always; D's "course" pun needs a real word per language (Gang / plat / plato / 道) and is the only concept with a translation cost. |
Decided 2026-09-23: Lionel picked B, "the best is B the sweet spot ruler. lets implement this". It shipped the same day in the Academy: the ruler on every pupil's sheet with a thin ruler per hand and the list sorted by fit, the library read for one pupil (chips, a 🎯 Fits category, the ruler over the shelf with the fits and stretches only), and the course editor with a strip per piece at the level the pupil will have reached by then. What follows is the round-1 reasoning, kept for the record.
E's shelf with B's band inside it. The question in the ask is "which pieces will they enjoy", and E answers it on the shelf itself: every row wears the faces of the pupils who would love it, the wall says what each pupil is asking for, and NEXT FOR writes the first course for a player who has never opened the editor. That is the "not too hard" half. The strategic half is B's band: the pupil's green zone on a ruler, moving right as they level, so the player sees boredom and strain coming and lays a course as beads in the bands the pupil will reach. Both are the small tier, both are drawings of functions that exist, and they share one component (the fit for a pupil on a piece).
Runner-up: C, the Staircase, if the course is to become the heart of the game rather than its planner. It is the most charming of the five and the only one where planning is itself play, but it is the heaviest build and a course longer than six steps stops looking like a staircase.
A makes taste discovery a real game and is worth keeping for the day pupils have more than five tastes; its cost is that a card is not a piece. D's three plates (a scale, a stretch, a loved easy piece) are the best rhythm in the model and should be the default proposal's shape whichever concept wins; the menu itself is an English pun.
Verdicts go in the Design Gallery round: ★ picked is the build order; ❤ and 👍 are notes.