SpeakTrue

Next Product Direction: 90-Day Roadmap

Status

Proposed execution roadmap. This document sequences three implementation-ready plans:

  1. Conversation Workspace
  2. Unified Speech Library
  3. Quick Speak Accessibility Mode

The roadmap is intentionally outcome-based. Week ranges are sequencing guides, not release promises. Each feature must pass its own rollout gate before the next dependency is treated as available.

Product Direction

Move SpeakTrue from a collection of speech tools toward a dependable communication workspace:

The existing TTS, STT, STS, Soundboard, artifact, auth, and entitlement paths remain the foundation. The roadmap adds workflow continuity around them rather than replacing their contracts.

Current Baseline

Non-Negotiable Boundaries

90-Day Outcomes

Outcome User-visible proof Release measure
Conversation continuity A user completes several Turn-Based STS turns, replays any turn, leaves, and resumes the conversation At least 95% of accepted turns attach to a conversation; attach failures are recoverable and idempotent
Speech retrieval A user searches all clips, filters favorites or sources, and plays a result without opening its folder first Median signed-in retrieve-to-play time under 3 seconds on a warm network path
Fast accessible speech A user opens Quick Speak, enters or selects a phrase, and hears it with one primary action; a platform voice remains available offline Local fallback success above 99% in device tests; no phrase content in telemetry
Cross-platform contract stability Web, iOS, and Android decode the same new fields while old clients continue to function Contract tests and per-surface gates pass with old fields remaining valid

Metrics are proposed targets. Baseline measurement must precede any claim that a target has been met.

Sequence

Days 1-15: Contract and measurement foundation

Exit gate: each concept is demoable without a new durable schema, and user-flow observations confirm that the chosen interaction is worth persisting.

Days 16-35: Durable conversation and library read path

Exit gate: an old client still completes STS and loads Soundboard; a new web client can resume a conversation and search/favorite clips.

Days 36-60: Native parity and Quick Speak reliability

Exit gate: all native slices pass focused tests; Android passes its complete local gate; manual device tests demonstrate network failure recovery.

Days 61-75: Integration and shortcuts

Exit gate: the three plans form one flow—complete a turn, save or pin it, find it later, and speak it quickly.

Days 76-90: Hardening and staged release

Exit gate: rollback has been rehearsed, support diagnostics do not contain content, and no compatibility client is forced onto a new contract.

Dependency Map

flowchart LR
    C0["STS semantics and ephemeral timeline"] --> C1["Persistent conversations"]
    C1 --> I1["Save a turn with provenance"]
    L0["Unified Library query"] --> L1["Favorites and tags"]
    L1 --> I1
    Q0["Native local Quick Speak"] --> Q1["System speech fallback"]
    Q1 --> Q2["Synced pinned phrases"]
    L1 --> Q2
    Q2 --> Q3["App shortcuts"]
    I1 --> R["Integrated staged release"]
    Q3 --> R

Conversation persistence and the library read path can proceed in parallel after their contracts are fixed. Shortcut work depends on stable phrase identity. Quick Speak’s local MVP does not depend on the Unified Library.

Release Flags

Use separate flags so one feature can roll back without disabling another:

Flags belong in server-controlled settings or the existing app configuration boundary. Do not use compile-time-only flags for staged production rollout.

Measurement Contract

Record only operational metadata:

Do not record transcript text, phrase text, clip filenames, storage paths, signed URLs, voice samples, or provider credentials. Product events must be distinguishable from billable provider usage_events so experimentation does not alter quota accounting.

Proposed event names:

Verification Strategy

Every slice runs the narrowest relevant checks first, then the full surface gate when required:

# Backend contracts and migrations
npx -y deno@latest test backend/supabase/functions/<touched-function>/*_test.ts
bash scripts/coverage_backend_contracts.sh
bash scripts/regression_migration_paths.sh

# Web
web/python-web-app/venv/bin/pytest <focused-test-files>
node --check web/python-web-app/static/js/<touched-file>.js
node web/python-web-app/tests/js/<focused-runtime-check>.mjs

# iOS
xcodebuild test -project ios/SpeakTrue.xcodeproj -scheme SpeakTrue \
  -destination 'platform=iOS Simulator,name=iPhone 17' \
  -only-testing:SpeakTrueTests/<FocusedTestClass>

# Android, mandatory for any Android-facing slice before commit/push
bash scripts/verify_android_ci_local.sh

# Every slice
git diff --check
git status --short

Migration slices also require a rollback rehearsal and a live Supabase smoke against an allowlisted test account before broad rollout.

Decisions Required Before Day 16

  1. Product naming: keep Live Interpreter as a historical mode label or rename it to Turn-Based Revoice until true translation exists.
  2. Retention: default durable conversation retention period and user-facing deletion controls.
  3. Sync: whether pinned Quick Speak phrases are opt-in or sync by default for authenticated users.
  4. Telemetry: where content-free product events live and how long they are retained.
  5. Web scope: Quick Speak is native-first in this roadmap; decide whether a web surface belongs in the same release or a later plan.

Definition of Roadmap Completion