A fretboard trainer for guitar and bass. Sessions of sixty seconds to two minutes, on your own instrument. It learns which notes you keep getting wrong, and drills those.
Chord shapes and scale patterns get you started. But every shape is built from notes, and when you know where the notes are, the neck stops being a set of memorised boxes and becomes one instrument.
Reading a chart, moving a chord up the neck, finding the root of a scale, talking to another musician: all of it goes through the same skill. Naming the note, right there, without counting.
It is a small skill. It is also the one most players skip, because practising it has never been convenient. Rosewood makes it a minute or two a day.
Western music uses twelve notes: seven naturals, A to G, and five sharps or flats in between. Each fret raises a string by one of those steps, and each string starts on a different note, so the same note appears again and again across the neck. Tap any position below to see where else that note lives.
Sessions are a minute or two. You start on frets one to four, first position, where beginners actually play. Three drills carry the work; four quick modes fit around it.
A position lights up. You say which note it is. Right answers advance on their own; misses wait until you have seen the correction.
The app names a note. You find it on the neck: on one string, anywhere, or every occurrence at once.
Study a lit board, then the light goes out and the same board asks you back. Recall, not recognition.

Every answer sounds as it appears, and any note on the reference fretboard sounds when you tap it. On a miss you hear two notes: the one you chose, then the right one, so you hear how far off you were. The sound is the same whether you were right or wrong. It tells you what the note is; it does not congratulate you.
Six-string guitar, seven-string, and bass, all free. Left-handed mode included. The board takes its shape from your instrument.
Standard tuning free; alternate tunings with the one-time purchase. Every note on the board is computed from the tuning, never hard-coded.
Frets 1–4 free, and staying free. One purchase opens 5–12, a custom band, and sharps and flats. One setting, used by every mode.
Phone and tablet, portrait and landscape, Android and iOS. Fully translated into 24 languages.
The map shows your whole fretboard, every position shaded by how well you answer it. It does not flatter you: a fret it has never asked about stays dark. When the first four frets are solid on every string, the app says first position is finished and moves you up the neck. Home tells you what is due today and how many days you have kept going.
Frets 1 to 4 are free and stay free. One purchase, no subscription, opens frets 5 to 12. No account, no ads.
Rosewood is built in Kotlin with Compose Multiplatform: the UI, the domain logic and the tests are written once and ship to both stores. Product research, PRDs, the design system, store copy and manual test plans are produced through agentic workflows and live in the repository next to the code they describe. The agents plan and execute; I gate releases and fix what breaks.
A single module. Everything new goes into commonMain; platform APIs sit behind expect/actual seams only where they must: Play Billing and StoreKit, notification scheduling, the audio device, DataStore. The domain layer knows nothing about either platform, which is why most of the tests live there.
An architect agent writes each feature as a PRD and an execution plan. An executor works the plan task by task on a feature branch, appending to an append-only ledger after every task; the ledger is the only status. Compile is a hard gate, tests a soft one, two fix attempts maximum. Market research, the monetization PRD, the analytics metric dictionary, store copy in 26 locales and the manual test plans came out of the same flows. Tooling: Claude Code, Gemini CLI, custom agents, Fastlane, an own analytics backend and crash reporting.
The note you hear is synthesised, not sampled: a plucked-string model rendered per note in a few milliseconds, one voice, the same sound on a hit and a miss. The board's light tracks a ten-answer window with hysteresis, so one miss never takes back a level you earned. Contrast tests fail the build when an ink drops under its floor. Fret spacing follows 1 − 2−n/12.
Compose Multiplatform carries the UI and the logic; StoreKit, notifications and the audio device sit behind expect/actual. The parts that were new to me, Xcode, App Store Connect, the review process, were a matter of asking the right questions of the agents. For a team building the same product for two platforms, I think this is the right bet.
One release shipped with no Next button in landscape. A customer email found it before I did, and the fix went out the same day, but retention took the hit. The rule that came out of it is now the second line of the repository's instructions: a change to landscape is not done until portrait is checked, and the reverse.