AI-decision-maker
SignalChain: data-cleaning framework where Jev Choices classify CSV columns and dataset scenes, and local scripts do all the writing.
Overview
SignalChain (repository ai-decision-maker) is a Chinese-language data analysis framework built on the idea that AI decides and programs execute. It has two chains: field recognition for cleaning (is this column gender, age, amount, email?) and categorical-variable analysis (is this variable categorical, and is it ordered?), which then picks statistical methods in R.
Only field names, types and sample values go to the model, never raw data, and outputs are strictly validated. By default a general LLM (DeepSeek) does the judging; with the optional System One path, Jev answers Choice questions mapping columns to a 13-code type vocabulary and each dataset to one of six scenes, collapsing two AI round trips into one with probabilities per field. Results are cached by schema fingerprint. The list summary notes the author measured Jev at 6.6 to 12.7 times an LLM's token cost on this task, because the LLM's output was already one character while Jev's per-question criteria repeat.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which data scene is this dataset? | S0-S5 (e.g. medical, finance, user, log, geo) |
| Choice | Which field type is this column? | 13-code type vocabulary |
How it works
- Profile the CSV: names, types, sample values
- Fingerprint and check the cache
- Jev (or the LLM) picks a scene and per-column types
- Local scripts clean the data and write output
Strengths
- Raw data never leaves the machine
- Cache skips AI calls for known schemas
- Probabilities and confidence per field on the Jev path
Caveats
- Author measured Jev as more expensive in tokens than the LLM for this task
- Docs in Chinese; categorical analysis needs R
Getting started
pip install pandas openai openpyxl, copy config.example.py to config.py, then python run_clean.py (add --system1 for Jev).At a glance
- Type
- Project
- Status
- prototype
- Language
- Python
- Runtime
- CLI (optional R)
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Data cleaning: asks Jev `Choice` questions to classify CSV columns into a 13-code type vocabulary and each dataset into one of six scenes, then executes every write locally; measured Jev at 6.6–12.7× an LLM's token cost on this task because the output is already one character while per-question criteria repeat.
yibie/awesome-jev
Frequently asked questions
What does Jev decide?
The dataset's scene and each column's type, as Choice questions.
Is Jev cheaper here?
Not on tokens: the author measured 6.6-12.7x an LLM's token cost because per-question criteria repeat.
Is Jev required?
No, it is optional; the default path uses a general LLM.
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++dbt package and Terraform module adding jev_noul, jev_choice, jev_score and jev_ask SQL functions to Snowflake.
LibrarybetaSQLPolars 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.
CLIbetaPython