Skip to main content

jev-curate

Support: fuel the next build — Buy Me a Coffee

High-Throughput Synthetic & Pretraining Dataset Sifter Powered by TypeSafe AI (Jev)

Beta: v0.2.0 is experimental. Expect rough edges. Please contribute by opening an issue or PR.

Live: jev-curate.vercel.app (measured 24.0 rows/sec single-node on local mock bench examples/bench_mock.rs, 1,500+ cluster target)

PyPI License: MIT TypeSafe AI

By Akash Priyadarshi

Why jev-curate • Quickstart • CLI Reference • Python API • Architecture • Non-Goals • Ecosystem

stars crates.io downloads release


Why jev-curate?

Cleaning 10M to 1B rows of synthetic reasoning data, instruction tuning pairs, or web-scraped corpora is an economic and technical nightmare:

  • Generative LLMs are too slow and expensive: Running Claude 3.5 Sonnet or GPT-4o to judge synthetic rows costs $15,000–$50,000 per billion tokens and crawls at a painful 30–50 rows/sec.
  • Regex heuristics are blind to reasoning flaws: Keyword and regex filters can check syntax, but fail to detect circular reasoning, hallucinated derivation steps, or robotic sycophancy.
  • Context rot from uncompressed inputs: Naively feeding raw data into LLMs causes decision accuracy to crater while burning money on boilerplate text.

jev-curate solves this by piping Parquet/JSONL through TypeSafe AI's Jev model (jev-latest, pin with JEV_MODEL=jev-1.13.0):

  • Single-round-trip rubrics per row: Evaluates all rubric questions concurrently in one HTTP request per row via Jev's speculative parallel fan-out with zero per-question round-trips. Single-node throughput is bounded by TypeSafe's 1,200 req/min (20 rows/sec) limit; horizontal scaling across worker nodes targets 1,500+ rows/sec cluster throughput.
  • ~$4.20 per 100M tokens: Jev bills $0.042/Mtok for input, zero for output. TypeSafe benchmarks System One workflows 444.6x cheaper and 193.6x faster than generative LLMs (source).
  • Mathematical calibration: Receives calibrated probabilities (Noul), ordinal rubrics (Score on a 0 to 4 scale, sent as an ordered list), and categorical choices (Choice), eliminating generative text slop.
  • Zero Rewriting: Emits clean records verbatim without rewriting or altering mathematical formulas.

Quickstart

Install (pick your OS)

OS Rust Python
Linux cargo install jev-curate or gh release download tar.gz pip install jev-curate (manylinux wheel)
macOS cargo install or tar.gz (x86_64 + arm64) pip install (universal2 wheel)
Windows cargo install or zip pip install (win wheel)
# Rust (any OS)
cargo install jev-curate
# or download prebuilt from GitHub Releases

# Python
pip install jev-curate  # no Rust toolchain needed (wheels on PyPI)
# from source: maturin develop  # python feature auto-enabled

# Set your TypeSafe AI key
export TYPESAFE_API_KEY="your-api-key"  # or set TYPESAFE_API_KEY in env

# Filter a Parquet dataset using the math reasoning preset:
jev-curate filter train.parquet \
  --preset reasoning-math \
  --model jev-latest \
  --out ./output/ \
  --concurrency 32
# YAML rubric: --preset rubric.yaml
# Parquet out: --format parquet (opt-in, keeps schema; else jsonl)

Python API

PyO3 bindings (build from source with the python cargo feature):

git clone https://github.com/AkashPriyadarshii/jev-curate
cd jev-curate
maturin develop   # python feature auto-enabled via pyproject.toml
from jev_curate import PyJevCurator

curator = PyJevCurator(api_key="your-api-key", preset="reasoning-math")
# single row
verdict = curator.filter_text("Let x=5... therefore...")  # -> {passed, rejection_reasons, scores, nouls}
# whole file -> ./curated/clean.jsonl + rejected.jsonl + errors.jsonl + manifest.json
stats = curator.filter_file("train.parquet", out="./curated")  # -> {passed, rejected, errors, total}

CLI Reference

jev-curate filter [OPTIONS] <INPUT_PATH>

Flag Default Description
<INPUT_PATH> Required Path to input .parquet or .jsonl file.
-p, --preset reasoning-math Pre-built rubric (reasoning-math, anti-sycophancy, code-correctness).
-o, --out ./curated/ Destination folder for clean.jsonl and rejected.jsonl.
-c, --concurrency 32 Worker concurrency (adaptive token bucket prevents 429 rate limits).
--dry-run false Host pre-filtering only, no API calls (no TYPESAFE_API_KEY needed).
--model jev-latest Jev model (or JEV_MODEL env, pin jev-1.13.0 for repro).
--format jsonl Output format: jsonl or parquet (opt-in, preserves schema).
--endpoint None Custom API endpoint URL for offline mock testing (or set TYPESAFE_ENDPOINT).

Presets

Preset Primitives Evaluated Target Problem Solved
reasoning-math has_circular_reasoning (Noul)
reasoning_depth (Score 0-4, keep 2.0 or higher)
Drops ungrounded math derivations and repetitive circular proofs.
anti-sycophancy is_sycophantic (Noul)
has_ai_disclaimer (Noul)
Eliminates "As an AI...", ungrounded flattery, and conversational filler.
code-correctness has_stub_placeholders (Noul)
code_quality (Score 0-4, keep 2.0 or higher)
Drops incomplete code blocks and unrunnable pseudo-code mocks.

Build & Test

# Rust core
cargo build --release
cargo test

# Python bindings (via maturin)
maturin develop
pytest

All tests run against an in-process mock server with zero live API credits in CI.


Architecture

jev-curate/
├── Cargo.toml                 # Rust core manifest (arrow, parquet, tokio, pyo3, clap, reqwest, serde)
├── pyproject.toml             # Maturin Python package manifest
├── src/
│   ├── lib.rs                 # PyO3 module bindings & crate entry
│   ├── main.rs                # Standalone CLI binary entrypoint
│   ├── client.rs              # TypeSafe AI HTTP client (speculative fan-out)
│   ├── filter.rs              # Host-side sanity pruning & Jev pipeline
│   ├── parquet_io.rs          # Batch-decoded Parquet reader + buffered JSONL writer (clean/rejected/errors)
│   ├── rate_limiter.rs        # Request rate limiter with auto 429 backoff
│   └── presets.rs             # Pre-built post-training evaluation rubrics
└── tests/
    └── mock_test.rs           # In-process mock tests via typesafe-rs-mock (100% offline)

Non-Goals

  1. Not a Generative Re-writer: jev-curate never paraphrases or re-generates text. Data is kept 100% verbatim.
  2. Not a Heavy Local Vector DB: No embeddings, no vector indices, zero PyTorch/CUDA runtime requirements.
  3. Not a Generic Web Scraper: Tailored strictly for structured datasets (Parquet, Arrow, JSONL).

star history

Mandatory Ecosystem, Author & Social Directory

Ecosystem

Author

Social


Built with high-performance Rust for the TypeSafe AI System One (Jev) ecosystem.

Keywords: TypeSafe AI, Jev, api.typesafe.ai, System One, Choice, Score, Noul, dataset curation, synthetic data filtering, pretraining datasets, Parquet streaming, arrow, rust.

Metadata

Release files for jev-curate 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jev-curate 0.2.0
File Size Uploaded Provenance Actions
jev_curate-0.2.0.tar.gz 278.9 kB Without provenance Details for jev_curate-0.2.0.tar.gz

Release files / jev_curate-0.2.0.tar.gz

Download URL jev_curate-0.2.0.tar.gz
Size 278.9 kB
Tags Source
SHA-256 checksum
How to use checksums
557caaf1018d826be24af38002f6a2fe82cea5c631d0bac9fe2a750cef72c35f
BLAKE2b-256 checksum
How to use checksums
849db124aa4f6d631c1fb73dfcd1651758d832732eb23751237413f52d7a5ebf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

Security for jev-curate 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page