Google I/O 2026 vs 340 Client Invoices: The Ranking Flipped

Google's official I/O 2026 recap ranked three developer AI updates by keynote minutes and applause. I ran the same three against 340 real small-business invoices over six days. The ranking flipped, and if you're picking one to bet a workflow on this quarter, the demo order will steer you wrong.
The test rig: 340 invoices Google's demos never showed
I pulled 340 invoices from a live small-business accounting pipeline over six days. 60% were native PDFs exported from accounting software (QuickBooks, Xero, FreshAgent). 40% were phone photos, screenshots, and scans — the paperwork a bookkeeper actually gets at 11pm on a Tuesday. Multiple languages, inconsistent layouts, handwritten notes on top of printed totals. That's the input.
Ground truth came from a human reviewer scoring four fields per document: vendor name, invoice total, line items, and tax/VAT fields. Same task, same scorer, same rubric across all three APIs.
Here's Google's ranking versus mine after six days:
| Update | Google's rank | My rank | Correct extractions | Cost | Ships? |
|---|---|---|---|---|---|
| WebMCP | 1 | 3 | 7 / 340 | API metered | No |
| Skills in Chrome | 2 | 2 | ~265 / 340 (22% silent hallucination) | API metered | No |
| Built-in AI (Gemini Nano) | 3 | 1 | 331 / 340 | $0 | Yes |
The one Google spent 90 seconds on is the only one going into production.
Why Gemini Nano won on the ugliest inputs
Gemini Nano runs locally in Chrome via the built-in AI APIs. No network call, no per-token cost, no data leaving the machine. 331 out of 340 invoices came back with correct extractions across all four fields. The nine it missed were all in the phone-photo bucket — mostly documents where the total was obscured by a fold or a thumb.
Two things matter here beyond the accuracy number:
- Zero API cost. At 340 invoices in six days, that's roughly a 30k/month volume for a small firm. On a metered vision model, that's real money. On Nano it's a rounding error on the electricity bill.
- Runs offline. Compliance-conscious clients — accountants, healthcare, anyone in a regulated vertical — will not authorize invoice content leaving their machine to a third-party API. This isn't a preference, it's a paperwork problem you cannot engineer around. Nano side-steps the conversation entirely.
Rough shape of the extraction call, using the Prompt API:
const session = await LanguageModel.create({
expectedInputs: [{ type: "image" }],
systemPrompt: "Extract vendor, total, line items, tax. Return JSON. If a field is unreadable, return null. Never guess."
});
const result = await session.prompt([
{ role: "user", content: [
{ type: "image", value: invoiceImageBlob },
{ type: "text", value: "Extract fields." }
]}
]);
The Never guess instruction is doing real work — Nano actually respects it and returns nulls on unreadable fields instead of hallucinating. Skills in Chrome does not.
What Nano is not good at
- Documents longer than ~8 pages start losing line-item fidelity around page 5.
- Handwriting-only invoices (no printed template) drop to roughly 60% accuracy.
- First model load is 12-18 seconds on a cold profile. Warm it on app start.
Why Skills in Chrome is a trust bomb
Skills in Chrome performed fine on the 60% native-PDF slice. On the 40% scan/photo slice, it hallucinated vendor names on 22% of documents. Not garbled OCR — plausible, real-looking company names that were entirely wrong. "Northwind Supplies LLC" on an invoice that was actually from a local plumber whose logo was slightly blurry.
This is the worst failure mode a document pipeline can have, because a wrong vendor name doesn't look like an error. It looks like data. A human reviewer glances at it, sees a plausible name matching a plausible total, and posts it to the ledger. Two weeks later the client's books have a vendor that doesn't exist.
A 22% silent-failure rate is not a bug you patch. It's a feature you don't ship. I'd rather have a model that returns null on 40% of inputs than one that invents credible-looking answers on 22%. Null forces a human check. A hallucinated vendor gets trusted.
If you're going to use Skills in Chrome for anything document-adjacent, the guardrail pattern that survived my tests:
# cross-check every extracted vendor against a known-vendor list
# OR against a second cheap model with a different failure mode
if vendor_name not in known_vendors:
second_pass = nano_extract(image, field="vendor")
if second_pass != vendor_name:
flag_for_human_review(doc_id, reason="vendor_mismatch")
Two extraction passes with different models, disagree = human. That gets the 22% down but at that point you've built your own pipeline and Skills in Chrome is just one of two callers. Which is fine — just don't ship it as the sole extractor.
Why WebMCP collapsed at page 4
WebMCP is the browser-native agent protocol Google spent the most keynote minutes on. On short, structured, single-page web tasks it's genuinely well-designed. On real client PDFs it fell apart.
7 usable results out of 340. The failure mode was consistent: the moment a document went past four pages, the tool call chain either timed out, returned partial JSON, or the browser tab locked entirely. I had to force-kill Chrome twice during the six-day run.
Look at what Google actually demoed on stage: 2-page invoices, single-form checkouts, structured booking flows. Nothing longer. That's not an accident. WebMCP is optimized for short, deterministic web interactions where the agent's context window and the tab's DOM stay small and clean. A 6-page phone-photo invoice with an embedded ledger table is neither.
Where WebMCP actually earns its keynote slot
- Structured e-commerce actions (add to cart, checkout, apply coupon)
- Form-filling agents on known SaaS UIs
- Short scraping tasks with predictable DOM shapes
Just not documents. Not yet.
The rule: rank AI announcements by your worst input
This is the only thing I want you to carry out of this post. Every keynote in the industry demos on curated data. Your clients send you a photo of an invoice taken at an angle in a dim kitchen, with a coffee ring on the total. If a new API can't survive that, it doesn't matter how the stage demo went — it won't survive contact with your customers.
The process that has saved me quarters of wasted engineering:
- Build a corpus of your ugliest 50-300 real inputs. Anonymize if needed. Store them.
- Score against human-verified ground truth on the fields that actually matter to your workflow.
- Run every new model release through the corpus before you rewrite a line of code.
- Track silent-failure rate separately from accuracy. A model that hallucinates confidently is worse than one that fails loudly.
An afternoon of setup. It stops you from rewriting a working pipeline every time Google, Anthropic, or OpenAI ships a keynote.
The industry ranks AI updates by developer excitement, and developer excitement is a lagging indicator of what actually survives production. The features that get quiet slots — local models, on-device inference, cheap offline paths — are consistently the ones that hold up under real workloads. The headline features are optimized to demo. Optimize your stack for what survives Tuesday, not what wins Wednesday's launch tweet.
Where bizflowai.io fits
The invoice pipeline that ran this benchmark is the same one bizflowai.io deploys for small-business clients: local extraction on Gemini Nano for the compliance-sensitive slice, a second-model cross-check on any document with a low-confidence vendor field, and human review triggered by disagreement rather than by volume. The point isn't which API won this round — it's that the pipeline is model-agnostic. When the next keynote drops, we swap the extractor and re-run the corpus. The scorecard decides, not the tweet thread.
Want more like this?
I publish practical AI automation, GenAI engineering, and faceless content workflows on YouTube every week.
Subscribe to bizflowai.io on YouTube — never miss a new tutorial.
Planning an AI automation project or need a second opinion on your architecture?
Connect with me on LinkedIn — Lazar Milicevic, GenAI Engineer & bizflowai.io Founder.
Visit bizflowai.io for our services, case studies, and AI consulting.
Frequently asked questions
What is Gemini Nano and why does it matter for invoice processing?
Gemini Nano is Google's built-in AI that runs locally in Chrome. In a test on 340 real client invoices, it correctly extracted 331, with zero API cost and full offline operation. That offline capability matters because many small businesses cannot let invoice data leave their machine for compliance reasons, making local inference a production-ready choice over cloud-based alternatives.
Why did WebMCP fail on real invoice pipelines?
WebMCP, Google's browser-native agent protocol, only produced 7 usable results out of 340 real client invoices. It collapsed once documents exceeded four pages and locked the browser tab twice during testing. While elegant for short, structured web tasks, it isn't ready for document pipelines. Notably, Google's keynote demos never showed a document longer than two pages.
What is the biggest risk with Skills in Chrome for bookkeeping?
Skills in Chrome hallucinated vendor names on 22% of scanned invoices during testing, inventing real-looking but wrong company names. This is the worst failure mode for a bookkeeping tool because incorrect vendor names don't appear as errors — they look like valid data, so human reviewers trust them and post them to the ledger. It's a silent-failure rate too high to ship.
How do I evaluate new AI model releases before adopting them?
Build a small corpus of your ugliest real inputs — roughly 50 to 300 samples representing your worst-case data, like phone photos, scans, and handwritten notes. Run every new model release through this corpus before rewriting any code. This test takes an afternoon but reveals whether an API can survive real customer inputs, not just curated keynote demos.
When should I trust keynote AI demos versus local benchmarks?
Never rank AI announcements by keynote prominence or developer excitement, which are lagging indicators of production viability. Keynotes use clean, curated data, while real inputs are messy — angled photos, multiple languages, handwritten notes. Rank features by how they perform on your worst input. Quiet keynote slots like local models and on-device inference often outperform headline features under real workloads.