A book, a unit of work, and a learner's version of it
Source-language analysis is produced once. Only the learner-facing layer is paid for per learner language.
A reader experiences a book as continuous. The system must treat it as bounded units, because processing, retries, publication, and purchase all need something smaller than a novel.
- A TextCollection is the work — identity, ordering, discovery, collection-level reading progress.
- A Text is a bounded canonical section: the unit of processing, readiness, and access.
- An Adaptation projects one text for one target learner language.
- Phrase, WordOccurrence, PhraseTranslation, and WordGloss stay normalized. No reader’s annotations are baked into stored HTML.
- The reader projection combines those artifacts with the reader’s knowledge, access, position, and audio — at request time.
Segmentation, lemma finding, form-family grouping (clusters of forms that resemble each other closely enough that knowing one carries you to the rest — why that is not just the lemma), and audio are text-scoped — their results belong to the source language. Translation and glossing are adaptation-scoped, depending on the learner’s language.
So a second learner language re-uses segmentation, lemma analysis, form families, and narration, paying only for translation and glosses. A flatter model would re-run — and re-buy — all of it.