jev-codebook
Applies a qualitative codebook to open-ended survey answers and reviews with Jev, exporting uncertain rows for human review.
Overview
jev-codebook, documented in French, English and Spanish, applies a qualitative research codebook to open-ended text such as survey answers and reviews at scale using Jev. Each response is coded against the codebook's categories, and uncertain rows are kept for people rather than labelled automatically; the top candidate and probability are hints for the reviewer, not a final label.
The review workflow is designed to be auditable. A review-export command produces a CSV of uncertain messages, and the apply step re-imports human annotations while checking fingerprints of both the row and the codebook, rejecting stale reviews, retaining extra columns and writing a separate audit log, without changing the original text or probabilities. Examples run on a synthetic support fixture, including a round trip that exports one uncertain row, applies a simulated human annotation and closes the review.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which codebook code applies to this response?(inferred) | — |
| Yes / no | Is this row too uncertain to code automatically?(inferred) | yes · no |
How it works
- Define a codebook
- Jev codes each open-ended response
- Export uncertain rows to a review CSV
- Humans annotate; re-import with fingerprint checks
- Keep an audit log
Strengths
- Human review built in for uncertain rows
- Fingerprints prevent stale or mismatched reviews
- Multilingual documentation
Caveats
- Examples use synthetic data
- Accuracy on real codebooks not reported in the excerpt
Getting started
`python3 -m examples.review_export` to produce a review CSV from the synthetic fixture.At a glance
- Type
- Project
- Status
- prototype
- Language
- Python
- Runtime
- CLI and library
- Has code
- yes
Use cases and integrations
How curated lists describe it
Qualitative coding at scale with Jev: apply a codebook to open-ended text…
wh000wh000/awesome-jev-live
Frequently asked questions
What does Jev decide?
Which codebook code fits each open-ended response.
What happens to uncertain rows?
They are exported for human review; the top candidate is only a hint.
How are reviews kept consistent?
Row and codebook fingerprints are checked and stale reviews rejected.
Related projects
Chinese tool that scans a Bilibili video's comments for rhetorical moves, with eight labels and quoted evidence, optionally via Jev.
ProjectprototypeJavaScriptdbt package whose macros run Jev Choice, Noul and Score over SQL values in DuckDB and ClickHouse models.
ProjectbetaSQL (Jinja)DuckDB extension that asks Jev about every row in SQL and returns answers as ENUM, DOUBLE or STRUCT columns.
PluginbetaC++Python and Node library that classifies Hugging Face dataset rows on typed Choice, Score and Noul dimensions using Jev.
ProjectbetaPython, TypeScriptCodex plugin for batch labelling JSONL records with Jev under custom policies, with Codex reviewing uncertain labels.
MCP serverbetaTypeScriptMoves a coding agent's bulk semantic judgments (triage, tagging, routing) to Jev; an A/B reports 78% fewer tokens at similar accuracy.
ProjectbetaPython