Every AI team says its feature is getting better. EvalPal shows how many test cases exist and how many each version passes, on one chart that reads the same for every team.
Your test content never leaves your machine. You send case IDs, fingerprints and pass or fail.
A pass rate can rise because the product improved, or because the test changed. Most reports don't let you tell which. These are the three ways numbers drift, and what EvalPal does about each.
Cases can be added, never quietly removed. A removal needs a written reason, is marked on the chart in red, and stays in the ledger for good.
The denominator is always on screen. Bars show the size of the test set every day, so a dip after 50 new hard cases reads as honest work, not a regression.
Old versions keep being scored. Each version is a line on the same set, so progress shows as a gap you can see, not a claim.
How many cases existed that day. It grows as your team finds new failures in production.
How many of that day's cases a pipeline version passed. Skipped cases count as failed.
New set versions, removals and edits are labelled on the day they happened.
Under every chart: removals, edits, skipped cases and backfilled history, spelled out.
Each upload, new case, edit and removal becomes an entry in an append-only ledger. Every entry carries the SHA-256 hash of the one before it, so changing history breaks the chain. EvalPal records each chain's head every hour.
Anyone with the dashboard link can open the verify page. It downloads the ledger, recomputes every hash and rebuilds the dashboard numbers in their own browser.
Sign up with an email and password. Name the product you evaluate and you get an upload key.
After your eval harness runs, send one JSON document per feature: version, case IDs, fingerprints, pass or fail.
Turn on sharing and send the dashboard to whoever needs it. They can view and verify. Nothing else.
# after each eval run curl https://evalpal.io/v1/runs \ -H "Authorization: Bearer $EVALPAL_KEY" \ -H "Content-Type: application/json" \ -d '{"feature": "allergen-check", "pipeline_version": "v3.0", "cases": [{"id": "ac-0001", "fingerprint": "sha256:9f2c…", "pass": true}, …]}'