Skip to content
MrJev

Crush Monitor

Reads a WeChat conversation and labels each message with emotion and intent, rating how your own replies landed. Local, with your own key.

View on GitHub →

Hands-on review

Paste a WeChat conversation and it labels emotion, intent and how your replies landed. It told us our sample was insufficient, which is the right answer.

Good for

  • A worked example of banded confidence: it marks a thin sample as insufficient
  • Rules that refuse to let a model's own conclusion become evidence later
  • Running locally with your own key and your own quota

Watch out for

  • The other person's messages go to TypeSafe; they did not agree to that
  • Chinese-only interface and documentation
  • Two commits, one day old, and the subject matter invites over-reading

Tested Sep 21, 2026 at be1b33b2bc48 · Node 24 in Docker; its tests, and a live analysis of a short conversation we wrote

How we reviewed this: we installed it in Docker on Node 24, ran its test suite, started the server with a real key and analysed a three-message conversation we wrote ourselves. We used no real chat logs, and we don’t publish our own measurements of Jev’s speed or cost.

What it does

Paste a WeChat conversation and it annotates each message with an emotion and an intent from fixed lists, scores an overall “affinity” signal, and grades your own replies with suggestions. It runs locally — an Express server plus a React front end — with your own key, and keeps analysed conversations in the browser’s local database.

Our sample, live:

"affinity": { "value": 51, "confidence": 0.75, "status": "insufficient" },
"affinityDimensions": [
  { "key": "initiative",  "label": "主动延续", "judgment": { "value": 71, "confidence": 0.86, "status": "insufficient" } },
  { "key": "engagement",  "label": "回应投入", "judgment": { "value": 39, "confidence": 0.49, "status": "insufficient" } },
  { "key": "care",        "label": "关心体贴", "judgment": { "value": 43, "confidence": 0.72, "status": "insufficient" } }
]

Three messages is not enough to say anything about a relationship, and the tool says so: every dimension came back insufficient, with the numbers present but flagged. A product in this genre could easily have shown “51% affinity” in a big font. This one refuses to, and that single design decision is the reason the review is positive.

Rules that survive contact with a model

The test names read like a list of temptations resisted:

  • a resolved event carries the retracted original text, and earlier self-context cannot peek at a future retraction — the analysis of message three cannot use what message seven later revealed.
  • the history index only keeps records with a clear event judgment; low-confidence guesses do not become memory — a shaky inference is not stored as a fact to be reused.
  • the backend rejects a history event that is missing its original text; a model conclusion may not stand alone as evidence.

That last rule is the one we would like to see in more projects. Once a model’s output becomes an input, errors compound quietly; requiring the quote to travel with the conclusion is how you stop it.

The server holds the line elsewhere too: a 512 KB body limit, an hourly request window, and a zod schema that caps the message count, each message’s length and the total characters per request.

What leaves your machine

The conversation — both sides of it. The README says so directly: the original text needed for the analysis is sent to TypeSafe, your account carries the usage, and storing the chat locally is not the same as analysing it locally.

Which brings up the part no review of this project should skip: the person on the other side of that conversation did not agree to any of this. The README’s own framing is that the results are for fun and that understanding someone is still your job, which is the right note. Take it as written, and think about whose words you are pasting.

Maintenance and shape

Created 20 September, MIT, two commits — the history is squashed rather than sparse; the code inside is not two-commits-worth of thin. React, Express, zod and the official SDK, with tests that run offline in about a second.

The interface and documentation are Chinese-only, including the emotion and intent labels, which is a natural fit for the WeChat-shaped use case and a wall for anyone else.

Verdict

A tool whose subject matter invites bad engineering and mostly does not get it: banded confidence, an explicit “insufficient” state, evidence rules that keep conclusions from becoming inputs, and honest documentation about where the text goes.

What it cannot fix is the premise. You are sending someone else’s messages to a third party to be scored, and no amount of careful design changes that — the README says as much, and so do we.

For the same emotional-analysis shape applied to your own writing instead, see Vibe Check for X; for a general document classifier, jevmeter.

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

Review updated Sep 21, 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.