Skip to main content

SATE Companion — system overview

SATE Companion is a speech-capture and analysis system for speech-language pathologists (SLPs). It captures a patient's speech on a hardware device, uploads the audio to a backend that transcribes and analyses it with an AI model, and presents the result to the clinician as an interactive report they can edit and annotate.

This documentation is written for internal engineers working on the codebase. Every claim is grounded in the source; each component guide ends with a Known issues / current status section drawn from the 2026-07 audit.

SATE Recorder device
The SATE Recorder (ESP32-S3, touchscreen + SD).

The system at a glance

Components

ComponentTechRoleGuide
SATE RecorderESP32-S3, LVGL, SD_MMCHandheld recorder: records to SD, uploads over Wi-Fi/BLE, OTARecorder firmware
SATE PendantXIAO nRF52840, BluefruitWearable: streams 16 kHz PCM over BLE to the appPendant firmware
Mobile appReact Native / Expo (iOS)Bridges devices → backend; Plaud integration; auto-syncMobile app
Web appReact + Vite + SupabaseClinician report: audio player, transcript editing, annotations, metricsWeb app
BackendSupabase edge fns + Cloudflare ContainerAsync AI pipeline: assemble → transcribe → analyse → storeBackend pipeline
Plaudproprietary iOS SDKThird-party recorder integration (device-lock sensitive)Plaud integration

Connection methods (transports)

The system deliberately uses different transports per link:

LinkTransportWhy
Recorder → backendWi-Fi HTTPS (chunked upload), BLE bridge when offlineThe recorder has Wi-Fi; BLE is the fallback when there's no network
Pendant → appBLE (244-byte PCM notifies)Tiny wearable; no Wi-Fi, streams live to the phone
Plaud → appProprietary BLE SDKVendor SDK owns its own CBCentralManager
App → backendHTTPS to device-apiStandard authenticated upload
Backend AI callLong-lived HTTP from a container (never an edge fn)The AI call exceeds serverless wall-clock limits
Firmware OTAHTTPS pull of a .bin from StorageDevice pulls, not pushed

See Architecture for the full data-flow, and each component guide for the exact protocols and functions.

Where to start

  • New to the codebase? → Getting Started (toolchain, build, flash, run).
  • Understanding the flow? → Architecture.
  • Working on one component? → jump to its guide.
  • What's broken right now? → Known issues (consolidated from the audit).