Voice in. Audio never out.
Voice notes are how people who don't type actually work — walking to a car, between meetings, in a language they think in. Turning them into something a business can use is easy now. The decision that matters is not which model: it is which class of data is allowed to leave the machine. Text you can read and redact before it goes. Raw audio you cannot — it carries the speaker's identity by construction, plus whatever else was audible in the room. Move each stage across the boundary below and watch what crosses. Edition 001 is what this pipeline produces; this is what it costs.
Honest-AI note. No recording, transcript or person here is real, and no model runs on the page. Both readouts are computed: the exposure panel is derived from where you place each stage, and the run log below is a real state machine — including the failure that matters most, where an imported dependency installs a process-wide timer and takes the whole runner with it. That one cost two rounds of fixing the wrong thing before the actual cause was found.
Where each stage runs
Now break it
Plain-language key (data class, boundary, enrichment, process-wide timer, degrade path)
- Data class
- What kind of thing is being handled — raw audio, transcript text, structured facts. Classes are ranked by how badly you can un-send them.
- Boundary
- The line between your machine and everyone else's. Crossing it is a decision about a class of data, not about a vendor.
- Enrichment
- A stage that makes the output better but is not required for it to exist. If it can block delivery, it was never optional.
- Process-wide timer
- An alarm installed by any library that affects the entire process. When it fires it can end your program, not just the library's work.
- Degrade path
- The branch that runs when something fails: produce the plainer output, say what is missing, keep going.