Synthesis— voice in, project memory out.
Synthesis treats speech as input to a knowledge pipeline rather than a transcript archive: capture a thought, extract typed blocks, route them by meaning and update the relevant project's living synthesis.
- Swift 5.10
- SwiftUI
- SwiftData
- Speech
- AVFoundation
- ActivityKit
- AppIntents
- WidgetKit
- embeddings + rerank
Stack
How it evolved
Reconstructed from the zero-friction capture spec, commits and current source. The chronology is simplified into product milestones.
The first job is getting a thought out of the user's head with almost no navigation. Voice, system shortcuts and a small acquisition surface matter more than a sophisticated project browser at this stage.
Failed-recording strips, debug views, orphan-audio cleanup and explicit capture state appeared because invisible loss is catastrophic in a memory product. Reliability became UI, not just logging.
Tasks, decisions, questions and ideas became durable objects. Raw speech remains provenance; the rest of the system operates on structured blocks.
Embeddings retrieve likely projects and an LLM reranks ambiguous cases. Low-confidence results go to Inbox instead of silently contaminating the wrong project.
ProjectThinker / ProjectConnector work introduced project suggestions and automatic synthesis updates. The product starts answering “what changed?” rather than merely “where was this note saved?”
Backend URL validation, App Attest and safer HTTP provider handling moved the architecture toward an app that can use paid AI infrastructure without embedding reusable credentials.
UI rationale
Pipeline
Current evidence
I did not find a clean product screenshot artifact in the repository that is suitable for public use. The case therefore shows the actual interaction and failure model instead of using a fabricated app-store-style mock.