
ChetasLua/jevmeter on GitHub
- Stars
- 81
- Forks
- 5
- Language
- Python
- License
- MIT
- Last push
- 17 Sep 2026
Read from GitHub on . Counts change daily.
Reported by the author
- Full debate cost
- $0.0497
$0.0497 total
github.com - Jev calls
- 1,191
1,191 Jev calls
github.com
jevmeter puts a live BS meter on any video: it scores every sentence a speaker says and flags evasive answers, then renders the result as an edited 16:9 video with the scores overlaid, ready to post. Getting started takes three steps: run the installer, paste a TypeSafe API key, then drag a video into the terminal and pick a preset. The edited video appears next to the original as a .jevmeter.mp4 file.
Each preset asks Jev the same five yes/no questions about every sentence: for the debate preset, whether it’s a factual claim, evasive, contradicts something the speaker said earlier, an emotional appeal, or a dodge of the question asked. Jev returns a calibrated probability for each rather than writing an assessment. Other presets swap the five questions for earnings-call or podcast-specific ones.
The project’s own worked example runs a full Trump-Harris debate through the tool: 832 sentences scored for one speaker and 359 for the other, 1,191 total Jev calls, 5,955 yes/no answers, 1,182,843 input tokens, for $0.0497 total, at roughly 0.4 seconds median per call. The README is explicit that the meters show Jev’s probabilities, not a fact-check, and that both speakers get exactly the same five questions with highlight clips chosen by one fixed rule.
How it uses Jev
r = requests.post(API, headers={"Authorization": f"Bearer {key}"}, timeout=30,
json={"model": "jev-latest", "state": "hello", "questions": {"q": {"type": "noul", "instructions": "Is `state` a greeting?"}}})
except Exception as e:
return False, f"could not reach api.typesafe.ai ({e.__class__.__name__}); check your internet connection"
if r.status_code in (401, 403):
return False, "TypeSafe rejected this key; create a new one at https://console.typesafe.ai/keys"
if r.status_code >= 400:
return False, f"TypeSafe API error {r.status_code}: {r.text[:160]}"
return True, f"key works ({r.json().get('model', 'jev')})"


