Phase 2: first live eval run (OpenAI) + blank-key provider selection - #4
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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)
Headline (the auditability story):
gpt-5.4-minigets 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
docs/benchmark.md+ README benchmark table, generated viapnpm report.packages/evalsprovider selection: treat an empty API key as unset inselectProviders, matching the playground'sresolveModels. A blankKEY=line in.envno longer triggers a doomed run against an uncredentialed provider; a blankEVAL_PROVIDERSfalls back to key auto-detection. Tests added.README,ROADMAP,CLAUDE.md) to the honest scope: OpenAI + receipt half only.Still open (called out in the docs, not silently)
pnpm run-eval).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