jevframe
pandas and Polars .jev accessor for classifying, sentiment-scoring and grading DataFrame rows with Jev probabilities.
Overview
jevframe is a Python library for text classification, sentiment analysis and scoring inside pandas and Polars DataFrames. Importing an integration registers a .jev accessor that asks natural-language questions about each row using TypeSafe Jev and returns structured results with complete probability distributions as ordinary Series and DataFrames, preserving row order and pandas indexes. Typical uses are labelling customer reviews, categorising support tickets, flagging urgent messages and grading answers against a rubric.
The request is built only from the columns you name, nothing else in the row, and a failed row raises naming the row rather than silently becoming a null. Several questions can be evaluated together per row, with bounded async concurrency and optional caching. It uses the official typesafe-sdk for inference, requires Python 3.10+, and keeps DataFrame libraries optional. An interactive marimo notebook demo includes an anatomy-of-a-request view and runs without a key thanks to cached example results. It is on PyPI with CI and an MIT licence.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which category does this ticket or review belong to?(inferred) | — |
| Yes / no | Is this message urgent?(inferred) | — |
| Score | How well does this answer meet the rubric?(inferred) | — |
How it works
- Install with pandas or Polars extra and set the key
- Call the .jev accessor naming input columns and questions
- Rows evaluated with bounded concurrency and optional cache
- Results returned as Series or DataFrame; failed rows raise
Strengths
- Native DataFrame results with probabilities
- Explicit column selection limits data sent
- Fails loudly instead of silent nulls
- Keyless cached demo
Caveats
- Early 0.1.0 release
- Costs scale with rows and questions
Getting started
uv add 'jevframe[pandas]==0.1.0' and export TYPESAFE_API_KEY.At a glance
- Type
- Demo
- Status
- beta
- Language
- Python
- Runtime
- pandas / Polars library
- Has code
- yes
- Has tests
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Semantic AI for pandas and Polars: classify text, analyze sentiment, and score DataFrame rows with natural-language questions and full probabilities using TypeSafe Jev.
logicrw/awesome-jev-projectsSemantic AI for pandas and Polars: classify text, analyze sentiment, and score DataFrame rows with natural-language questions and full probabilities using TypeSafe Jev.
hellogumbo/awesome-jevA `.jev` accessor for pandas and Polars: the request is built from the columns you name and nothing else in the row, and a failed row raises naming the row instead of becoming a null.
MrJev/awesome-jev
Frequently asked questions
What data is sent to Jev?
Only the columns you name for each row.
What happens if a row fails?
It raises an error naming the row rather than becoming a null.
Does it support Polars?
Yes, via the polars extra.
Related projects
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 serverbetaTypeScriptPolars library for parallel LLM inference that also asks Jev per-row Noul, Choice and Score questions through a native Rust layer.
LibrarybetaPythonLive race labelling 1,000 app reviews with four typed Jev questions versus Gemini 3.8 Flash JSON output.
AppprototypeJavaScriptPipeline that ingests Google Maps restaurant reviews and classifies sentiment, five rating pillars and flags with Jev or an LLM.
ServiceprototypeTypeScriptPython library with a TypeScript port that turns Jev questions into functions over lists and DataFrames, with caching and escalation.
LibrarybetaPython, TypeScript