Data Science Agent
The AI data scientist that shows its work.
Ask questions about CSV files and databases in natural language. DSA runs SQL, statistics, machine learning, and visualization, then returns reproducible artifacts with claim-level evidence.
Quickstart · See it in action · Case studies · Evaluation · Docs · Roadmap
Why DSA?
Most AI data-analysis tools stop at the answer.
Data Science Agent is built to preserve the path from a claim back to the computation and dataset that produced it.
Question
↓
Executed analysis
↓
Evidence
↓
Claim
↓
Reproducible report
That means an analysis can be inspected, audited, reproduced, and challenged instead of accepted on confidence alone.
If an AI makes a data-science claim, you should be able to inspect how it got there.
⚡ 60-second quickstart
Install:
pip install jack-data-science-agent
Run the built-in demo:
dsa demo
Analyze your own data:
dsa analyze sales.csv \
--task "Which factors explain revenue, and are the effects statistically significant?"
Python 3.12+ is required.
A successful run produces more than chat output:
analysis run
├── report.md
├── experiment.json
├── evidence_graph.json
├── analysis.ipynb
└── reproduce.sh
| Artifact | Purpose |
|---|---|
report.md |
Human-readable findings |
experiment.json |
Structured run metadata |
evidence_graph.json |
Claim → evidence → computation lineage |
analysis.ipynb |
Inspectable notebook representation |
reproduce.sh |
Re-run the analysis |
See it in action
Question → profile → plan → tools → evidence → critic → reproducible report.
Start with 3 flagship workflows
| Workflow | Ask DSA | What it demonstrates |
|---|---|---|
| Sales analytics | What drives revenue across regions and categories? | SQL + statistics → evidence → reproducible report |
| Time-series forecasting | What are the next 30 values, and how well does the baseline forecast perform? | Forecasting, holdout evaluation, reproducibility, and visible failure recovery |
| ML classification | Can DSA train, evaluate, and explain an imbalanced classifier? | Model evaluation + feature importance inside the same provenance trail |
Browse all 8 verified case studies →
These are verified repository workflows intended to show product behavior and evidence artifacts. They are not presented as independent real-LLM leaderboard results.
What makes DSA different?
1. Claim-level evidence
Supported findings can be connected to the analysis that produced them:
Claim
└── statistical result
└── executed tool
└── parameters
└── dataset SHA-256
2. Reproducibility by default
DSA records run metadata and reproduction artifacts instead of treating the final prose answer as the only output.
3. Evidence-aware critique
A critic stage checks whether conclusions go beyond available evidence. For example, causal language can be rejected when the underlying analysis only supports correlation.
4. Real data-science tools
Core workflows can coordinate:
- dataset profiling and exploratory analysis
- SQL with DuckDB
- statistical testing
- regression and classification
- forecasting and feature importance
- visualization
- report generation
5. One runtime, multiple interfaces
| Surface | Entry point |
|---|---|
| CLI | dsa <command> |
| Python SDK | from data_science_agent import Agent |
| REST API | FastAPI |
| Streaming | Server-Sent Events |
| MCP | MCP server |
| Jupyter | %load_ext dsa_jupyter |
| VS Code | Dataset explorer + analysis replay |
| Plugins | Custom data-science tools |
Python SDK
import asyncio
from data_science_agent import Agent
async def main():
result = await Agent().analyze(
"sales.csv",
"Which region drives the most revenue, and is the trend statistically significant?",
)
print(result.report_markdown)
asyncio.run(main())
Inspect evidence programmatically:
for evidence in result.evidence:
print(evidence.claim)
print(evidence.source_id)
print(evidence.result)
Case study gallery
The repository includes verified end-to-end examples across business analytics, churn, forecasting, marketing, finance, public statistics, data quality, and classification.
Browse the Case Study Gallery →
A useful way to evaluate DSA is to start with the question you would ask about your own dataset, then inspect the generated report and evidence trail.
Evaluation
DSA is developed against versioned benchmark suites rather than relying only on hand-picked demos.
The repository currently contains deterministic benchmark and evaluator-validation results, including frozen task suites and reproducibility checks. These results are useful for regression testing and validating the evaluation harness, but they should not be interpreted as an independent comparison of real LLM model quality unless the run identifies a real model/provider and reproducible configuration.
The current public result registry includes a stub/small validation run. It is intentionally labeled as such so test-harness scores are not confused with real-model performance.
Next evaluation gate: run the merged credentialed four-way real-model smoke workflow, review all raw artifacts for reproducibility, and only then prepare any full-catalog comparative result for publication.
Architecture
flowchart LR
A["Natural-language question"] --> B["Planner"]
B --> C["Data-science tools"]
C --> D["SQL / Statistics / ML / Visualization"]
D --> E["Evidence graph"]
E --> F["Critic"]
F --> G["Evidence-backed report"]
G --> H["Reproduction artifacts"]
The runtime uses a LangGraph-based orchestration layer over typed data-science tools, with local-first data operations built around Python, DuckDB, Polars, SciPy, scikit-learn, and Matplotlib.
DSA vs. typical AI data analysis
| Capability | Chat-with-data tools | Generic coding agents | Data Science Agent |
|---|---|---|---|
| Natural-language analysis | ✓ | ✓ | ✓ |
| SQL / statistics / ML | ✓ | ✓ | ✓ |
| Autonomous workflow | Limited | ✓ | ✓ |
| Dataset hashing | — | — | ✓ |
| Claim-level evidence | — | — | ✓ |
| Evidence graph | — | — | ✓ |
| Reproduction bundle | Limited | Limited | ✓ |
| Evidence-aware critic | — | — | ✓ |
| MCP interface | Varies | Varies | ✓ |
| Plugin runtime | Varies | Varies | ✓ |
DSA is not intended to be only another natural-language interface to a dataframe.
Its focus is verifiable, reproducible AI data science.
Documentation
Start here:
- Getting Started
- SDK & API Reference
- Evaluation
- Benchmarks
- MCP
- Research & Limitations
- Case Studies
- Roadmap
- Changelog
- Releases
Development
git clone https://github.com/Jackxiaozhiren/data-science-agent.git
cd data-science-agent
uv sync --dev
uv run dsa demo
uv run pytest
Static checks:
uv run ruff check .
uv run mypy .
Contributing
Contributions are welcome, especially:
- real-model benchmark baselines
- reproducibility failures
- new datasets and benchmark tasks
- statistical validation improvements
- data-science tools and plugins
- case studies and documentation
New contributor? Start with the good first issue queue.
See CONTRIBUTING.md, ROADMAP.md, and CODE_OF_CONDUCT.md.
Citation, security, and license
- Academic use: CITATION.cff
- Security reports: SECURITY.md
- License: MIT
Ask. Analyze. Verify. Reproduce.
Get Started · Case Studies · Evaluation · Roadmap · Contribute
⭐ If reproducible AI data analysis is useful to you, consider starring the project.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jack_data_science_agent-4.3.0.tar.gz.
File metadata
- Download URL: jack_data_science_agent-4.3.0.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31ca4d0c35b040608d2835b5ed83f6d76fe296e3505003d7ede3e9934ff96267
|
|
| MD5 |
c9a78ba081d02af0bb734dbba42d2db0
|
|
| BLAKE2b-256 |
358fcb869c71c80579ffe9fa235172cb83885fbaa57a413c4f9ed008b1df1e4b
|
Provenance
The following attestation bundles were made for jack_data_science_agent-4.3.0.tar.gz:
Publisher:
publish.yml on Jackxiaozhiren/data-science-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jack_data_science_agent-4.3.0.tar.gz -
Subject digest:
31ca4d0c35b040608d2835b5ed83f6d76fe296e3505003d7ede3e9934ff96267 - Sigstore transparency entry: 2647374964
- Sigstore integration time:
-
Permalink:
Jackxiaozhiren/data-science-agent@80d5c077d91143a219eb36ff1baa1a952fa4857b -
Branch / Tag:
refs/tags/v4.3.0 - Owner: https://github.com/Jackxiaozhiren
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@80d5c077d91143a219eb36ff1baa1a952fa4857b -
Trigger Event:
push
-
Statement type:
File details
Details for the file jack_data_science_agent-4.3.0-py3-none-any.whl.
File metadata
- Download URL: jack_data_science_agent-4.3.0-py3-none-any.whl
- Upload date:
- Size: 176.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7064fa29fd6667bfdab17dd25e2680e1541cc17b74a42310caa9e2467bbeca3
|
|
| MD5 |
ad693efaf3e68b859af8a6e2af17dd0e
|
|
| BLAKE2b-256 |
645de2f43ff30f87a7b293d2203eef8765293731a0cb05ac531821da9bbf77f8
|
Provenance
The following attestation bundles were made for jack_data_science_agent-4.3.0-py3-none-any.whl:
Publisher:
publish.yml on Jackxiaozhiren/data-science-agent
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jack_data_science_agent-4.3.0-py3-none-any.whl -
Subject digest:
c7064fa29fd6667bfdab17dd25e2680e1541cc17b74a42310caa9e2467bbeca3 - Sigstore transparency entry: 2647374968
- Sigstore integration time:
-
Permalink:
Jackxiaozhiren/data-science-agent@80d5c077d91143a219eb36ff1baa1a952fa4857b -
Branch / Tag:
refs/tags/v4.3.0 - Owner: https://github.com/Jackxiaozhiren
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@80d5c077d91143a219eb36ff1baa1a952fa4857b -
Trigger Event:
push
-
Statement type: