Exports, meeting rules, and never dropping audio
The talat team
Overview
A catch-up between Mike and Nick after Nick had been away for a week, running just under two hours: reviewing everything merged in the meantime, walking the open pull requests together, digging into the new per-meeting rules feature, and a long architecture discussion about restructuring the transcription pipeline so audio is never dropped. The session ended with a release plan: cut a release candidate the next day and aim to publish on Monday.
Key discussion points
What landed while Nick was away
- Custom vocabulary now works during dictation.
- Notes and the summary now share a single markdown editing surface with one formatting toolbar. A deceptively large change; the review ran to dozens of comments.
- New option to show a notification if a summary fails to generate, off by default.
- A performance pass on the transcription engine that avoids repeating work it had already done. Measured as a worthwhile win on both platforms, not just an edge case.
- An experiment in sharing one number-and-punctuation formatting step across both speech models was closed: it surfaced too many failure cases, and the models already handle this well enough natively.
Configurable exports and post-meeting actions
- Exports are now configured the way LLM connections are: you add actions, each a markdown file, markdown webhook or JSON webhook, and you can have several. This is the foundation for first-class integrations (Slack and friends) later.
- The old grid of markdown section toggles is gone, replaced by templates: editable markdown templates with conditional tags, sensible defaults, and a live preview, so different destinations can use different formats. Existing settings migrate automatically.
- Next up: dynamic folder paths in export destinations, which several users have asked for.
- Before this ships, the settings navigation needs a rethink. Nick also wants a holistic pass over talat's settings visual language at some point; the controls have grown organically and could be more consistent. Not coupled to this work.
Per-meeting rules (working name: overrides)
- The feature: rules like "when the title contains standup, turn auto-record on", with conditions on title, attendees and so on. The first matching rule wins. No OR conditions yet, but nothing in the design prevents adding them later.
- Visibility was the main discussion. Showing how many past meetings a rule would have matched is abstract; more useful is a look ahead at which upcoming meetings it will match, and showing on the meeting page itself which rule will apply.
- Agreed direction: a matching rule can be switched off for a single meeting, but you can never force a non-matching rule onto one. If you manually change a setting the rule had set, the rule steps aside for that meeting.
- How this interacts with the existing per-meeting prompt and model choices needs UX thought, and an audit trail of "this rule ran on this meeting" would help people trust it.
- Nick's take: this is too good to call overrides, which won't mean anything to most people. "Workflows" is the front-runner; naming parked for now.
- It will not be in the next release. Enough is stacked up already.
Never dropping audio
- Today talat always prioritises transcribing the most recent audio, which means that under sustained pressure on slower machines the transcript can drop words. Both agreed to invert that trade: capture and honour every frame, and let the higher-accuracy pass lag and catch up instead.
- The sketch, borrowed loosely from Kafka: capture writes audio to an append-only log; the live preview pass and the accurate batch pass each consume from it at their own pace, tracking their own positions, and the log is trimmed once the slowest consumer has read it.
- The batch pass gets deprioritised so it mostly runs in the gaps when nobody is speaking. Open questions: whether batch work can be paused partway rather than thrown away when live transcription needs the machine, whether thread priorities alone would do the job, and how to bound growth if batch falls badly behind.
- Stopping a meeting also changes: the app has to drain the backlog rather than terminate instantly, showing progress while it catches up.
- Where the log lives is genuinely open. Memory is simple but visible as growth; disk is bounded but adds a new failure mode when it runs out. Roughly several hundred megabytes per hour of raw audio either way. Ideally the backing store is an implementation detail behind one abstraction.
- A previous proof of concept built most of this and worked well on Mac; those closed branches will be dug out as the starting point.
Release planning and the open pull requests
- The next release already carries a lot, including a major speech-model upgrade on Windows, so the plan is to merge the small safe changes, cut a release candidate tomorrow, and aim to publish on Monday.
- Merging: logging of LLM and connected-tool activity.
- Closing: an experiment replacing the speech model currently used to detect an imported file's language with a lightweight dedicated model, closed for the time being to revisit later, and an alternative approach to vocabulary boosting whose results were simply not as good.
- Merging soon: a fix for the dictation panel getting stuck, and a fix so the app retries model downloads if it boots before the network is up after a reboot.
- Staying open: a Windows GPU option that concerns nobody much yet, and one very large long-running branch that gets a stay of execution.
Marketing
- The comparison pages on the website are written for classic search, which isn't bringing much. They should be reworked to be more useful to AI answer engines; list-style roundups are reportedly what gets cited.
- talat should be listed against far more products in the software alternative directories; the current listings only cover a handful of the obvious competitors.
- Conversion from download to paid remains strong.
Decisions made
- Invert the transcription trade-off: never drop audio, let the accurate pass lag and catch up. Investigate deprioritised, ideally pausable batch work and a log-backed buffer, starting from the earlier proof of concept.
- The per-meeting rules feature stays out of the next release, and it needs a better name; "workflows" is the leading candidate.
- Merge the small safe changes; cut a release candidate tomorrow and target Monday for the release.
- Close the file-import language-detection and alternative vocabulary-boosting experiments.
Additional notes
- Community feedback continues to be encouraging, including a member doing serious testing of builds for us; the support isn't always coming from where we expected.
- Nick will chase a third-party app store's support about their single-app distribution process, whose documentation references tooling that doesn't seem to exist yet.