Probative Labs
Measure what AI actually changed. Probative Labs compares real work outcomes with what would have happened without the AI, checks that quality held, and turns the difference into an ROI range with an evidence grade that a CFO can defend.
This repository is the open-source measurement engine. v1 covers the IT service desk.
Website · Sample evidence pack · Run a pilot on your own data
$ probative demo
AI agent assist (simulated) changed agent hours per ticket by -0.11 h per ticket (-12%; 95% range -0.13
to -0.09 h, -14% to -11%). Evidence grade B. Guardrails: all pass. Cash ROI 7% to 79% (P10 to P90).
Planted truth: -0.111 h per ticket (-12.3% after the learning curve). Estimate: -0.110 h [-0.126, -0.093].
Why
Most AI ROI figures are estimates: usage × assumed minutes saved × an hourly rate. Careful studies show the same kind of tool can be strongly positive, zero or negative, and people cannot tell which by feel. In METR's randomized trial, experienced developers took 19% longer with AI while believing they were 20% faster.
Probative Labs answers four questions for every AI program, the same way every time:
- Did it change outcomes? A comparison-group design estimates what would have happened anyway.
- By how much, and how sure are we? Every effect has a range from resampling whole teams, plus diagnostics and an evidence grade (A to E).
- Did quality hold? Guardrails (reopens, escalations, satisfaction, false deflection) can block the value entirely.
- Was it worth what it cost? Capacity ROI and cash ROI are reported separately, as P10/P50/P90 ranges.
Quickstart
Probative Labs needs Python 3.12 or newer.
pip install probative-labs # or: uv tool install probative-labs
probative demo --open
probative demo simulates a 40-team service desk with a known, planted AI effect. The data includes deflection, seasonality, a staggered randomized rollout and messy records. The demo then measures it end to end and opens the evidence pack, so you can check the estimate against the truth.
Measure your own program
probative init # writes probative.yaml (ServiceNow field mapping by default)
probative health # data quality and field mapping report
probative plan power -c probative.yaml --effect -0.10 # is the rollout big enough to measure?
probative plan waves teams.csv --waves 3 --start 2026-11-02 --holdout 0.2
probative register # lock hypothesis, metrics and guardrails before results exist
probative analyze --open # evidence pack: HTML, Markdown and JSON
You need two files:
- Work units: a ticket export with ID, assignment group, opened and resolved timestamps, and ideally time worked, category, reopen count and survey score. Exports from ServiceNow, Jira Service Management, Zendesk, Freshservice, BMC Helix and Ivanti work as-is with a built-in preset (
probative presets); anything else needs a short column mapping. - Exposure: which team got the AI on which date. A spreadsheet is fine;
probative plan waveswrites one for you.
Virtual-agent sessions are optional and enable verified deflection. See docs/data-model.md and docs/configuration.md.
What you get: the evidence pack
Open the full sample evidence pack (simulated data) or its Markdown version. Make your own with probative demo --open.
One pack per program, in the twelve sections a finance or audit reviewer expects:
- Headline: effect, range, grade, guardrail status, cash ROI range
- The question as registered, and any deviations
- Design: which comparison was used, and why stronger ones were not possible
- Effects: headline and mix-adjusted side by side, by work type
- Effect over time: an event-study chart, including the weeks before rollout
- Quality guardrails
- Diagnostics: pre-trend, placebo dates, placebo outcomes, leave-one-team-out, category drift, power
- Value and ROI: capacity and cash, P10/P50/P90, payback, cost per hour released
- Claimed versus proven: the vendor's number beside the measured one
- Assumptions, with owner and date
- Data lineage: file hashes, row counts, every exclusion and why
- Recommendation: renew, expand, fix or stop, and the reason
The method, briefly
- Compare like with like. Every ticket is typed. When AI absorbs the easy tickets, the average human ticket gets harder and headline resolution time rises even if every type got faster. Probative Labs reports the mix-adjusted effect beside the headline.
- Compare against the right group. Staggered rollouts are estimated with the imputation estimator (Borusyak, Jaravel and Spiess, 2024). Each AI team-week is compared only with data that had no AI, which avoids the known bias of ordinary two-way fixed effects.
- Teams, not tickets, are the unit of uncertainty. Ranges come from a bootstrap of whole teams, stratified by rollout wave, widened by a small-sample correction and a delete-one-team jackknife.
- Check before you believe. The pre-trend test, placebo rollout dates and placebo outcomes share a 5% family-wise error budget. Any failure drops the result to grade D: shown, never added to totals.
- No design, no number. If everyone got the AI on the same day and nobody was held back, Probative Labs says so instead of producing a figure.
Full method: docs/methodology.md. Evidence grades: docs/evidence-grades.md. Validation on planted effects, including zero: docs/validation.md.
Privacy by design
- Person and record identifiers are replaced with keyed HMAC-SHA256 pseudonyms at ingest.
- Free text is used only to type work, then dropped.
- Results are team-level only, and teams below a minimum group size are left out. Probative Labs evaluates AI programs, never people.
- Everything runs locally. No data leaves your machine.
Open source and Probative Labs Cloud
The measurement method and this engine are open source under Apache-2.0, so your data team or auditor can read, rerun and challenge any result. Probative Labs Cloud is the commercial product built on the same engine. It adds what an enterprise needs to run measurement across a whole AI portfolio: live connectors, a hosted portfolio view, the cost ledger, single sign-on and audit logs, renewal memos and board reports. See OPEN_CORE.md for exactly what is where and why.
Status and roadmap
v0.1 is alpha. It covers the IT service desk with staggered and two-group designs. Planned next:
- Randomized holdout analysis
- Synthetic control and interrupted time series
- Effect breakdowns by tenure
- Software engineering, customer service, security and finance playbooks
Breaking changes are possible before 1.0.
Contributing
Issues and pull requests are welcome. Method changes must come with validation on simulated data; see CONTRIBUTING.md. To report a security issue, see SECURITY.md.
License
Apache License 2.0. See LICENSE and NOTICE. "Probative Labs" is a trademark of its author; the license does not grant rights to the name.
Metadata
Release files for probative-labs 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 | |
|---|---|---|---|
| probative_labs-0.1.0.tar.gz | 90.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| probative_labs-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 194.0 kB
Release files / probative_labs-0.1.0.tar.gz
| Download URL | probative_labs-0.1.0.tar.gz |
|---|---|
| Size | 90.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
114aa44283fafd8dbbf959b9111c9266dbc9d774fabe570f269cc9d7688d91ed
|
|
BLAKE2b-256 checksum How to use checksums |
2cf89ead24e19f72232330505d7ce5aa2457ad9f0214fade25cd20c16d0964ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency logRelease files / probative_labs-0.1.0-py3-none-any.whl
| Download URL | probative_labs-0.1.0-py3-none-any.whl |
|---|---|
| Size | 103.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9f4063f53956312f1232f5ffa0bfca1ecc2e33210be298c79b12a599945eb13f
|
|
BLAKE2b-256 checksum How to use checksums |
ba32e675773b973f5590a931c9be48b5b404f8750098703cdb503d6a283a10cc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 14, 2026.
Transparency log