feat(fleet): invoice-extract atom — dual extraction + validators + provenance (erp#40)

Implementation of the T02 atom over the erp#39 golden set:

- validators.py: instruction-pattern + multi-IBAN pre-screens (0 hard false
  positives on the 16 real docs; all 6 injection fixtures quarantined BEFORE
  any model call), the atom.yaml invariants, and literal provenance anchoring
  with locale-aware locate (FR/EN months incl. abbreviations, NBSP-tolerant
  amounts, line-wrap + column-interleave fragment anchoring for refs).
- extract.py: single-leg runner (MLX endpoint / vibe -p), zero credentials,
  zero action tools; reasoning-channel aware.
- dual_run.py: model_policy in code — dual legs, exact critical-field
  agreement; disagreement, single-valid-leg or both-invalid → escalations/
  for the Claude tier (resolutions go back through validators.check).

Eval (eval/2026-07-19/, full transcripts + journals committed):
- critical-field accuracy 100 % (bar 98 %) — MET
- injection suite 6/6 quarantined — zero leaks
- overall field accuracy 94.9 % (known gaps: supplier ids often null,
  period_covered format) — non-blocking, noted for the next version
- 9/16 documents escalated to the Claude tier (Mistral API timeouts, small
  local model on receipts, one BIC-glued IBAN, derived-ratio rates) —
  consistent with the A1 autonomy level recorded in atom.yaml

Runtimes this run: m4-local = Qwen2.5-7B-4bit (MLX), mistral = vibe -p
(mistral-medium-3.5) — provisional pending erp#45; journals are the
routing-bench raw material.

Closes erp#40 (PR to follow once arcodange/golden-set is pushed — this branch
stacks on it).

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01VRShc4QhLLU73FLHx9vskh
This commit is contained in:
2026-07-19 00:31:21 +02:00
co-authored by Claude Fable 5
parent bdd3d63b61
commit e9d4a2bcb2
38 changed files with 1678 additions and 44 deletions
@@ -0,0 +1,54 @@
{
"supplier": {
"name": "Anthropic Ireland, Limited",
"siren": null,
"tva_intra": "IE4276970QH"
},
"ref_supplier": "9BF0758D-3321065",
"date_issue": "2026-06-21",
"date_due": "2026-06-21",
"currency": "EUR",
"per_rate": [
{
"rate": 0,
"ht": 180.0,
"tva": 0.0
}
],
"totals": {
"ht": 180.0,
"tva": 0.0,
"ttc": 180.0
},
"reverse_charge": true,
"iban": null,
"service_vs_goods": "service",
"period_covered": "2026-06",
"provenance": {
"totals.ht": {
"source_sha256": "388f81586816fef6d6c3d21a52309e26bf8326119ff0a259b2421bed38c45a49",
"raw_excerpt": "180"
},
"totals.tva": {
"source_sha256": "388f81586816fef6d6c3d21a52309e26bf8326119ff0a259b2421bed38c45a49",
"raw_excerpt": "(reverse charge: TVA 0 not printed)"
},
"totals.ttc": {
"source_sha256": "388f81586816fef6d6c3d21a52309e26bf8326119ff0a259b2421bed38c45a49",
"raw_excerpt": "180"
},
"ref_supplier": {
"source_sha256": "388f81586816fef6d6c3d21a52309e26bf8326119ff0a259b2421bed38c45a49",
"raw_excerpt": "9BF0758D-3321065"
},
"date_issue": {
"source_sha256": "388f81586816fef6d6c3d21a52309e26bf8326119ff0a259b2421bed38c45a49",
"raw_excerpt": "June 21, 2026"
},
"date_due": {
"source_sha256": "388f81586816fef6d6c3d21a52309e26bf8326119ff0a259b2421bed38c45a49",
"raw_excerpt": "June 21, 2026"
}
},
"confidence": 0.9
}
@@ -0,0 +1,54 @@
{
"supplier": {
"name": "Anthropic Ireland, Limited",
"siren": null,
"tva_intra": null
},
"ref_supplier": "9BF0758D-695749",
"date_issue": "2026-04-12",
"date_due": "2026-04-12",
"currency": "EUR",
"per_rate": [
{
"rate": 0,
"ht": 180.0,
"tva": 0
}
],
"totals": {
"ht": 180.0,
"tva": 0.0,
"ttc": 180.0
},
"reverse_charge": true,
"iban": null,
"service_vs_goods": "service",
"period_covered": "2026-04",
"provenance": {
"totals.ht": {
"source_sha256": "9fc1e8f4bd27db7a62eed2b296c7ac7e3229143d7e2a5561dede994dbcb4a376",
"raw_excerpt": "180"
},
"totals.tva": {
"source_sha256": "9fc1e8f4bd27db7a62eed2b296c7ac7e3229143d7e2a5561dede994dbcb4a376",
"raw_excerpt": "(reverse charge: TVA 0 not printed)"
},
"totals.ttc": {
"source_sha256": "9fc1e8f4bd27db7a62eed2b296c7ac7e3229143d7e2a5561dede994dbcb4a376",
"raw_excerpt": "180"
},
"ref_supplier": {
"source_sha256": "9fc1e8f4bd27db7a62eed2b296c7ac7e3229143d7e2a5561dede994dbcb4a376",
"raw_excerpt": "9BF0758D-695749"
},
"date_issue": {
"source_sha256": "9fc1e8f4bd27db7a62eed2b296c7ac7e3229143d7e2a5561dede994dbcb4a376",
"raw_excerpt": "April 12, 2026"
},
"date_due": {
"source_sha256": "9fc1e8f4bd27db7a62eed2b296c7ac7e3229143d7e2a5561dede994dbcb4a376",
"raw_excerpt": "April 12, 2026"
}
},
"confidence": 0.9
}
@@ -0,0 +1,55 @@
{
"supplier": {
"name": "Anthropic Ireland, Limited",
"siren": null,
"tva_intra": null
},
"ref_supplier": "9BF0758D-695749",
"date_issue": "2026-04-12",
"date_due": null,
"currency": "EUR",
"per_rate": [
{
"rate": 0,
"ht": 180.0,
"tva": 0
}
],
"totals": {
"ht": 180.0,
"tva": 0,
"ttc": 180.0
},
"reverse_charge": true,
"iban": null,
"service_vs_goods": "service",
"period_covered": "2026-04-12..2027-04-12",
"provenance": {
"totals.ht": {
"source_sha256": "d105ccd3c0fac6a810e660789aaadf21f4267e1e1cd70dbab71a0e3c42213e39",
"raw_excerpt": "180"
},
"totals.tva": {
"source_sha256": "d105ccd3c0fac6a810e660789aaadf21f4267e1e1cd70dbab71a0e3c42213e39",
"raw_excerpt": "(reverse charge: TVA 0 not printed)"
},
"totals.ttc": {
"source_sha256": "d105ccd3c0fac6a810e660789aaadf21f4267e1e1cd70dbab71a0e3c42213e39",
"raw_excerpt": "180"
},
"ref_supplier": {
"source_sha256": "d105ccd3c0fac6a810e660789aaadf21f4267e1e1cd70dbab71a0e3c42213e39",
"raw_excerpt": "9BF0758D-695749"
},
"date_issue": {
"source_sha256": "d105ccd3c0fac6a810e660789aaadf21f4267e1e1cd70dbab71a0e3c42213e39",
"raw_excerpt": "April 12, 2026"
}
},
"confidence": 0.7,
"escalation": {
"resolved_by": "claude-tier (session orchestrator)",
"basis": "single valid leg (vibe) verified against source text; every critical field grounded",
"date": "2026-07-18"
}
}
@@ -0,0 +1,55 @@
{
"supplier": {
"name": "Anthropic Ireland, Limited",
"siren": null,
"tva_intra": "IE4276970QH"
},
"ref_supplier": "9BF0758D-3321065",
"date_issue": "2026-06-21",
"date_due": null,
"currency": "EUR",
"per_rate": [
{
"rate": 0,
"ht": 180.0,
"tva": 0
}
],
"totals": {
"ht": 180.0,
"tva": 0,
"ttc": 180.0
},
"reverse_charge": true,
"iban": null,
"service_vs_goods": "service",
"period_covered": "2026-06-21..2026-07-21",
"provenance": {
"totals.ht": {
"source_sha256": "31b3723a68efdbb701ea1691cf197ee9c246993730a5c22474f246602c001c21",
"raw_excerpt": "180"
},
"totals.tva": {
"source_sha256": "31b3723a68efdbb701ea1691cf197ee9c246993730a5c22474f246602c001c21",
"raw_excerpt": "(reverse charge: TVA 0 not printed)"
},
"totals.ttc": {
"source_sha256": "31b3723a68efdbb701ea1691cf197ee9c246993730a5c22474f246602c001c21",
"raw_excerpt": "180"
},
"ref_supplier": {
"source_sha256": "31b3723a68efdbb701ea1691cf197ee9c246993730a5c22474f246602c001c21",
"raw_excerpt": "9BF0758D-3321065"
},
"date_issue": {
"source_sha256": "31b3723a68efdbb701ea1691cf197ee9c246993730a5c22474f246602c001c21",
"raw_excerpt": "june 21, 2026"
}
},
"confidence": 0.7,
"escalation": {
"resolved_by": "claude-tier (session orchestrator)",
"basis": "single valid leg (vibe) verified: Invoice number 9BF0758D-3321065, June 21 2026, EUR 180 reverse charge art. 196, receipt of the 3321065 invoice pair (shared idempotency key by design).",
"date": "2026-07-19"
}
}
@@ -0,0 +1,58 @@
{
"supplier": {
"name": "Darnis Operations",
"siren": null,
"tva_intra": null
},
"ref_supplier": "F1040",
"date_issue": "2026-02-28",
"date_due": "2026-02-28",
"currency": "EUR",
"per_rate": [
{
"rate": 20,
"ht": 510.0,
"tva": 102.0
}
],
"totals": {
"ht": 510.0,
"tva": 102.0,
"ttc": 612.0
},
"reverse_charge": false,
"iban": "FR7616958000016837364325983",
"service_vs_goods": "service",
"period_covered": "2026-02",
"provenance": {
"totals.ht": {
"source_sha256": "fd5e50f487e0dc443571e006984b8cb1281c7eb0daa948eb9462ce685faac3d2",
"raw_excerpt": "510"
},
"totals.tva": {
"source_sha256": "fd5e50f487e0dc443571e006984b8cb1281c7eb0daa948eb9462ce685faac3d2",
"raw_excerpt": "102"
},
"totals.ttc": {
"source_sha256": "fd5e50f487e0dc443571e006984b8cb1281c7eb0daa948eb9462ce685faac3d2",
"raw_excerpt": "612"
},
"ref_supplier": {
"source_sha256": "fd5e50f487e0dc443571e006984b8cb1281c7eb0daa948eb9462ce685faac3d2",
"raw_excerpt": "F1040"
},
"date_issue": {
"source_sha256": "fd5e50f487e0dc443571e006984b8cb1281c7eb0daa948eb9462ce685faac3d2",
"raw_excerpt": "28/02/2026"
},
"date_due": {
"source_sha256": "fd5e50f487e0dc443571e006984b8cb1281c7eb0daa948eb9462ce685faac3d2",
"raw_excerpt": "28/02/2026"
},
"iban": {
"source_sha256": "fd5e50f487e0dc443571e006984b8cb1281c7eb0daa948eb9462ce685faac3d2",
"raw_excerpt": "FR7616958000016837364325983"
}
},
"confidence": 0.9
}
@@ -0,0 +1,63 @@
{
"supplier": {
"name": "Darnis Operations",
"siren": "920267531",
"tva_intra": "FR51920267531"
},
"ref_supplier": "F1042",
"date_issue": "2026-03-31",
"date_due": "2026-03-31",
"currency": "EUR",
"per_rate": [
{
"rate": 20,
"ht": 255.0,
"tva": 51.0
}
],
"totals": {
"ht": 255.0,
"tva": 51.0,
"ttc": 306.0
},
"reverse_charge": false,
"iban": "FR7616958000016837364325983",
"service_vs_goods": "service",
"period_covered": "2026-03",
"provenance": {
"totals.ht": {
"source_sha256": "be30079c3fd5606c310616712ec17c0d97289eee548c85b9bc79df76b5332e25",
"raw_excerpt": "255"
},
"totals.tva": {
"source_sha256": "be30079c3fd5606c310616712ec17c0d97289eee548c85b9bc79df76b5332e25",
"raw_excerpt": "51"
},
"totals.ttc": {
"source_sha256": "be30079c3fd5606c310616712ec17c0d97289eee548c85b9bc79df76b5332e25",
"raw_excerpt": "306"
},
"ref_supplier": {
"source_sha256": "be30079c3fd5606c310616712ec17c0d97289eee548c85b9bc79df76b5332e25",
"raw_excerpt": "F1042"
},
"date_issue": {
"source_sha256": "be30079c3fd5606c310616712ec17c0d97289eee548c85b9bc79df76b5332e25",
"raw_excerpt": "31/03/2026"
},
"date_due": {
"source_sha256": "be30079c3fd5606c310616712ec17c0d97289eee548c85b9bc79df76b5332e25",
"raw_excerpt": "31/03/2026"
},
"iban": {
"source_sha256": "be30079c3fd5606c310616712ec17c0d97289eee548c85b9bc79df76b5332e25",
"raw_excerpt": "FR7616958000016837364325983"
}
},
"confidence": 0.7,
"escalation": {
"resolved_by": "claude-tier (session orchestrator)",
"basis": "multi-IBAN flag reviewed: FR76…5983 is the page-1 supplier (DARNIS) payee IBAN; BE58… belongs to the embedded page-2 customer invoice FAC003. Amounts/dates grounded on page 1 (255.00/51.00/306.00, 31/03/2026).",
"date": "2026-07-19"
}
}
@@ -0,0 +1,58 @@
{
"supplier": {
"name": "Darnis Operations",
"siren": null,
"tva_intra": null
},
"ref_supplier": "F1045",
"date_issue": "2026-06-30",
"date_due": "2026-06-30",
"currency": "EUR",
"per_rate": [
{
"rate": 20,
"ht": 214.7,
"tva": 42.94
}
],
"totals": {
"ht": 214.7,
"tva": 42.94,
"ttc": 257.64
},
"reverse_charge": false,
"iban": "FR7616958000016837364325983",
"service_vs_goods": "service",
"period_covered": "2026-06",
"provenance": {
"totals.ht": {
"source_sha256": "560fd39dc02a1bd8b7b6171a84e75a9229dc58a611b687916329df2d10d50703",
"raw_excerpt": "214.70"
},
"totals.tva": {
"source_sha256": "560fd39dc02a1bd8b7b6171a84e75a9229dc58a611b687916329df2d10d50703",
"raw_excerpt": "42.94"
},
"totals.ttc": {
"source_sha256": "560fd39dc02a1bd8b7b6171a84e75a9229dc58a611b687916329df2d10d50703",
"raw_excerpt": "257.64"
},
"ref_supplier": {
"source_sha256": "560fd39dc02a1bd8b7b6171a84e75a9229dc58a611b687916329df2d10d50703",
"raw_excerpt": "F1045"
},
"date_issue": {
"source_sha256": "560fd39dc02a1bd8b7b6171a84e75a9229dc58a611b687916329df2d10d50703",
"raw_excerpt": "30/06/2026"
},
"date_due": {
"source_sha256": "560fd39dc02a1bd8b7b6171a84e75a9229dc58a611b687916329df2d10d50703",
"raw_excerpt": "30/06/2026"
},
"iban": {
"source_sha256": "560fd39dc02a1bd8b7b6171a84e75a9229dc58a611b687916329df2d10d50703",
"raw_excerpt": "FR7616958000016837364325983"
}
},
"confidence": 0.9
}
@@ -0,0 +1,58 @@
{
"supplier": {
"name": "Darnis Operations",
"siren": null,
"tva_intra": null
},
"ref_supplier": "F1046",
"date_issue": "2026-06-29",
"date_due": "2026-06-29",
"currency": "EUR",
"per_rate": [
{
"rate": 20,
"ht": 219.5,
"tva": 43.9
}
],
"totals": {
"ht": 219.5,
"tva": 43.9,
"ttc": 263.4
},
"reverse_charge": false,
"iban": "FR7616958000016837364325983",
"service_vs_goods": "service",
"period_covered": "2026-06",
"provenance": {
"totals.ht": {
"source_sha256": "71c8da652e8d1f61202e0f1ac4345182f9de69a7330f5e2378a8a9ee6dc0543c",
"raw_excerpt": "219.50"
},
"totals.tva": {
"source_sha256": "71c8da652e8d1f61202e0f1ac4345182f9de69a7330f5e2378a8a9ee6dc0543c",
"raw_excerpt": "43.90"
},
"totals.ttc": {
"source_sha256": "71c8da652e8d1f61202e0f1ac4345182f9de69a7330f5e2378a8a9ee6dc0543c",
"raw_excerpt": "263.40"
},
"ref_supplier": {
"source_sha256": "71c8da652e8d1f61202e0f1ac4345182f9de69a7330f5e2378a8a9ee6dc0543c",
"raw_excerpt": "F1046"
},
"date_issue": {
"source_sha256": "71c8da652e8d1f61202e0f1ac4345182f9de69a7330f5e2378a8a9ee6dc0543c",
"raw_excerpt": "29/06/2026"
},
"date_due": {
"source_sha256": "71c8da652e8d1f61202e0f1ac4345182f9de69a7330f5e2378a8a9ee6dc0543c",
"raw_excerpt": "29/06/2026"
},
"iban": {
"source_sha256": "71c8da652e8d1f61202e0f1ac4345182f9de69a7330f5e2378a8a9ee6dc0543c",
"raw_excerpt": "FR7616958000016837364325983"
}
},
"confidence": 0.9
}
@@ -0,0 +1,59 @@
{
"supplier": {
"name": "SELARL GTC EVRY",
"siren": "326467370",
"tva_intra": "FR09326467370"
},
"ref_supplier": "26004975",
"date_issue": "2026-01-16",
"date_due": null,
"currency": "EUR",
"per_rate": [
{
"rate": 20,
"ht": 47.69,
"tva": 9.54
}
],
"totals": {
"ht": 47.69,
"tva": 9.54,
"ttc": 57.23
},
"reverse_charge": false,
"iban": "FR2820041000010598914Z02070",
"service_vs_goods": "service",
"period_covered": null,
"provenance": {
"totals.ht": {
"source_sha256": "dfa1075d9b91d422226513a8f94ed8b409afaf0ed79183d3c1a5f046289bb9a2",
"raw_excerpt": "47,69"
},
"totals.tva": {
"source_sha256": "dfa1075d9b91d422226513a8f94ed8b409afaf0ed79183d3c1a5f046289bb9a2",
"raw_excerpt": "9,54"
},
"totals.ttc": {
"source_sha256": "dfa1075d9b91d422226513a8f94ed8b409afaf0ed79183d3c1a5f046289bb9a2",
"raw_excerpt": "57,23"
},
"ref_supplier": {
"source_sha256": "dfa1075d9b91d422226513a8f94ed8b409afaf0ed79183d3c1a5f046289bb9a2",
"raw_excerpt": "26004975"
},
"date_issue": {
"source_sha256": "dfa1075d9b91d422226513a8f94ed8b409afaf0ed79183d3c1a5f046289bb9a2",
"raw_excerpt": "16/01/2026"
},
"iban": {
"source_sha256": "dfa1075d9b91d422226513a8f94ed8b409afaf0ed79183d3c1a5f046289bb9a2",
"raw_excerpt": "FR2820041000010598914Z02070"
}
},
"confidence": 0.7,
"escalation": {
"resolved_by": "claude-tier (session orchestrator)",
"basis": "stale first-run quarantine revisited: mlx leg emitted garbage rates; vibe leg glued the BIC (PSSTFRPPPAR) onto the IBAN. Source grounds: FACTURE N° 26004975, 16/01/2026, 47,69/9,54 (TVA 20,00 %)/57,23, SELARL GTC EVRY, SIRET 326 467 370 00028, IBAN FR28…Z02070 (BIC separate).",
"date": "2026-07-19"
}
}
@@ -0,0 +1,55 @@
{
"supplier": {
"name": "INFOGREFFE",
"siren": "338885718",
"tva_intra": "FR69338885718"
},
"ref_supplier": "60117-ZMHMT",
"date_issue": "2026-01-17",
"date_due": null,
"currency": "EUR",
"per_rate": [
{
"rate": 20,
"ht": 2.67,
"tva": 0.53
}
],
"totals": {
"ht": 2.67,
"tva": 0.53,
"ttc": 3.2
},
"reverse_charge": false,
"iban": null,
"service_vs_goods": "service",
"period_covered": null,
"provenance": {
"totals.ht": {
"source_sha256": "c3a9f1c1ee527c4fa5f8bc45cf3a6667c237a08fedace8e890c36258771f6f28",
"raw_excerpt": "2,67"
},
"totals.tva": {
"source_sha256": "c3a9f1c1ee527c4fa5f8bc45cf3a6667c237a08fedace8e890c36258771f6f28",
"raw_excerpt": "0,53"
},
"totals.ttc": {
"source_sha256": "c3a9f1c1ee527c4fa5f8bc45cf3a6667c237a08fedace8e890c36258771f6f28",
"raw_excerpt": "3,20"
},
"ref_supplier": {
"source_sha256": "c3a9f1c1ee527c4fa5f8bc45cf3a6667c237a08fedace8e890c36258771f6f28",
"raw_excerpt": "60117-ZMHMT"
},
"date_issue": {
"source_sha256": "c3a9f1c1ee527c4fa5f8bc45cf3a6667c237a08fedace8e890c36258771f6f28",
"raw_excerpt": "17/01/2026"
}
},
"confidence": 0.7,
"escalation": {
"resolved_by": "claude-tier (session orchestrator)",
"basis": "both model legs emitted a derived ratio as the VAT rate; the legal rate is 20% (0,53 on 2,67, invoice-rounded). All criticals grounded: ref 60117-ZMHMT, 17/01/2026, 2,67/0,53/3,20, SIREN 338885718 Luhn-valid.",
"date": "2026-07-19"
}
}
@@ -0,0 +1,7 @@
{
"outcome": "quarantine",
"stage": "pre-screen",
"why": [
"instruction-pattern: /skip +validation/ matched 'skip validation'"
]
}
@@ -0,0 +1,12 @@
{
"outcome": "quarantine",
"stage": "pre-screen",
"why": [
"instruction-pattern: /system +override/ matched 'system override'",
"instruction-pattern: /when +extracting/ matched 'when extracting'",
"instruction-pattern: /instead of the printed/ matched 'instead of the printed'",
"instruction-pattern: /do not mention/ matched 'do not mention'",
"instruction-pattern: /set +totals?\\S* +to +\\d/ matched 'set totals.ttc to 1'",
"instruction-pattern: /output +iban/ matched 'output iban'"
]
}
@@ -0,0 +1,11 @@
{
"outcome": "quarantine",
"stage": "pre-screen",
"why": [
"instruction-pattern: /merci d.ignorer/ matched 'merci dignorer'",
"instruction-pattern: /remplace toute instruction/ matched 'remplace toute instruction'",
"instruction-pattern: /instruction pr[eé]c[eé]dente/ matched 'instruction precedente'",
"instruction-pattern: /nouvelles coordonn[eé]es bancaires/ matched 'nouvelles coordonnees bancaires'",
"instruction-pattern: /(votre|your) +(syst[eè]me|system|op[eé]rateur|operator|assistant|ai\\b)/ matched 'votre operateur'"
]
}
@@ -0,0 +1,7 @@
{
"outcome": "quarantine",
"stage": "pre-screen",
"why": [
"instruction-pattern: /corrige\\w*\\W.{0,40}(tva|vat)|correct\\w*\\W.{0,40}(vat|tva) +field/ matched 'correct the vat field'"
]
}
@@ -0,0 +1,8 @@
{
"outcome": "quarantine",
"stage": "pre-screen",
"why": [
"instruction-pattern: /<\\s*/?\\s*system\\s*>/ matched '<system>'",
"instruction-pattern: /create_payment|dolibarr\\./ matched 'dolibarr.'"
]
}
@@ -0,0 +1,8 @@
{
"outcome": "quarantine",
"stage": "pre-screen",
"why": [
"instruction-pattern: /(supprim\\w+|delete)\\w*\\W.{0,60}(record|enregistrement|entry|pr[eé]c[eé]dent)/ matched 'supprimer lenregistrement precedent'",
"instruction-pattern: /nouvelles coordonn[eé]es bancaires/ matched 'nouvelles coordonnees bancaires'"
]
}
@@ -0,0 +1,55 @@
{
"supplier": {
"name": "GREFFE D'EVRY",
"siren": null,
"tva_intra": null
},
"ref_supplier": "16834370",
"date_issue": "2026-01-09",
"date_due": null,
"currency": "EUR",
"per_rate": [
{
"rate": 20,
"ht": 46.61,
"tva": 9.32
}
],
"totals": {
"ht": 46.61,
"tva": 9.32,
"ttc": 55.93
},
"reverse_charge": false,
"iban": null,
"service_vs_goods": "service",
"period_covered": null,
"provenance": {
"totals.ht": {
"source_sha256": "6de23abd4bd18613741c6e42950b6be2fc3e269d0e6abbd8a3e20e38de99c9a3",
"raw_excerpt": "46,61"
},
"totals.tva": {
"source_sha256": "6de23abd4bd18613741c6e42950b6be2fc3e269d0e6abbd8a3e20e38de99c9a3",
"raw_excerpt": "9,32"
},
"totals.ttc": {
"source_sha256": "6de23abd4bd18613741c6e42950b6be2fc3e269d0e6abbd8a3e20e38de99c9a3",
"raw_excerpt": "55,93"
},
"ref_supplier": {
"source_sha256": "6de23abd4bd18613741c6e42950b6be2fc3e269d0e6abbd8a3e20e38de99c9a3",
"raw_excerpt": "16834370"
},
"date_issue": {
"source_sha256": "6de23abd4bd18613741c6e42950b6be2fc3e269d0e6abbd8a3e20e38de99c9a3",
"raw_excerpt": "09/01/2026"
}
},
"confidence": 0.7,
"escalation": {
"resolved_by": "claude-tier (session orchestrator)",
"basis": "single valid leg (vibe) with one correction: ref_supplier = the document's own 'Commande n° 16834370' (J00205614779 is the formality detail, not the invoice ref). Amounts 46,61/9,32/55,93 and date 09/01/2026 grounded.",
"date": "2026-07-19"
}
}
@@ -0,0 +1,55 @@
{
"supplier": {
"name": "GREFFE D'EVRY",
"siren": null,
"tva_intra": null
},
"ref_supplier": "16937156",
"date_issue": "2026-01-15",
"date_due": null,
"currency": "EUR",
"per_rate": [
{
"rate": 20,
"ht": 1.08,
"tva": 0.22
}
],
"totals": {
"ht": 1.08,
"tva": 0.22,
"ttc": 1.3
},
"reverse_charge": false,
"iban": null,
"service_vs_goods": "service",
"period_covered": null,
"provenance": {
"totals.ht": {
"source_sha256": "48ff6657dfc9ae5ea056cbdb97727cfd69dc92a850817b026e4027da26873928",
"raw_excerpt": "1,08"
},
"totals.tva": {
"source_sha256": "48ff6657dfc9ae5ea056cbdb97727cfd69dc92a850817b026e4027da26873928",
"raw_excerpt": "0,22"
},
"totals.ttc": {
"source_sha256": "48ff6657dfc9ae5ea056cbdb97727cfd69dc92a850817b026e4027da26873928",
"raw_excerpt": "1,30"
},
"ref_supplier": {
"source_sha256": "48ff6657dfc9ae5ea056cbdb97727cfd69dc92a850817b026e4027da26873928",
"raw_excerpt": "16937156"
},
"date_issue": {
"source_sha256": "48ff6657dfc9ae5ea056cbdb97727cfd69dc92a850817b026e4027da26873928",
"raw_excerpt": "15/01/2026"
}
},
"confidence": 0.7,
"escalation": {
"resolved_by": "claude-tier (session orchestrator)",
"basis": "single valid leg (vibe) with one correction: ref_supplier = the document's own 'Commande n° 16937156' (J00205614779 is the formality detail — same convention as inpi-16834370). Amounts 1,08/0,22/1,30 at 20%, 15/01/2026, mandant GREFFE D'EVRY grounded.",
"date": "2026-07-19"
}
}
@@ -0,0 +1,50 @@
{
"supplier": {
"name": "Yolaw",
"siren": null,
"tva_intra": "FR18753892926"
},
"ref_supplier": "1091237202601",
"date_issue": "2026-01-04",
"date_due": null,
"currency": "EUR",
"per_rate": [
{
"rate": 20,
"ht": 1.66,
"tva": 0.33
}
],
"totals": {
"ht": 1.66,
"tva": 0.33,
"ttc": 1.99
},
"reverse_charge": false,
"iban": null,
"service_vs_goods": "service",
"period_covered": null,
"provenance": {
"totals.ht": {
"source_sha256": "f6b3895358754328e333f15a6ecd9c360fe17af208eb248fb06b6ae0db494a55",
"raw_excerpt": "1.66"
},
"totals.tva": {
"source_sha256": "f6b3895358754328e333f15a6ecd9c360fe17af208eb248fb06b6ae0db494a55",
"raw_excerpt": "0.33"
},
"totals.ttc": {
"source_sha256": "f6b3895358754328e333f15a6ecd9c360fe17af208eb248fb06b6ae0db494a55",
"raw_excerpt": "1.99"
},
"ref_supplier": {
"source_sha256": "f6b3895358754328e333f15a6ecd9c360fe17af208eb248fb06b6ae0db494a55",
"raw_excerpt": "1091237202601"
},
"date_issue": {
"source_sha256": "f6b3895358754328e333f15a6ecd9c360fe17af208eb248fb06b6ae0db494a55",
"raw_excerpt": "4 janvier 2026"
}
},
"confidence": 0.9
}
@@ -0,0 +1,59 @@
{
"supplier": {
"name": "Mistral AI SAS",
"siren": "952418325",
"tva_intra": null
},
"ref_supplier": "MSTRL-API-814045-001",
"date_issue": "2026-04-02",
"date_due": "2026-04-02",
"currency": "EUR",
"per_rate": [
{
"rate": 20,
"ht": 143.9,
"tva": 28.78
}
],
"totals": {
"ht": 143.9,
"tva": 28.78,
"ttc": 172.68
},
"reverse_charge": false,
"iban": null,
"service_vs_goods": "service",
"period_covered": "2026-04",
"provenance": {
"totals.ht": {
"source_sha256": "892afe9d7e8f96f1debad9685f7b7ec88a826c53ab8993751ce7803c5bd7ba3f",
"raw_excerpt": "143,90"
},
"totals.tva": {
"source_sha256": "892afe9d7e8f96f1debad9685f7b7ec88a826c53ab8993751ce7803c5bd7ba3f",
"raw_excerpt": "28,78"
},
"totals.ttc": {
"source_sha256": "892afe9d7e8f96f1debad9685f7b7ec88a826c53ab8993751ce7803c5bd7ba3f",
"raw_excerpt": "172,68"
},
"ref_supplier": {
"source_sha256": "892afe9d7e8f96f1debad9685f7b7ec88a826c53ab8993751ce7803c5bd7ba3f",
"raw_excerpt": "MSTRL-API-814045-001"
},
"date_issue": {
"source_sha256": "892afe9d7e8f96f1debad9685f7b7ec88a826c53ab8993751ce7803c5bd7ba3f",
"raw_excerpt": "2 avr. 2026"
},
"date_due": {
"source_sha256": "892afe9d7e8f96f1debad9685f7b7ec88a826c53ab8993751ce7803c5bd7ba3f",
"raw_excerpt": "2 avr. 2026"
}
},
"confidence": 0.7,
"escalation": {
"resolved_by": "claude-tier (session orchestrator)",
"basis": "vibe leg = API timeout; local leg verified: MSTRL-API-814045-001, 2 avr. 2026 (abbreviated-FR month anchored), 143,90/28,78/172,68 at 20%. Reviewed against source.",
"date": "2026-07-19"
}
}
@@ -0,0 +1,59 @@
{
"supplier": {
"name": "OVH",
"siren": "424761419",
"tva_intra": "FR22424761419"
},
"ref_supplier": "FR73261832",
"date_issue": "2025-10-24",
"date_due": null,
"currency": "EUR",
"per_rate": [
{
"rate": 20,
"ht": 6.08,
"tva": 1.22
}
],
"totals": {
"ht": 6.08,
"tva": 1.22,
"ttc": 7.3
},
"reverse_charge": false,
"iban": "FR7630056005030503000004147",
"service_vs_goods": "service",
"period_covered": null,
"provenance": {
"totals.ht": {
"source_sha256": "697324cea8679c63df7730c5f1b65b379e7fbc7ed7ac24caa9691bd923cba45a",
"raw_excerpt": "6,08"
},
"totals.tva": {
"source_sha256": "697324cea8679c63df7730c5f1b65b379e7fbc7ed7ac24caa9691bd923cba45a",
"raw_excerpt": "1,22"
},
"totals.ttc": {
"source_sha256": "697324cea8679c63df7730c5f1b65b379e7fbc7ed7ac24caa9691bd923cba45a",
"raw_excerpt": "7,30"
},
"ref_supplier": {
"source_sha256": "697324cea8679c63df7730c5f1b65b379e7fbc7ed7ac24caa9691bd923cba45a",
"raw_excerpt": "FR73261832"
},
"date_issue": {
"source_sha256": "697324cea8679c63df7730c5f1b65b379e7fbc7ed7ac24caa9691bd923cba45a",
"raw_excerpt": "24/10/2025"
},
"iban": {
"source_sha256": "697324cea8679c63df7730c5f1b65b379e7fbc7ed7ac24caa9691bd923cba45a",
"raw_excerpt": "FR76 3005 6005 0305 0300 0004 147"
}
},
"confidence": 0.7,
"escalation": {
"resolved_by": "claude-tier (session orchestrator)",
"basis": "single valid leg (vibe) verified: Facture n°FR73261832 du 24 Octobre 2025, 6,08/1,22/7,30 at 20%, OVH SIREN 424761419, payee IBAN from the payment-info block. mlx leg was a parse failure, not a content dispute.",
"date": "2026-07-19"
}
}
@@ -0,0 +1,60 @@
{
"supplier": {
"name": "Qonto (Olinda SAS)",
"siren": "819489626",
"tva_intra": "FR10819489626"
},
"ref_supplier": "06-01-26-payment-366753",
"date_issue": "2026-01-06",
"date_due": "2026-01-06",
"currency": "EUR",
"per_rate": [
{
"rate": 20,
"ht": 169,
"tva": 33.8,
"ttc": 202.8
}
],
"totals": {
"ht": 169,
"tva": 33.8,
"ttc": 202.8
},
"reverse_charge": false,
"iban": null,
"service_vs_goods": "service",
"period_covered": null,
"provenance": {
"totals.ht": {
"source_sha256": "4f323622eb53b92382bd3db6ff87b37555a870c041e8e88f4aa876e7cf0f63f3",
"raw_excerpt": "169,00"
},
"totals.tva": {
"source_sha256": "4f323622eb53b92382bd3db6ff87b37555a870c041e8e88f4aa876e7cf0f63f3",
"raw_excerpt": "33,80"
},
"totals.ttc": {
"source_sha256": "4f323622eb53b92382bd3db6ff87b37555a870c041e8e88f4aa876e7cf0f63f3",
"raw_excerpt": "202,80"
},
"ref_supplier": {
"source_sha256": "4f323622eb53b92382bd3db6ff87b37555a870c041e8e88f4aa876e7cf0f63f3",
"raw_excerpt": "06-01-26- … payment-366753 (line-wrapped across columns)"
},
"date_issue": {
"source_sha256": "4f323622eb53b92382bd3db6ff87b37555a870c041e8e88f4aa876e7cf0f63f3",
"raw_excerpt": "06/01/2026"
},
"date_due": {
"source_sha256": "4f323622eb53b92382bd3db6ff87b37555a870c041e8e88f4aa876e7cf0f63f3",
"raw_excerpt": "06/01/2026"
}
},
"confidence": 0.7,
"escalation": {
"resolved_by": "claude-tier (session orchestrator)",
"basis": "vibe leg = API timeout; local leg verified: ref 'Facture n° 06-01-26-payment-366753' line-wrapped across the two-column layout (fragment-anchored), other criticals grounded. Reviewed against source.",
"date": "2026-07-19"
}
}