Skip to content
MrJev

jsort

Sorts lines along a plain-English dimension by judging them in pairs, so the sort key is a description rather than a field.

View on GitHub →

Checked, not fully reviewed

Sorts lines, files or CSV fields along a phrase like "more urgent" by asking Jev about pairs. Checked, not fully reviewed: slow to fail when the API is down.

Good for

  • Ranking tickets, sentences or documents on a quality you can describe but not easily score
  • Adding a score and standard error column to a CSV or JSONL file without reordering it
  • Placing new texts on a saved scale, with a check that the same model is still answering

Watch out for

  • If the API is down and a budget is set (the default), failing comparisons are sent one at a time, so a run takes far longer to give up
  • When every comparison fails it still prints the input, unsorted, and exits 2; check the exit status in scripts
  • A saved scale file holds its anchor texts word for word, so sharing it shares them

Tested Oct 29, 2026 at 6a402c90e046 · python:3.12-slim in Docker on 2 CPU cores and 6 GB; its test suite from the repo (jevkit-runtime 0.4.2 from uv.lock), and the published jev-sort 0.5.1 (jevkit-runtime 0.4.3) against a local stand-in for /v1/systemone through the runtime's JEV_URL setting

Checked, not fully reviewed. We ran its test suite, and ran the published jev-sort 0.5.1 in Docker against a local stand-in for Jev. The stand-in answered from a hidden score we tagged in each line, so we knew the right order. No Jev calls. The README’s benchmarks, timings and costs are the author’s.

jsort sorts lines, paragraphs, files, or one CSV or JSONL field along a description such as “more urgent”. It shows Jev two texts at a time with one noul question, “Text A ranks higher than text B on this criterion”, and fits a Bradley-Terry scale to the answers. Each request carries only the two texts, cut to --max-chars, and the question. The other CSV columns were never sent. The key comes from the environment or ~/.config/jev/, goes only in the Authorization header, and is not written to the cache.

What we saw. 156 tests passed. It put our 20 lines in the hidden order and answered a rerun from the cache. A saved scale placed new lines, and refused when the stand-in began naming a different model. Bad JSON, missing or out-of-range answers and a redirect were reported as failed comparisons. A 401 or 402 stopped the run. When every third request got a 503, it retried and finished. Two rough edges. With the API down, the budget holds requests back until one has been charged, so comparisons went one at a time: 20 lines took nearly three minutes to fail, against 17 seconds with --budget none. And the error says “gave up after 15s” when it stopped after four attempts.

The HTTP, cache and budget code is in jevkit-runtime, the author’s shared library, also used by jgrep. MIT. 28 stars.

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

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

More in Command-Line Tools

jevgrep (dzhng)

★ 3.1k▲ 239

dzhng/jevgrep

Finds code by what it does rather than what it matches: a CLI for coding agents that asks which files and which regions are relevant to a description. Unrelated to the JevGrep above, which has the same name.

TypeScriptReviewed

webctl

★ 163▲ 1

dorkitude/webctl

Search CLI for agents: results from up to three backends are scored by Jev against your query and an explicit --goal, and only the relevant ones reach the agent's context. Its benchmark excludes an arm it could not observe.

GoReviewed

sys1grep

★ 150

uehaj/sys1grep

Greps by meaning rather than pattern, scoring every line against a description and combining meanings with AND, OR and NOT; a single dependency-free Node file. Japanese and English. Formerly jev-semgrep.

JavaScriptReviewed

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.