Skip to main content

What are Threads?

Threads are text replacement rules. When you speak a trigger phrase, Vowen replaces it with your configured text in the transcription output. The replacement happens after the engine has finished, so it works identically on every transcription engine, local or cloud.
The Add thread dialog with a Thread trigger field, an Expansion field and a Plain / Rich toggle

A thread is a trigger phrase and the text it becomes. The Plain and Rich toggle decides whether formatting survives.

Creating a Thread

1

Open the Threads tab

Click Dictionary in the left sidebar, then switch to the Threads tab.
2

Add a thread

Click Add Thread in the window toolbar.
3

Enter the trigger

Type what you say, or more precisely what the engine writes down when you say it.
4

Enter the replacement

Choose Plain or Rich at the top of the field, then write what you want pasted instead.
5

Save

The thread is live on your next dictation. No restart needed.
The Threads tab listing triggers such as sig, standup and addr, each with an arrow to the text it expands into

Each thread is a trigger on the left and the text it becomes on the right.

Use the search bar at the top of the tab to filter by trigger or replacement text. Press / or Cmd+F (Ctrl+F on Windows) to focus it. Triggers must be unique; Vowen refuses a duplicate when you save.

Examples

How matching works

  1. You speak your phrase normally.
  2. The engine transcribes it, for example as “post gress”.
  3. Vowen scans the finished transcript for trigger matches.
  4. Matching text is replaced before pasting, giving “PostgreSQL”.
Two properties decide whether a thread fires: Triggers are case-insensitive. A thread with the trigger my email matches “My Email” and “MY EMAIL” equally. Triggers are anchored as whole phrases. A trigger matches only where it is not glued to a letter, digit or underscore on either side, using Unicode-aware lookarounds. A thread triggered on sig therefore leaves the middle of “design” alone, and cal leaves “calendar” alone.
Each side of a trigger is anchored independently, based on its own first and last character. A trigger that ends in punctuation, like etc. or :), gets no anchor on that side, so it can still fire when it runs straight into the next word.

Unsegmented scripts

Word boundaries do not exist in scripts that are written without spaces, so anchoring a trigger whose edge falls in one of them would mean it could never fire. Characters in these ranges are exempt from anchoring:
  • Thai and Lao
  • Khmer
  • Myanmar
  • Hiragana and Katakana, including half-width Katakana
  • CJK Unified Ideographs, Extension A, and Compatibility Ideographs
  • Hangul Syllables
A mixed trigger is anchored only on the segmented side.

Priority and ordering

Threads are sorted longest trigger first, and every one of them is then applied in turn to the text as it stands after the previous ones. Longest-first only decides who claims an overlapping span first. It does not mean the shortest threads are skipped. If a longer trigger matched part of your speech, a shorter trigger can still fire on whatever the longer one did not consume, and on any other occurrence elsewhere in the same transcript. Every occurrence of a trigger is replaced, not just the first. Your Dictionary misspellings are folded into the same pass as implicit threads, using identical anchoring. They do not count towards thread matching for the purposes of the enhancement skip described below.

Rich-text threads

The Add Thread dialog has a Plain / Rich toggle. In Rich mode you get a small formatting editor: bold, italic, lists, links, headings, colors, highlights and alignment. Threads that use it are marked with a rich pill in the list. When a rich thread fires, Vowen places both a formatted and a plain version on the clipboard. Apps that read rich content (Gmail, Notion, Apple Mail, Word, Google Docs) receive the formatting; apps that only read plain text (Terminal, code editors, single-line inputs) receive the plain fallback.
Rich formatting is lost if AI enhancement runs on that dictation. The formatted content cannot survive being rewritten by a model, so when a dictation is going to be enhanced (by a Tone, by global AI enhancement, or by a shortcut set to always enhance) any rich threads in it collapse to their plain text before the model sees them. If you want a thread to keep its formatting, use it on a dictation that is not being enhanced.
Rich paste is also skipped when your text insertion method is set to Direct Input, since that method types characters rather than pasting.

Simple thread usage skips AI enhancement

If a dictation is essentially just a thread trigger, Vowen recognizes that and pastes the snippet immediately instead of sending it to a model. When at least one thread matched and six or fewer non-filler words remain around it, Vowen skips AI enhancement for that dictation. Filler words (“um”, “uh”, and the rest of the filler list) are removed before counting, so “um, my signature, uh” still counts as zero residual words. The snippet is already exactly what you wrote. Sending it to a model adds latency and risks rewording your own signature block. Saying “my signature” pastes instantly; dictating three paragraphs that happen to contain “my signature” still gets enhanced normally. There is no setting for this. A shortcut explicitly configured to always enhance still enhances.

Smart spacing

After threads are applied and any enhancement has run, Vowen inspects the text on either side of your cursor and fixes the spacing at the insertion point, so a snippet dropped mid-sentence does not arrive jammed against the previous word. This is on-device and always on. Smart spacing applies to dictation output, including thread replacements. It does not apply to Text Expander injections, which go through a separate path.

Bulk import from CSV

Click the Import from CSV button in the search row to add many threads at once.
  • Two columns per row: trigger, then replacement
  • A header row is optional and detected automatically
  • Existing triggers are detected and skipped, with a count shown in the preview before you commit
  • Imported threads are always plain format
The dialog offers a Download sample CSV link that saves vowen-threads-sample.csv with the expected shape.

Use cases

  • Correct consistent misspellings: “cube nets” becomes “Kubernetes”
  • Paste boilerplate: “my signature” becomes your full email signature
  • Insert links: “portfolio link” becomes “yourportfolio.com”
  • Expand abbreviations: “ETD” becomes “estimated time of delivery”
  • Fix names: “john smith” becomes “Jon Smyth”, when the engine always gets it wrong
For a term you use constantly, prefer a Dictionary entry with the wrong spelling attached as a misspelling. You get the recognition hint and the guaranteed rewrite from a single entry, and it stays grouped with the word it belongs to. Reach for a Thread when the replacement is longer or unrelated to what you said.

Threads, Dictionary and Text Expander