Skip to content
MrJev

jevmeter

Scores every sentence in a video and renders a live Jev meter as a 16:9 edit.

View on GitHub →

Hands-on review

Scores every sentence of a video and renders a 16:9 edit with live probability bars. Its cache can quietly reuse old scores after you edit the transcript.

Good for

  • Turning a debate or interview into a watchable, scored edit
  • A worked example of aligning a transcript to audio and rendering from it
  • Presets: five yes/no questions per sentence that you can rewrite

Watch out for

  • The whole transcript leaves your machine, repeatedly: each sentence carries its context
  • Editing the transcript does not invalidate the cache, so old scores are reused
  • One call per sentence, with no budget or cap: a long video is a lot of calls

Tested Sep 20, 2026 at cbf8e117b5b8 · Python 3.11 in Docker, full pipeline end to end against a local stand-in API; no Jev calls

How we reviewed this: we installed it in Docker on Python 3.11, ran the documented CI smoke checks, and drove the whole pipeline — ffmpeg, Whisper, alignment, scoring, rendering — against a local stand-in for the API, producing a finished 1080p video. We made no Jev calls, so nothing here judges the scores themselves.

What it does

jevmeter, by Chetas Lua, takes a video of people talking and produces a 16:9 edit with live meters: each speaker’s score, karaoke captions, and five probability bars along the bottom. Code does the mechanical work — ffmpeg extracts audio, Whisper produces word timings, difflib aligns a supplied transcript to them, Pillow renders every frame. Jev answers five Noul questions per sentence, defined by a preset you can edit. The debate preset asks things like:

Is sentence talking around the issue raised in moderator_question instead of addressing it?

One request per sentence, five questions in it, six threads by default.

The install worked exactly as documented, and the repository’s CI smoke checks — compile, help, preset parsing, transcript parsing, a secret scanner — all passed offline. There are no unit tests beyond that. jevmeter doctor behaved correctly with no network, reporting what it couldn’t reach rather than guessing.

End to end on a synthetic 190-second clip, it produced a correct 1080p H.264 edit with the layout the README shows.

The cache reuses scores after you edit the transcript

Scores are cached against a fingerprint:

fp = hashlib.sha256(json.dumps([model, preset.get("context_label"),
                                make_questions(preset)], sort_keys=True).encode()).hexdigest()[:12]

Model, context label, questions — not the transcript. Sentences are identified by position. So if you fix a misheard line, or change wording, and re-run in the same working directory, the edited sentence keeps the previous sentence’s scores and no new request is made. The README’s feature list says a crash or a tweak never re-pays for transcription or scoring, and a tweak is exactly the case where you want it to.

The same shape applies to the Whisper cache, which ignores --whisper-model, --start and --end; changing the model in an existing working directory does not re-transcribe, and adding a time range to a cached run can fail with an unhelpful “speaker not in transcript”.

Neither is hard to work around — a fresh working directory per version of the transcript — but the failure is silent, and the output is a video you might publish. We’ve reported it.

What it sends, and how much

  • The transcript goes out in full, several times over. The state per sentence is the speaker, the moderator question (truncated), that speaker’s previous 25 sentences, the answer so far, and the sentence itself. A few kilobytes of transcript become tens of kilobytes of requests.
  • One call per scored sentence, with no cap. There is no budget, no confirmation step, and nothing stops a two-hour debate. The README reports its own totals for a full debate; the shape is simply linear in sentences.
  • A URL input downloads the video with yt-dlp, so whether you may process it is your problem — the README says as much.
  • Key handling is the best of the three apps we looked at this round: stored in ~/.config/jevmeter/config.json with owner-only permissions, gitignored, with a pre-commit secret scanner and a CI check.
  • Everything else stays local: word timings, sentences, scores and the finished video all live in a working directory beside the input.

One cosmetic consequence of the design worth knowing: the price per million tokens is a display default that gets burned into the rendered video as a dollar figure. If pricing changes, published videos carry the old number.

Maintenance

Three commits, created September 17, MIT licensed, no open issues, one maintainer. The README’s numbers don’t all line up with the repository’s own example data — the mock summary in examples/ reports different scores than the README text for the same run — which is the kind of drift you’d expect in a three-commit project, and a reason to run your own clip before trusting any of it.

Verdict

As a piece of video tooling this is surprisingly complete: alignment, rendering, presets and a doctor command, in three commits. As an analysis tool, the design is honest — five plain yes/no questions per sentence, defined in a file you can edit and read.

Use a fresh working directory whenever the transcript changes, decide up front that the transcript is going to a third party, and remember the cost figure gets baked into the frames.

For other media work, see the apps category. Our Best Jev Tools roundup compares what each tool sends.

See how it compares with other tools in Best Jev tools, tested hands-on.

Review updated Sep 20, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.

More in Apps & Browser Extensions

Jev Chat Assistant

★ 8.2k▲ 105

jev-chat/jev-chat-jarvis

Android chat assistant that reads the conversation on screen through the accessibility service, has Jev judge the other person's intent and the risk, and fills in a drafted reply that you send yourself. Chinese and English editions.

Kotlin

OpenMuse

★ 6.1k▲ 479

CopilotKit/openmuse

CopilotKit's self-hosted personal agent with its own browser, terminal and files; Jev decides whether a reply becomes a clarification panel, a comparison of options or plain prose, and overrides the agent only when confident. Alpha.

TypeScriptReviewed

Shapeshift

★ 1.1k▲ 16

anishfn/shapeshift

One text box that turns what you type into the right small interface, an event card or a checklist or a bill split, with Jev choosing which; falls back to rules when no key is set.

TypeScriptReviewed

Get new Jev projects every week

New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.

Powered by Buttondown. See our privacy policy.