Skip to content

sieve

Node tool that crosschecks a folder of Markdown notes for contradictions and repeats, and ranks notes by any question, using Jev.

ProjectbetaMIT

Overview

Sieve checks a folder of Markdown notes, such as research notes, briefs, a blog or a knowledge base, against itself. crosscheck compares every note with every other from both sides and lists contradictions, pairs making the same point twice, and notes at odds with several others (often a sign an old note is stale). ask puts one plain-English question to every note and ranks the folder by probability. Other commands show how notes relate to one note, compare question wordings, narrow follow-ups, lint notes against plain-English rules with an exit code for CI, and route or evaluate against labels.

Jev answers every question with a typed answer and probability and never writes text, so there is no index or embedding. In the README's demo, crosscheck of 60 items (1,770 pairs, 3,540 judgments) took 240 requests, about $0.05 and 4.6 s, and ask over a 1,140-item notebook takes 2-3 seconds for about 2.5 cents. Every run is estimated before spending and crosscheck stops at a budget. Jev is reached through OpenRouter (no TypeSafe account needed) or a compatible local model. It is plain Node with no dependencies.

What the decision model decides

TypeQuestionAnswers
ChoiceDo these two notes contradict each other, make the same point, or neither?(inferred)contradicts · same · neither
Yes / noPlain-English question asked of every note (for ranking)—
Yes / noDoes this note break the lint rule?—

How it works

  1. Point Sieve at a folder of Markdown
  2. Estimate cost, then ask Jev about every pair or every note
  3. Rank or threshold by probability, surfacing the uncertain middle
  4. Report contradictions, repeats, rankings or lint failures

Strengths

  • No index or embeddings to maintain
  • Cheap: about $0.05 for 3,540 judgments in the demo
  • Budget and cost estimate before running
  • No dependencies

Caveats

  • Pairwise crosscheck grows quadratically with folder size
  • Note text is sent to OpenRouter unless using a local model

Getting started

Clone the repo, echo "OPENROUTER_API_KEY=sk-or-..." > .env, then node sieve.cjs crosscheck --config examples/research-notes/crosscheck.config.json.

At a glance

Type
Project
Status
beta
Language
JavaScript
Runtime
Node 20.6+ CLI
Has code
yes
License
MIT

Use cases and integrations

How curated lists describe it

  • Sieve checks a folder of Markdown notes against itself. Crosscheck compares every note with every other, from both sides, and lists the pairs that contradict each other, the pairs that make the same point twice, and the notes that have gone stale. It also ranks the whole folder by any plain-English question, and lints notes against plain-English rules in CI. No index, no embeddings, no generated text. Node, no dependencies.

    logicrw/awesome-jev-projects

Frequently asked questions

What does Jev decide in Sieve?

Whether pairs of notes contradict or repeat each other, and the answer to your question for each note.

Do I need a TypeSafe account?

No; any OpenRouter key works, or a compatible local model.

How much does it cost?

The README reports about $0.05 for a 60-note crosscheck.

Related projects

  • CLI and agent skill that checks every line of a document against every rule with Jev and outputs flags for an AI agent to fix.

    Agent skillbetaTypeScript
  • Ruff-style prose linter whose semantic rules each ask Jev a yes/no question about a paragraph, title or section, with tunable thresholds.

    ProjectbetaPython
  • Prose linter for AI writing tells: regex handles 18, Jev judges 15 as Nouls in one call, shipped as a Claude Code Stop hook.

    HookbetaPython
  • Prose linter with local regex rules and Jev judgment rules per paragraph, as CLI, pre-commit hook, GitHub Action and Claude Code skill.

    CLIbetaTypeScript
  • CLI design and copy linter: mechanical checks block commits, while fuzzy taste checks go to Jev for probability-scored review notes.

    CLIbetaTypeScript
  • Chinese controlled-writing agent skill for technical reports with nine rules, using static checks plus a Jev semantic gate for certainty.

    Agent skillbeta