StringStep Engineering Plan

StringStep Engineering Plan

Date: 2026-05-15

Status: locked P0 build plan.

Product Center

StringStep is a visible safety Step that automatically becomes a private, searchable, beautiful timeline:

The loop is:

Start -> Record -> Retrace

Everything that does not make that loop feel magical waits.

P0 Promise

P0 is an iPhone-first product:

  1. Tap Start and the active UI appears in under 300 ms.
  2. The phone records audio and location visibly.
  3. Route, audio, and transcript state are captured local-first.
  4. Live location can be shared with one trusted viewer through a link.
  5. A stopped Step opens a snappy review shell in under 500 ms.
  6. The Step becomes a beautiful replay: map, movement, audio, transcript, check-ins, sharing events, and delete receipt.
  7. Private storage is encrypted; cloud transcription is optional and auditable.

Non-Goals For P0

Cut hard:

Product Screens

The iPhone app has three tabs:

Start

One primary button:

Start Step

Requirements:

Steps

The archive is the product, not a storage drawer.

Step detail must include:

Account

Account owns:

Transcription Modes

Auto transcription is core. The simplification is not removing transcription; it is making transcription honest and privacy-enabled.

1. Private Auto Transcript

Long-term default.

The iPhone transcribes after the Step ends using on-device recognition when available. Transcript segments are encrypted locally and uploaded only as ciphertext.

Copy:

StringStep can automatically transcribe your Steps without sending audio to StringStep servers or a third-party transcription provider, when your device supports private transcription.

2. Cloud Enhanced Auto Transcript

Practical MVP/beta path.

The user explicitly enables:

Automatically transcribe new Steps with cloud transcription.

Copy:

To create transcripts, your audio is temporarily decrypted and sent to our transcription provider. StringStep does not store plaintext audio or plaintext transcripts. Transcript results are encrypted before storage.

Do not say nobody ever sees plaintext when cloud transcription is enabled. Say:

Private storage is encrypted. Cloud transcription is optional and auditable.

3. Manual Transcript

Fallback for:

Transcript Preference Choices

Show during onboarding and in Account:

Transcript Badges

Every Step detail screen should show one of:

Transcription Architecture

Build transcription as a first-class pipeline, not a bolt-on job.

TranscriptionOrchestrator

Runs after Stop:

  1. Check account-level transcript setting.
  2. Check per-Step transcript override.
  3. Check battery, network, and Wi-Fi constraints.
  4. Prefer on-device transcription if available.
  5. Otherwise, if cloud enhanced transcription is enabled, enqueue cloud transcription.
  6. Emit transcript segments as start_ms, end_ms, text, source, revision.
  7. Encrypt transcript segment objects before durable storage.
  8. Align segments to the same timeline as map/audio.
  9. Add audit events for requested, segment stored, completed, failed, and deleted states without logging transcript text.

OpenAI Path

Use OpenAI transcription only after explicit cloud opt-in.

Implementation notes:

Maps

Beautiful map replay is core.

P0 map requirements:

MapReplayEngine owns:

Latency Targets

Action Target
Tap Start -> active UI under 300 ms
First route point visible under 1 sec
Check-in marker appears under 150 ms local
Stop -> review shell opens under 500 ms
First transcript segment after stop 5-15 sec for short Step on good network
Live viewer location refresh 1-3 sec while active
Scrub timeline/map/audio 60 fps feel; no network dependency

Local state wins first. Network reconciliation comes second.

Data Model

Minimal P0 tables:

Defer:

Protocol

Private storage path:

  1. Capture route/audio locally.
  2. Write encrypted chunks locally.
  3. Upload ciphertext chunks.
  4. Commit chunk manifests.
  5. Store metadata and audit events.
  6. Never require server-side plaintext for private route/audio/transcript storage.

Transcript path:

  1. Consent decision.
  2. On-device transcription when available.
  3. Cloud fallback only after explicit opt-in.
  4. Segment output.
  5. Encrypt segment objects.
  6. Store encrypted transcript artifacts and segment metadata.
  7. Delete transcript artifacts with the Step.

API Surface

P0 routes:

GET    /health
GET    /v1/me
POST   /v1/devices/register
POST   /v1/sessions
GET    /v1/sessions
GET    /v1/sessions/:id
POST   /v1/sessions/:id/stop
POST   /v1/sessions/:id/check-in
POST   /v1/sessions/:id/urgent
POST   /v1/sessions/:id/upload-url
POST   /v1/sessions/:id/chunks/commit
POST   /v1/sessions/:id/transcripts
DELETE /v1/sessions/:id
GET    /live/:token

Use session internally if helpful, but user-facing copy says Step.

Billing

Keep the accepted pricing:

Use RevenueCat for iOS launch unless there is a strong reason not to.

The 90-day no-card trial is a server entitlement, not an App Store intro trial.

Expired users cannot:

Expired users must still be able to:

First Implementation Slices

Slice 1: Local Step Reality

Exit criteria:

Slice 2: Encrypted Queue And Upload

Exit criteria:

Slice 3: Retrace Experience

Exit criteria:

Slice 4: Transcription

Exit criteria:

Exit criteria:

Current Repo Anchors

Important files:

The current local commit that locked the P0 spine:

58db4a0 Lock StringStep P0 product spine

Bottom Line

Do not build a broad safety platform.

Build the magical core:

Start -> Record -> Retrace

Auto transcription is core. Beautiful maps are core. Snappy local-first UX is core. Everything else waits.