Skip to content

Phase 2: first live eval run (OpenAI) + blank-key provider selection - #4

Merged
RATCHAW merged 1 commit into
mainfrom
RATCHAW/evals-first-live-run
Jul 12, 2026
Merged

Phase 2: first live eval run (OpenAI) + blank-key provider selection#4
RATCHAW merged 1 commit into
mainfrom
RATCHAW/evals-first-live-run

Conversation

@RATCHAW

@RATCHAW RATCHAW commented Jul 12, 2026

Copy link
Copy Markdown
Owner

What & why

The first live provider run for extractkit — validating core's real extraction path end-to-end and publishing the first benchmark numbers (which until now the README explicitly said were unpublished).

Benchmark — OpenAI on CORD-v2 receipts (25 docs)

Model Field accuracy Grounding hit@0.5 Mean IoU Cost / 1k docs
gpt-5.6-sol 94.1% 82.5% 66.5% $57.99
gpt-5.6-luna 88.0% 51.8% 46.8% $11.91
gpt-5.4-mini 84.7% 0.4% 1.4% $4.77

Headline (the auditability story): gpt-5.4-mini gets 84.7% of values right but grounds almost nothing (0.4% hit@0.5) — cheap answers you can't audit. The two larger tiers ground properly. Exactly what a grounding benchmark exists to surface.

Actual run cost: $1.87 across 75 extractions (list-price token pricing). Full per-field breakdown in docs/benchmark.md. Numbers come only from the committed run record (packages/evals/results/run-2026-07-12T…json) — no hand-entered stats.

Changes

  • First live eval run committed: run record + docs/benchmark.md + README benchmark table, generated via pnpm report.
  • packages/evals provider selection: treat an empty API key as unset in selectProviders, matching the playground's resolveModels. A blank KEY= line in .env no longer triggers a doomed run against an uncredentialed provider; a blank EVAL_PROVIDERS falls back to key auto-detection. Tests added.
  • Docs synced (README, ROADMAP, CLAUDE.md) to the honest scope: OpenAI + receipt half only.

Still open (called out in the docs, not silently)

  • Anthropic and Gemini lineups (set their keys, re-run pnpm run-eval).
  • DocILE invoice half (blocked on a free dataset token).
  • Playground demo GIF.

Test plan

pnpm build && pnpm typecheck && pnpm test — all green locally (core 53, evals 50, playground 50 = 153 tests); mirrors CI.

🤖 Generated with Claude Code

Run the OpenAI lineup (gpt-5.6-sol, gpt-5.6-luna, gpt-5.4-mini) over the 25
pinned CORD-v2 receipts, commit the run record as the reproducible audit trail,
and generate docs/benchmark.md + the README benchmark table via `pnpm report`.
Numbers come only from the recorded run. Headline: gpt-5.4-mini reaches 84.7%
field accuracy but ~0% grounding — values right, provenance unusable.

evals: treat an empty provider API key as unset in selectProviders, matching the
playground's resolveModels, so a blank `KEY=` line in .env no longer triggers a
doomed run against an uncredentialed provider; a blank EVAL_PROVIDERS falls back
to key auto-detection. Adds tests for both.

Sync README/ROADMAP/CLAUDE.md to the honest scope: the live run covers OpenAI on
the receipt half only; the Anthropic and Gemini lineups and the DocILE invoice
half are still pending.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@RATCHAW
RATCHAW merged commit 1974457 into main Jul 12, 2026
1 check passed
@RATCHAW
RATCHAW deleted the RATCHAW/evals-first-live-run branch July 12, 2026 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant