SpecSure
Is the spec a shopping agent tells you actually true? SpecSure checks product claims made by AI shopping agents against attribute-level spec snapshots with a deterministic, model-free verifier, and returns PASS / WARN / BLOCK with the evidence behind every verdict.
This is a static, pre-computed demo — it does not accept input. The results below were produced by running the real verifier locally on the public synthetic benchmark (fictional brands and products). SpecSure is not connected to any store and cannot stop a purchase; it only returns a verdict with evidence.
Headline numbers
94.7%
BLOCK precision — deterministic verifier
naive string matcher: 60.8%
0 / 15
safety-critical (S1) errors passed — deterministic
naive string matcher: 6 / 15
P 97.6% / R 91.1%
claim extraction from free text, extractor v2
15-answer synthetic hold-out, single run
not run
LLM-judge comparison
author's decision (no API spend)
How to read the results
PASS FAIL UNKNOWN — per claim. FAIL always cites the snapshot evidence; UNKNOWN means the snapshot cannot decide it.
Severity: S1 safety/legal (ingredients, allergens), S2 invalidates the purchase (compatibility, model, variant, voltage…), S3 degrades the experience.
Per product: S1 FAIL or UNKNOWN → BLOCK; S2 FAIL → BLOCK, S2 UNKNOWN → WARN; S3 FAIL → WARN.
Pre-computed checks on synthetic products
All claims check out
Decision PASS
| Claim (as stated) | Product reference | Benchmark label | Verdict | Severity | Outcome | Evidence (path = gold value) |
|---|---|---|---|---|---|---|
| numeric — ink_volume: 0.27 fl oz | model_number=MZ-IC80-BK | PASS | PASS | S3 | PASS | attributes.ink_volume = {"unit": "mL", "value": 8.0} |
| model — MZ-IC80-BK | model_number=MZ-IC80-BK | PASS | PASS | S2 | PASS | product.model_number = MZ-IC80-BK |
| variant — color: black | gtin=2 010401 000002 | PASS | PASS | S2 | PASS | variant_axes.color = black |
A minor bundle error (S3) gives WARN
Decision WARN
| Claim (as stated) | Product reference | Benchmark label | Verdict | Severity | Outcome | Evidence (path = gold value) |
|---|---|---|---|---|---|---|
| numeric — capacity_charge: 20000 mAh | model_number=KP-20K-BK-US | PASS | PASS | S2 | PASS | attributes.capacity_charge = {"unit": "mAh", "value": 20000} |
| model — KP-20K-BK-US | gtin=210303000007, model_number=KP-20K-BK-US | PASS | PASS | S2 | PASS | product.model_number = KP-20K-BK-US |
| variant — capacity: 20000 mAh | model_number=Kestrelon KP-20K-BK-US | PASS | PASS | S2 | PASS | variant_axes.capacity = 20000 mAh |
| bundle — includes: キャリングケース | gtin=2 103030 00007 | FAIL (E5) | FAIL | S3 | WARN | bundle.items = ["USB-C cable", "travel pouch", "user manual"] |
Fabricated compatibility (S2) blocks the purchase
Decision BLOCK
| Claim (as stated) | Product reference | Benchmark label | Verdict | Severity | Outcome | Evidence (path = gold value) |
|---|---|---|---|---|---|---|
| numeric — thickness: 0.1 cm | model_number=hv n5 cl | PASS | PASS | S3 | PASS | attributes.thickness = {"unit": "mm", "value": 1.2} |
| model — HV-N5 | model_number=HV-N5-CL | PASS | PASS | S2 | PASS | product.model_number = HV-N5-CL |
| variant — color: クリア | gtin=210901000003 | PASS | PASS | S2 | PASS | variant_axes.color = clear |
| compatibility — compatible_with: corvel nova 4 | gtin=2 109010 00003 | FAIL (E4) | FAIL | S2 | BLOCK | compatibility.incompatible = Corvel Nova 4 |
Another region's voltage (S2) blocks the purchase
Decision BLOCK
| Claim (as stated) | Product reference | Benchmark label | Verdict | Severity | Outcome | Evidence (path = gold value) |
|---|---|---|---|---|---|---|
| numeric — power_consumption: 1.2 kw | gtin=2 011201 000001 | PASS | PASS | S3 | PASS | attributes.power_consumption = {"unit": "W", "value": 1200} |
| model — YK-HD12 | model_number=Yukibana YK-HD12-W | PASS | PASS | S2 | PASS | product.model_number = YK-HD12-W |
| variant — color: ホワイト | model_number=YK-HD12-W | PASS | PASS | S2 | PASS | variant_axes.color = white |
| region — voltage: 120 V | gtin=2 011201 000001 | FAIL (E8) | FAIL | S2 | BLOCK | region_spec.voltage = {"unit": "V", "value": 100} |
Previous-generation value and a sibling's model number
Decision BLOCK
| Claim (as stated) | Product reference | Benchmark label | Verdict | Severity | Outcome | Evidence (path = gold value) |
|---|---|---|---|---|---|---|
| numeric — depth: 3.1 cm | gtin=2010201000004 | PASS | PASS | S3 | PASS | attributes.depth = {"unit": "mm", "value": 31} |
| model — KC-PD65-BK | gtin=02010201000004 | PASS | PASS | S2 | PASS | product.model_number = KC-PD65-BK |
| variant — color: ブラック | gtin=2 010201 000004 | PASS | PASS | S2 | PASS | variant_axes.color = black |
| numeric — depth: 30 mm | gtin=2 010201 000004 | FAIL (E1) | FAIL | S3 | WARN | attributes.depth = {"unit": "mm", "value": 31} |
| model — KC-PD65-WH | model_number=KC-PD65-BK | FAIL (E2) | FAIL | S2 | BLOCK | product.model_number = KC-PD65-BK product.model_number = KC-PD65-WH |
An allergen claim (S1) that contradicts the label
Decision BLOCK
| Claim (as stated) | Product reference | Benchmark label | Verdict | Severity | Outcome | Evidence (path = gold value) |
|---|---|---|---|---|---|---|
| numeric — net_weight: 1.76 oz | gtin=2020301000002 | PASS | PASS | S3 | PASS | attributes.net_weight = {"unit": "g", "value": 50} |
| variant — flavor: milk | gtin=02020301000002 | PASS | PASS | S2 | PASS | variant_axes.flavor = ミルク |
| region — market: JP | gtin=2 020301 000002 | PASS | PASS | S3 | PASS | region_spec.market = {"value": "JP"} |
| ingredient — contains: NOT peanut | gtin=2 020301 000002 | FAIL (E7) | FAIL | S1 | BLOCK | ingredients.may_contain = 落花生 |
| numeric — net_weight: 50 oz | gtin=02020301000002 | FAIL (E3) | FAIL | S3 | WARN | attributes.net_weight = {"unit": "g", "value": 50} |
Handwritten development claims (challenge v0)
| Claim | Product | Note | Expected | Verdict | Severity | Outcome | Evidence |
|---|---|---|---|---|---|---|---|
| compatibility — compatible_with: ミズナギ PX‐830F | jp-mz-ic80-c | カタカナブランド+Unicode ハイフン | PASS | PASS | S2 | PASS | compatibility.compatible = Mizunagi PX-830F |
| numeric — length: 6.6 ft | jp-pw-h21-2m | 2 m = 6.56 ft の丸め | PASS | PASS | S2 | PASS | attributes.length = {"unit": "m", "value": 2} |
| ingredient — contains: gluten | jp-senbei-shoyu | 小麦をグルテンと言う | PASS | PASS | S1 | PASS | ingredients.items[しょうゆ].contains = 小麦 ingredients.allergens = 小麦 |
| ingredient — contains: NOT milk | jp-choco-dark | 「乳成分を含む可能性」表示がある | FAIL | FAIL | S1 | BLOCK | ingredients.may_contain = 乳成分 |
| ingredient — contains: NOT lactose | jp-choco-milk | 乳糖は辞書外。全粉乳は乳糖を含むが語彙では判断不能 | FAIL | UNKNOWN | S1 | BLOCK | — |
| region — pa_rating: PA++++ | us-sunscreen-1-4oz | US 版は PA 表示なし(属性が無いので断定不能) | FAIL | UNKNOWN | S2 | WARN | — |
| numeric — volume: 400 mL | us-shampoo-floral | 13.5 fl oz (400 mL) 表記の丸め | PASS | FAIL | S3 | WARN | attributes.volume = {"unit": "fl oz", "value": 13.5} |