jev-curate
High-Throughput Synthetic & Pretraining Dataset Sifter Powered by TypeSafe AI (Jev)
Live: jev-curate.vercel.app (measured 24.0 rows/sec single-node on local mock bench examples/bench_mock.rs, 1,500+ cluster target)
Why jev-curate • Quickstart • CLI Reference • Python API • Architecture • Non-Goals • Ecosystem
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 Apache Arrow and Parquet streams through TypeSafe AI's 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 (Score1–5), and categorical choices (Choice), eliminating generative text slop. - Zero Rewriting: Emits clean records verbatim without rewriting or altering mathematical formulas.
Quickstart
CLI (Rust Single Binary)
# Install via Cargo
cargo install jev-curate
# Set your TypeSafe AI key
export TYPESAFE_API_KEY="your-api-key"
# Filter a Parquet dataset using the math reasoning preset:
jev-curate filter train.parquet \
--preset reasoning-math \
--out ./output/ \
--concurrency 32
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")
PyJevCurator currently wraps the same filter pipeline as the CLI (see src/filter.rs); constructor-only for now. Use the CLI for row-level sifting.
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 |
Offline evaluation simulation with host pre-filtering and zero API calls (no TYPESAFE_API_KEY needed). |
--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_logic (Noul)is_step_valid (Noul)reasoning_depth (Score 1–5) |
Drops ungrounded math derivations and repetitive circular proofs. |
anti-sycophancy |
is_sycophantic (Noul)has_robotic_filler (Noul) |
Eliminates "As an AI...", ungrounded flattery, and conversational filler. |
code-correctness |
has_unclosed_fence (Noul)has_stub_placeholders (Noul) |
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 # Streaming Parquet/Arrow reader and writer
│ ├── rate_limiter.rs # Adaptive token-bucket 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
- Not a Generative Re-writer:
jev-curatenever paraphrases or re-generates text. Data is kept 100% verbatim. - Not a Heavy Local Vector DB: No embeddings, no vector indices, zero PyTorch/CUDA runtime requirements.
- Not a Generic Web Scraper: Tailored strictly for structured datasets (Parquet, Arrow, JSONL).
Mandatory Ecosystem, Author & Social Directory
Ecosystem
Author
Social
- X / Twitter • Threads • Instagram • Reddit
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.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| jev_curate-0.1.0.tar.gz | 269.2 kB | Without provenance | Details for jev_curate-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| jev_curate-0.1.0-cp313-cp313-win_amd64.whl | CPython 3.13 | CPython 3.13 | Windows x86-64 | Details for jev_curate-0.1.0-cp313-cp313-win_amd64.whl |
Total release size: 1.7 MB
Release files / jev_curate-0.1.0.tar.gz
| Download URL | jev_curate-0.1.0.tar.gz |
|---|---|
| Size | 269.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d0f9ad461b92e60d3b9aaaa0dc85a8d77622a0229871219432e29241b7f2347d
|
|
BLAKE2b-256 checksum How to use checksums |
971a6f241b0776f64bbdf6057c3e44f7cb1517ca8d3e30de404cafa693c304af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / jev_curate-0.1.0-cp313-cp313-win_amd64.whl
| Download URL | jev_curate-0.1.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
92b53a5a1abd5f2d0048ef49d41711d02a7545bceb64423df566bf7e44c1bcb2
|
|
BLAKE2b-256 checksum How to use checksums |
5279a793b13da1412596b986be7f4cdedc31ae52b6be71e5604c26aea64255f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for jev-curate 0.1.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.