feat(webapp): campaign names go to the transcriber as hotwords by default (#1315) #1316

Merged
claude-bot merged 2 commits from feat/1315-hotwords-default into main 2026-11-02 18:49:16 +00:00
Collaborator

This is part of #1315, the owner's answer to Q203 after #506's measurement (PR #1313).

  • Default: QB_ASR_VOCABULARY_STYLE now defaults to hotwords. On a realistic 100-name list, hotwords got 89–90% of names right against 80–82% for initial_prompt; at 24 names the two were the same.
  • Older servers: a server that doesn't declare hotwords gets initial_prompt.
    • As the default, that fallback is quiet, logged at info.
    • An operator who sets hotwords explicitly still gets the warning. "Explicitly" means the env var is present, which is how compose passes .env.
  • Exactly one field is still ever sent. Both at once gave a 500 in the measurement.
  • Opting out: QB_ASR_VOCABULARY_STYLE=initial_prompt keeps the old behaviour.
  • Tests, .env.example, docs/OPERATIONS.md and a changelog fragment are updated.

Checked on docker-test:

  • lint is clean;
  • the changelog check passes;
  • every transcription, vocabulary, capability and provider test (-k over those words): 723 passed, 13 skipped.

Before 4.7.0 ships, #1315's dev check still has to run: one real session's kept audio, transcribed with each style and scored for names, without touching that session.

🤖 Generated with Claude Code

This is part of #1315, the owner's answer to Q203 after #506's measurement (PR #1313). - **Default:** `QB_ASR_VOCABULARY_STYLE` now defaults to `hotwords`. On a realistic 100-name list, hotwords got 89–90% of names right against 80–82% for `initial_prompt`; at 24 names the two were the same. - **Older servers:** a server that doesn't declare hotwords gets `initial_prompt`. - As the default, that fallback is quiet, logged at info. - An operator who sets `hotwords` explicitly still gets the warning. "Explicitly" means the env var is present, which is how compose passes `.env`. - **Exactly one field** is still ever sent. Both at once gave a 500 in the measurement. - **Opting out:** `QB_ASR_VOCABULARY_STYLE=initial_prompt` keeps the old behaviour. - Tests, `.env.example`, `docs/OPERATIONS.md` and a changelog fragment are updated. **Checked on docker-test:** - lint is clean; - the changelog check passes; - every transcription, vocabulary, capability and provider test (`-k` over those words): 723 passed, 13 skipped. **Before 4.7.0 ships**, #1315's dev check still has to run: one real session's kept audio, transcribed with each style and scored for names, without touching that session. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
The owner's call on #506's measurement (Q203): on a 100-name list
hotwords got 89-90% of names right against 80-82% for initial_prompt.
QB_ASR_VOCABULARY_STYLE now defaults to hotwords; a server that does not
declare them gets the prompt, quietly, and an operator who set hotwords
on purpose still gets the warning. initial_prompt keeps the old way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
test: the vocabulary tests expect hotwords from a server that offers them (#1315)
All checks were successful
CI / Summarisation accuracy eval harness (stub provider) (pull_request) Successful in 59s
CI / Backend lint (ruff) (pull_request) Successful in 1m0s
CI / Does this change touch the recording path? (pull_request) Successful in 18s
CI / Bot/backend version sync (pull_request) Successful in 31s
CI / Feedback site tests (pull_request) Successful in 48s
CI / Which journeys does this change need? (pull_request) Successful in 20s
CI / Bot tests and audit (pull_request) Successful in 3m29s
CI / Frontend (shard 2/2) (pull_request) Successful in 7m18s
CI / Docker image build (pull_request) Successful in 7m7s
CI / Synthetic session harness (no GPU, no LLM) (pull_request) Successful in 8m43s
CI / Frontend (shard 1/2) (pull_request) Successful in 19m56s
CI / Backend migration, tests, and audit (pull_request) Successful in 35m51s
CI / End-to-end journeys (desktop) (pull_request) Successful in 28m21s
361eef36c3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign in to join this conversation.
No description provided.