Product plan — the SLP loop¶
Live doc. Last meaningful rewrite: 2026-05-26 (v5.2.1). Current-cycle section added 2026-07 (v6.2).
The endgame¶
SLPs already run a diagnostic-therapy-feedback loop manually: they listen to the patient, identify articulation patterns to target, pick exercises (minimal pairs, target words, sentences featuring the target), have the patient practice, listen again, update the targets, pick new exercises, repeat. PhonoLex's endgame is to automate that loop — without removing the SLP from the loop, but freeing them from the mechanical curation work that today eats the bulk of session prep time.
[diagnostic input] ─→ [curriculum recommendation] ─→ [therapy delivery] ─→ [progress feedback] ─→ loop
↑ ↑ ↑ ↑
Audio (R&D) Curriculum recommender Live tools Audio (R&D)
SLP manual (R&D) (shipped) SLP manual
The live tools today serve the therapy delivery stage well. The R&D workstreams close the rest of the loop.
Current cycle (2026-07): the Therapy Pack wedge¶
Decision (2026-07-12): commercialize first as a clinician-controlled therapy-material builder — Therapy Packs — rather than leading with the closed loop or the tool grid. The adopted plan (with its decision addendum) is docs/commercial/2026-07-12-commercialization-plan.md; the competitive case for the wedge is docs/commercial/market-differentiation.md. Work is tracked under Jira workstream PHON-158; PHON-170–176 are the Therapy Pack MVP implementation tickets.
The design center is the app inversion: the list/pack becomes the primary persistent object; the six search tools become add-to-list pickers invoked from inside the editor; the guided "What are you targeting?" flow seeds the same editor a power user can start blank. One artifact, two entry ramps. Local-first drafts (versioned localStorage), then export (PDF picture cards / CSV) as the deliverable clinicians keep.
What shipped in v6.1/v6.2 to clear the runway: the 2026-07-03 audit remediation (v6.1); TalkBank developmental frequencies removed as clinically unfit (CYP-LEX + FineWeb-Edu frequency are the frequency surfaces, "age-appropriate" maps to AoA + CYP-LEX); word→image mapping (Mulberry Symbols + OpenMoji, CC BY-SA, ~1,700 words, has_image filter, picture cards in Lookup/Word Lists/word-profile dialog, "Picture pairs only" in Contrast Sets); privacy/ToS rewritten under Neumann's Workshop, LLC; first-party contact form; Cloudflare-native analytics; the Speech Analysis consent gate with per-IP rate limits; Sentences no longer pre-seeding constraints.
This is the near-term product. The closed loop below remains the endgame; Therapy Packs are the therapy-delivery stage of it turned into the first paid job.
What's shipped (the live tools)¶
PhonoLex's user-facing surface is the practice toolkit:
| Tool | What it does | Endgame role |
|---|---|---|
| Custom Word Lists | Pattern + property + similarity filters over the lexicon | Drill targets |
| Text Analysis | Per-passage analysis with property overlay | Assessment / progress tracking |
| Contrast Sets | Minimal pair / max-opposition / multiple-opposition browser | Therapy-target selection |
| Lookup | Per-word profile (phonology, norms, associations, similar words) | Reference lookup |
| Sentences | Corpus retrieval with full constraint vocabulary + per-result highlight overlay | In-context practice material |
| Speech Analysis (Beta) | Faithful narrow transcript + per-position deviation overlay from recorded/uploaded productions | Diagnostic input / progress feedback (beta slice of the audio workstream) |
The data spine is described in the architecture doc. The lexicon is ~125K CMU-phonology entries with a ~47K canonical content-POS subset carrying ~150 columns of in-house psycholinguistic norms; the corpus is ~236K curated naturalistic English sentences indexed for fast constraint queries.
R&D workstreams (closing the loop)¶
Audio Detection¶
Status: research complete (2026-06-14, the trajectory-based feature model); a beta slice ships as Speech Analysis; full productization and the associated app reseed are gated follow-on work.
Audio is the diagnostic input at the start of the loop AND the progress signal at the end. The workstream goal is a model that takes patient audio in, returns a phonological error profile out (which phonemes are mistargeted, in which positions, with what error patterns). Initially a clinician-attended tool — patient speaks, clinician records, model annotates. Eventually unattended in-session capture.
See memory/project_audio_detection_spike.md.
Curriculum Recommender¶
Status: concept. Successor framing for what was called "Content Catalog."
Maps a diagnostic profile to a graded sequence of targets that the live tools can deliver. Not a single bag of material — a progression: foundational targets first (e.g. word-initial /s/ in CV shape), then adding complexity (CCV onsets, S-blends, medial /s/, final /s/, longer words), each stage with assessment criteria for advancement.
The catalog-style work in packages/catalog/ was per-passage generation. The reframe: instead of generating individual passages, generate curricula — structured progressions that an SLP can walk a patient through. The per-passage delivery niche is already served by Sentences (corpus retrieval) and the live tools.
See memory/project_catalog_package.md for the catalog-era findings that will inform this work.
Governed Generation¶
Status: paused. The CSP solver + Qwen3-Embedding reranker stack was retired in v5.2.0 in favor of Sentences (corpus retrieval) for the per-passage niche. Snapshot at tag archive/csp-generation-v5.2.
Returns as R&D when the curriculum recommender needs synthetic material the corpus can't supply — for example, when a curriculum stage needs a sentence that hits a specific minimal-pair contrast in a specific length / complexity bound where no attested sentence in the corpus satisfies all constraints simultaneously.
See memory/project_csp_and_reranker_deprecated.md for the v5.2 retirement post-mortem.
Adaptive Loop¶
Status: concept.
The glue between the other three. Diagnostic profile → recommended curriculum → SLP runs therapy → audio feedback → updated profile → next curriculum stage. Builds on validated curricula + audio output; the work here is the orchestration layer + the model that adapts recommendations based on progress.
Engineering posture¶
- Don't ship R&D as if it were live. Curriculum Recommender and Governed Generation are not user-facing; the audio workstream's user-facing slice is explicitly labeled Beta (Speech Analysis) and framed as decision support, not diagnosis. Don't describe unshipped R&D as planned-soon features. It lives in
memory/project_*.mdand in research branches. - The live toolkit is the substrate. Improvements that make the live tools more useful as therapy delivery surfaces are themselves loop investment, even when the loop closure isn't shipped yet.
- Single deploy artifact. Only
d1-seed.sqlis LFS-tracked. Developer builds locally, CI applies the seed. No Python pipeline in CI. - R&D writes to memory + research/. When R&D produces concrete code (models, build scripts, audit notebooks), it goes under
research/<date>-<topic>/with a markdown lab notebook. When it stabilizes into a shippable feature, it migrates intopackages/.
What this doc is NOT¶
- A roadmap with dates. Dates are unhelpful given the R&D workstreams' uncertainty.
- A pitch deck. This is the engineering team's shared model of where the product is going and why.
- A frozen vision. Update when the framing changes — the previous iteration of this doc (2026-03-12) was a monorepo migration plan and is obsolete; this rewrite captures the post-corpus-retrieval framing.