Skip to main content
Intelliprompter checks off each talking point as you cover it, with one Score question per point. A teleprompter tells you what to say. But if you are presenting from bullet-point notes, you may care more whether what you’ve already said covers each planned point. Intelliprompter listens as you give a presentation and, in near real time, compares what you have said with what you planned to say.
As you talk, the app builds a cumulative transcript. Every half second, it checks whether that transcript has changed. It sends the full transcript to Jev with one question for each unchecked criterion: “How completely has the speaker covered this criterion?” The animation below shows how new chunks of the transcript get processed. Each addition can check off zero or more criteria. Once something is marked as complete, it can’t later be unmarked.
Longer speech sections join a growing transcript and check off requirements

How Intelliprompter works

The demo video at the top of the page shows a working system, integrating your microphone with ElevenLabs and a local app that uses TypeSafe to score the transcript and keep track of which items are completed. This cookbook skips the integration code to focus on the TypeSafe parts. It hard-codes six chunks from the transcript and feeds them incrementally to Jev:
  • The state is the full transcript so far.
  • Each unchecked criterion becomes a Score question with five coverage levels.
  • One system_one request sends the state and all the questions together.
  • Jev returns one score for each criterion. The SDK numbers the five levels 0–4, so the cookbook adds one to match the live app’s 1–5 display.
  • A score of 2.5 out of 5 is the demo’s local coverage threshold, not a TypeSafe confidence value. The app marks that criterion covered and omits it from later requests.

Setup

To run this example locally, create a TypeSafe API key, then run these commands in your terminal and replace <ADD_YOUR_KEY> with your key.
Every API call is cached in json_cache.json. Download it into the folder you run this code from to replay the published numbers instead of calling the API, or leave it out to run everything live. Numbers below came from jev-1.13.0 on 2026-09-29.
Each criterion has short text (display) for the screen and a longer description (description) for Jev. The description tells Jev what to look for in the transcript.

Tell Jev what each score means

A Score question needs a clear scale. We give it five levels, from “Not mentioned at all” to “Covered well and with useful detail”. Jev scores each criterion against the transcript. The SDK returns a score from 0 to 4: each level number multiplied by its probability, added up, so it can land between two levels. The live demo shows the same result from 1 to 5, so score_tick adds one. The app marks a criterion as checked when this score reaches 2.5. One request can score several criteria. Every criterion sees the same full transcript.

Keep checked criteria checked

Jev returns scores; it does not keep checklist state. The app stores covered criterion keys in a set. When a score reaches the configured coverage threshold, the app adds that key. This demo uses 2.5 out of 5. Later requests omit covered keys, so a checked criterion is not scored again. The live app starts a new tick when the transcript changes and no request is in progress. Our cookbook replay uses a normal loop because its six transcript chunks define those ticks.
Early ticks can show progress without changing the checklist. Once a score reaches 2.5, the criterion stays covered and leaves future requests. Every other unchecked criterion remains in the next request, regardless of its position in the checklist.

Read the final checklist

Jev returns the scores. The application turns them into a stable checklist. Jev does not control the order, the 2.5 rule, or the one-way state change.
To use this pattern with a real stream, replace SPEECH_CHUNKS with your transcription provider’s accumulated text. Keep the score descriptions specific, and keep the threshold in code.

Try it in the playground

The link below holds the third tick: the transcript after three chunks as the state, and a Score question for every criterion still unchecked at that point. Edit the transcript there and the scores change with it.
Open one scoring tick in the TypeSafe playground →