IntelliPrompter
A teleprompter of talking points, not a script. Speak in your own words and in any order. About every half second, Jev scores each open point on how far you have covered it (0 to 3), and a point is checked off once its score reaches the threshold.
Your key is stored only in your browser
- Kept for this tab. It is cleared when you close the tab. Tick "Remember on this device" to keep it until you press Forget key; do that only on a computer you trust.
- Sent only to the service that bills it. An OpenRouter key (it starts with
sk-or-) goes from your browser straight to openrouter.ai. A TypeSafe key goes to the small server you run on your own computer withnpm start, which passes it on to api.typesafe.ai. That API does not accept calls from web pages, so TypeSafe keys don't work on this hosted page. - No server of ours in between. This site is two static files on GitHub Pages, with no backend, no analytics and no third-party scripts. The key is sent nowhere else.
To check it, open your browser's developer tools, go to the Network tab, and see where each request goes. Or read the source: one HTML file and one JavaScript file. To be safer still, make a separate key with a spending limit for this page.
Your key isn't the only thing that leaves the browser: each request also carries your transcript to the same service. In Chrome, speech recognition sends your microphone audio to Google. With OpenRouter, a 5-minute talk with 7 points costs at most about $0.04.
Click a point to check or uncheck it yourself. A checked point stays checked and is no longer sent to Jev.
How Jev scores each point
Jev is a model from TypeSafe that doesn't write text. It answers typed questions with probabilities. This page uses its Score question type, which rates something on levels you describe in plain words.
1. What is sent
About every half second, one request goes to Jev. It holds what you have said so far (the state) and one Score question per talking point that is still open. All the questions are answered in parallel:
{
"state": { "transcript": "Hi all, I'm your host… exits are at the back" },
"questions": {
"p2": {
"type": "score",
"instructions": "How much has the speaker covered this talking point: \"Where the emergency exits are\"?",
"criteria": [
"No mention of this topic at all",
"Topic is mentioned but not expanded upon at all",
"Topic is discussed",
"Topic is thoroughly discussed"
]
},
"p3": { … one per open point … }
}
}
The criteria are the levels, from lowest to highest. They define in words what "covered" means, so changing their wording changes what Jev looks for.
2. What comes back
For each point, Jev gives the probability that each level describes the transcript. The probabilities add up to 100%:
| Level | Meaning | Probability |
|---|---|---|
| 0 | No mention of this topic at all | 0% |
| 1 | Mentioned but not expanded upon | 12% |
| 2 | Discussed | 83% |
| 3 | Thoroughly discussed | 5% |
The score is the probability-weighted average of the levels, so it can fall between them:
score = 0×0.00 + 1×0.12 + 2×0.83 + 3×0.05 = 1.93
Confidence (0 to 1) measures how much the probability is concentrated on one level. It does not say whether the point was covered, so this page ignores it.
3. What the page does with it
- If a point's score reaches the threshold (1.5 by default, about halfway between "mentioned" and "discussed"), the point is checked off. Move the slider to be stricter or more forgiving.
- A checked point stays checked and is no longer sent, so later requests get cheaper.
- Every open point is scored on every request, so you can cover them in any order.
Jev only judges how much each point has been covered. The rule for checking it off is plain code, which is why tuning it needs no retraining: change the threshold or the wording of the levels.
Live: Jev's last answer for each point
Start talking (or typing) and each point's probabilities will show here.
Idea and design by Allie at TypeSafe. More in the Score docs and on GitHub.