Live Captions
Show captions during a live call or stream, close enough to real time to follow.
What it adds
A real-time caption track over live audio, with interim text that settles as recognition corrects itself and a saved transcript at the end.
What your agent is told to do
5
What your agent is told to do
5-
1
Stream audio to recognition continuously and render text as it arrives, in two visual tiers: settled text that will not change, and interim text that still might.
-
2
Set an explicit latency budget and hold to it. If recognition falls behind, discard the oldest pending audio and carry on rather than showing captions that lag the speaker by half a minute.
-
3
Give viewers control over caption size, position, background opacity, and contrast, and persist that choice using the app's existing per-user preference storage.
-
4
When the session ends, write the settled text to the app's existing transcript record so the recording and the transcript stay together. Do not create a separate captions-only artefact.
-
5
Do not present live captions as an accessibility guarantee. State that they are automatic and may be wrong, and keep any existing path to a human captioner or a corrected transcript.
Edge cases it handles
8
Edge cases it handles
8- End-to-end latency must be bounded. When recognition or the network cannot keep pace, drop the backlog and resume at the live edge, because captions that are minutes behind are worse than a visible gap.
- Interim text will be rewritten as recognition revises it. Replace the interim tier in place so words settle smoothly, rather than deleting and reprinting whole lines in a way that makes the caption area flicker.
- The caption connection will drop on a network blip. Reconnect automatically, resume at the current live position rather than replaying, and show the viewer that captions are reconnecting instead of leaving a frozen last line.
- Viewers need size, position, and contrast controls, because default captions land over faces, slides, or the stream's own lower third for someone on a small screen.
- When the stream ends, the accumulated settled text must be saved as a transcript, including for a session that ended by disconnection rather than a clean stop.
- Captions must not cover the player controls or any on-screen text the stream is presenting, and must reflow rather than overflow when the window is narrow.
- Silence, music, and background noise must produce nothing at all rather than hallucinated words. An empty caption area is honest; invented text is not.
- A live stream may be public. Apply the app's existing content moderation to what is displayed, and give the host a way to turn captions off mid-session.
Definition of done
9
Definition of done
9- Captions appear during a live session within a stated latency budget.
- Interim text is visually distinct from settled text and is revised in place.
- A dropped caption connection reconnects at the live edge and shows its state to the viewer.
- Viewers can change caption size, position, and contrast, and the choice persists.
- The settled text is saved to the existing transcript record when the session ends, including on an unclean end.
- Captions never obscure player controls and reflow on narrow screens.
- Silence produces no caption text.
- The feature matches the existing design system.
- No existing functionality is broken.
Related features
Auto Captions
Auto Captions
Every uploaded video gets timed captions without anyone typing them out.
What it does
An automatic captioning pass over uploaded video that produces a timed caption track shown in the player.
How it works
- 1 Extend the app's existing Voice Transcription rather than adding a second speech pipeline. What is new here is timing, storage as a caption track, and player integration, not the recognition itself.
- 2 Run captioning as a background job triggered after the upload finishes, and reuse the app's existing job progress reporting so the user can see where a long file has got to.
- 3 Store the caption track as its own record linked to the media, with a language, a status, and a source marking it as machine-generated so a human correction can supersede it later.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/auto-captions
Accessible Name Validator
Accessible Name Validator
Find every control a screen reader announces as nothing useful.
What it does
An audit of the computed accessible name of each interactive element in the rendered interface.
How it works
- 1 Compute the name the way assistive technology does — following the resolution order through labels, referenced elements, attributes, and text content — rather than reading the source markup and guessing.
- 2 Report three separate failures: an empty name, a generic name such as button, link, or here, and duplicate names within the same context where several controls announce identically.
- 3 Prefer a fix that adds a visible label. A control given a hidden name is announced but still mysterious to the sighted user who cannot tell two identical icons apart.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/accessible-name-validator
Focus Ring System
Focus Ring System
Give every focusable control one clear focus indicator that belongs to the design.
What it does
A single focus treatment applied consistently across buttons, links, inputs, cards, rows, and custom controls.
How it works
- 1 Inventory every focusable element in the app, including the ones made focusable by hand — clickable rows, cards, canvas objects, custom selects — and confirm each shows the shared treatment.
- 2 Distinguish focus arriving from the keyboard from focus arriving from a click, and show the ring for keyboard and programmatic focus. A ring appearing on every mouse press reads as a rendering fault and invites someone to remove it entirely.
- 3 Compose the ring so it stays visible on every surface the control can sit on: page background, card, coloured button, dark toolbar, selected row. A single-colour ring will disappear against at least one of them.
Copy the prompt
No account needed
Add this feature to my app:
https://addthisfeature.com/x/focus-ring-system
How it works
-
1
Copy the link
Grab the Markdown instruction URL for this feature.
-
2
Give it to your AI
Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.
-
3
It inspects, then implements
Your agent reads your existing app first, then adds the feature to fit it.
Works with your stack
These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.
Need it tighter than that? Customize the feature and tell it exactly what you're running.