TopicJev
Pipeline that audits and refines topic-model clusters by checking each document against its topic label with a zero-shot decision model.
Overview
TopicJev post-processes the output of topic models such as BERTopic or k-means. It expresses each topic as a label, either its keywords or a short claim like "The text discusses...", and runs a zero-shot entailment or decision model to check whether each document supports it. Supporting documents form the topic's refined core; the rest are flagged as outliers or routed to an "Other" class.
It is aimed at researchers and analysts who care about cluster quality but lack labeled data or large compute budgets. It runs locally on consumer GPUs, Apple Silicon or CPU with compact models, citing System One style models such as Jev and open counterparts such as LAYA as motivation. It also includes document compression for long texts and can do zero-shot taxonomy routing with a confidence gate to "Other".
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Yes / no | Does this document support the topic label?(inferred) | supports · does not support |
| Choice | Which user-defined category does this document belong to, or Other? | — |
How it works
- Take topic-model output and derive a label per topic.
- Score each document against its topic label with a zero-shot model.
- Keep supporting documents as the refined core.
- Route low-confidence documents to Other and compute agreement metrics.
Strengths
- Works without ground-truth labels.
- Runs locally, avoiding API fees and rate limits.
- Compatible with many existing topic-model outputs.
Caveats
- Uses general zero-shot models, not necessarily Jev itself.
- Accuracy depends on the chosen local model.
At a glance
- Type
- Demo
- Status
- research
- Language
- Python
- Runtime
- local (GPU, MPS or CPU)
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
An Efficient Low-Resource Bootstrap for Topic Model Refinement in Zero-Shot Settings.
hellogumbo/awesome-jev
Frequently asked questions
What does TopicJev decide?
Whether each document actually supports its assigned topic label, or belongs in Other.
Does it use Jev?
It is inspired by System One models; the README describes local zero-shot entailment and decision encoders such as LAYA-style models.
Does it need labeled data?
No, it is designed for zero-shot refinement without ground truth.
Related projects
dbt 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++Polars library for parallel LLM inference that also asks Jev per-row Noul, Choice and Score questions through a native Rust layer.
LibrarybetaPythonTabular classifier that learns which slices of labeled rows and columns to send Jev or LAYA, stopping when it has enough.
ProjectresearchPythonSutro's active-learning CLI that finds rows Jev is least sure about, asks you to label them, and uses GEPA to improve the definition.
CLIbetaPythonCLI that scans tabular, structured and text files or databases and asks Jev which fields look anomalous, building a review queue.
CLIbetaPython