{"trace_id": "trace-pc-001", "case_id": "pc-001", "input": {"front_text": "HIGH PROTEIN MULTIGRAIN 100% NATURAL", "back_text": "Ingredients: Refined wheat flour, rolled oats, ragi flour, sugar, cocoa, salt. Nutrition per 100g: Protein 12.4g, Total Sugars 22g, Added Sugars 18g, Sodium 410mg. Net weight 300g. PKD: 13 JUN 26. Best before 6 months from packaging."}, "steps": [{"name": "plan_investigation", "output": {"objective": "Audit front-of-pack claims against evidence printed on the same packet.", "steps": [{"tool": "inspect_nutrition", "reason": "Required to audit the front claim: High Protein.", "status": "completed", "source": "fine-tuned router"}, {"tool": "inspect_ingredients", "reason": "Required to audit the front claim: Multigrain.", "status": "completed", "source": "fine-tuned router"}, {"tool": "apply_safety_boundary", "reason": "Required to audit the front claim: 100% Natural.", "status": "completed", "source": "fine-tuned router"}, {"tool": "resolve_dates", "reason": "Date or after-opening evidence is visible on the supplied label.", "status": "completed", "source": "policy"}], "missing_evidence": [], "stop_reason": "Stopped after all evidence tools required by the detected claims completed.", "router_model": "build-small-hackathon/packetcourt-evidence-router"}}, {"name": "detect_front_claims", "output": ["High Protein", "Multigrain", "100% Natural"]}, {"name": "extract_back_evidence", "output": {"ingredients": ["Refined wheat flour", "rolled oats", "ragi flour", "sugar", "cocoa", "salt"], "nutrition": {"basis": "per 100g", "serving_size_g": null, "package_size_g": 300.0, "protein_g": 12.4, "total_sugar_g": 22.0, "added_sugar_g": 18.0, "sodium_mg": 410.0, "saturated_fat_g": null}}}, {"name": "calculate_whole_packet", "output": {"calculable": true, "multiplier": 3.0, "protein_g": 37.2, "total_sugar_g": 66.0, "added_sugar_g": 54.0, "sugar_teaspoons": 16.5, "sodium_mg": 1230.0, "saturated_fat_g": null, "explanation": "Calculated from per 100g values across a 300g packet."}}, {"name": "audit_claims", "output": [{"claim": "High Protein", "verdict": "TECHNICALLY TRUE, CONTEXT MISSING", "summary": "The protein quantity is visible, but claim compliance depends on product category and applicable rules.", "evidence": [{"source": "nutrition panel", "text": "Protein 12.4g (per 100g)"}], "caveat": "PacketCourt does not make a regulatory-compliance determination in this prototype.", "confidence": "medium"}, {"claim": "Multigrain", "verdict": "TECHNICALLY TRUE, CONTEXT MISSING", "summary": "Multiple grains are listed, but refined grain appears first.", "evidence": [{"source": "ingredient list", "text": "Refined wheat flour"}, {"source": "ingredient list", "text": "rolled oats"}, {"source": "ingredient list", "text": "ragi flour"}], "caveat": "Ingredient order indicates relative quantity, but exact grain percentages may be unavailable.", "confidence": "high"}, {"claim": "100% Natural", "verdict": "CANNOT VERIFY", "summary": "An absolute naturalness claim cannot be established from package text alone.", "evidence": [{"source": "front claim", "text": "100% Natural"}], "caveat": "PacketCourt refuses to infer product composition beyond the supplied label.", "confidence": "high"}]}, {"name": "surface_persuasion_gap", "output": [{"headline": "Protein leads. Whole-packet sugar stays quiet.", "front_impression": "The front positions protein as the packet's defining fact.", "quiet_context": "The complete packet contains about 16.5 teaspoons of total sugar.", "severity": "high", "evidence": [{"source": "whole-packet calculation", "text": "Total sugar 66g"}, {"source": "conversion", "text": "66g \u00f7 4 = 16.5 teaspoons"}]}, {"headline": "A positive front claim competes with substantial sodium.", "front_impression": "The front emphasizes a favorable product attribute.", "quiet_context": "The complete packet calculates to approximately 1230mg sodium.", "severity": "high", "evidence": [{"source": "whole-packet calculation", "text": "Sodium 1230mg"}]}, {"headline": "Grain variety is prominent. The first ingredient is refined.", "front_impression": "The front suggests a grain-forward product.", "quiet_context": "The ingredient list begins with \u201cRefined wheat flour\u201d.", "severity": "medium", "evidence": [{"source": "first ingredient", "text": "Refined wheat flour"}]}]}, {"name": "resolve_dates", "output": {"packed_on": "2026-06-13", "best_before": "2026-12-13", "instruction": "Best before 6 months from packaging", "after_opening_instruction": null, "status": "Best-before evidence resolves to 2026-12-13"}}], "limitations": ["PacketCourt audits only the text and images supplied by the user.", "Verdicts are evidence summaries, not legal, medical, or food-safety determinations.", "Users should verify low-confidence OCR against the physical packet."]} {"trace_id": "trace-pc-002", "case_id": "pc-002", "input": {"front_text": "NO ADDED SUGAR", "back_text": "Ingredients: Rolled oats, glucose syrup, peanuts. Nutrition per 100g: Total Sugars 19g, Added Sugars 12g."}, "steps": [{"name": "plan_investigation", "output": {"objective": "Audit front-of-pack claims against evidence printed on the same packet.", "steps": [{"tool": "inspect_ingredients", "reason": "Required to audit the front claim: No Added Sugar.", "status": "completed", "source": "fine-tuned router"}], "missing_evidence": [], "stop_reason": "Stopped after all evidence tools required by the detected claims completed.", "router_model": "build-small-hackathon/packetcourt-evidence-router"}}, {"name": "detect_front_claims", "output": ["No Added Sugar"]}, {"name": "extract_back_evidence", "output": {"ingredients": ["Rolled oats", "glucose syrup", "peanuts"], "nutrition": {"basis": "per 100g", "serving_size_g": null, "package_size_g": null, "protein_g": null, "total_sugar_g": 19.0, "added_sugar_g": 12.0, "sodium_mg": null, "saturated_fat_g": null}}}, {"name": "calculate_whole_packet", "output": {"calculable": false, "multiplier": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sugar_teaspoons": null, "sodium_mg": null, "saturated_fat_g": null, "explanation": "Package size and nutrition basis are required."}}, {"name": "audit_claims", "output": [{"claim": "No Added Sugar", "verdict": "CONTRADICTED BY PROVIDED LABEL", "summary": "The provided ingredient list names one or more added-sugar ingredients.", "evidence": [{"source": "ingredient list", "text": "glucose syrup"}], "caveat": "This verdict only checks the supplied label text; it is not a laboratory analysis.", "confidence": "high"}]}, {"name": "surface_persuasion_gap", "output": []}, {"name": "resolve_dates", "output": {"packed_on": null, "best_before": null, "instruction": null, "after_opening_instruction": null, "status": "No resolvable best-before date found"}}], "limitations": ["PacketCourt audits only the text and images supplied by the user.", "Verdicts are evidence summaries, not legal, medical, or food-safety determinations.", "Users should verify low-confidence OCR against the physical packet."]} {"trace_id": "trace-pc-003", "case_id": "pc-003", "input": {"front_text": "NO ADDED SUGAR", "back_text": "Ingredients: Rolled oats, peanuts, cocoa, salt. Nutrition per 100g: Total Sugars 2g."}, "steps": [{"name": "plan_investigation", "output": {"objective": "Audit front-of-pack claims against evidence printed on the same packet.", "steps": [{"tool": "inspect_ingredients", "reason": "Required to audit the front claim: No Added Sugar.", "status": "completed", "source": "fine-tuned router"}], "missing_evidence": [], "stop_reason": "Stopped after all evidence tools required by the detected claims completed.", "router_model": "build-small-hackathon/packetcourt-evidence-router"}}, {"name": "detect_front_claims", "output": ["No Added Sugar"]}, {"name": "extract_back_evidence", "output": {"ingredients": ["Rolled oats", "peanuts", "cocoa", "salt"], "nutrition": {"basis": "per 100g", "serving_size_g": null, "package_size_g": null, "protein_g": null, "total_sugar_g": 2.0, "added_sugar_g": null, "sodium_mg": null, "saturated_fat_g": null}}}, {"name": "calculate_whole_packet", "output": {"calculable": false, "multiplier": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sugar_teaspoons": null, "sodium_mg": null, "saturated_fat_g": null, "explanation": "Package size and nutrition basis are required."}}, {"name": "audit_claims", "output": [{"claim": "No Added Sugar", "verdict": "SUPPORTED BY PROVIDED LABEL", "summary": "No common added-sugar term was found in the provided ingredient list.", "evidence": [{"source": "ingredient list", "text": "Rolled oats, peanuts, cocoa, salt"}], "caveat": "Unrecognized sweeteners or incomplete OCR may change this result.", "confidence": "medium"}]}, {"name": "surface_persuasion_gap", "output": []}, {"name": "resolve_dates", "output": {"packed_on": null, "best_before": null, "instruction": null, "after_opening_instruction": null, "status": "No resolvable best-before date found"}}], "limitations": ["PacketCourt audits only the text and images supplied by the user.", "Verdicts are evidence summaries, not legal, medical, or food-safety determinations.", "Users should verify low-confidence OCR against the physical packet."]} {"trace_id": "trace-pc-004", "case_id": "pc-004", "input": {"front_text": "FSSAI APPROVED", "back_text": "FSSAI Lic. No. 12345678901234. Ingredients: oats, salt."}, "steps": [{"name": "plan_investigation", "output": {"objective": "Audit front-of-pack claims against evidence printed on the same packet.", "steps": [{"tool": "inspect_license", "reason": "Required to audit the front claim: FSSAI Approved.", "status": "completed", "source": "fine-tuned router"}], "missing_evidence": [], "stop_reason": "Stopped after all evidence tools required by the detected claims completed.", "router_model": "build-small-hackathon/packetcourt-evidence-router"}}, {"name": "detect_front_claims", "output": ["FSSAI Approved"]}, {"name": "extract_back_evidence", "output": {"ingredients": ["oats", "salt"], "nutrition": {"basis": "unknown", "serving_size_g": null, "package_size_g": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sodium_mg": null, "saturated_fat_g": null}}}, {"name": "calculate_whole_packet", "output": {"calculable": false, "multiplier": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sugar_teaspoons": null, "sodium_mg": null, "saturated_fat_g": null, "explanation": "Package size and nutrition basis are required."}}, {"name": "audit_claims", "output": [{"claim": "FSSAI Approved", "verdict": "TECHNICALLY TRUE, CONTEXT MISSING", "summary": "An FSSAI license indicates regulatory registration; it is not a health endorsement.", "evidence": [{"source": "back label", "text": "FSSAI license number 12345678901234"}], "caveat": "", "confidence": "high"}]}, {"name": "surface_persuasion_gap", "output": [{"headline": "Registration language can look like a health endorsement.", "front_impression": "\u201cFSSAI Approved\u201d may imply the product has been endorsed as healthy.", "quiet_context": "An FSSAI license identifies regulatory registration; it is not a nutrition recommendation.", "severity": "medium", "evidence": [{"source": "claim interpretation", "text": "FSSAI registration is not a health score."}]}]}, {"name": "resolve_dates", "output": {"packed_on": null, "best_before": null, "instruction": null, "after_opening_instruction": null, "status": "No resolvable best-before date found"}}], "limitations": ["PacketCourt audits only the text and images supplied by the user.", "Verdicts are evidence summaries, not legal, medical, or food-safety determinations.", "Users should verify low-confidence OCR against the physical packet."]} {"trace_id": "trace-pc-005", "case_id": "pc-005", "input": {"front_text": "BAKED NOT FRIED WHOLE GRAIN ZERO TRANS FAT", "back_text": "Ingredients: Refined wheat flour, whole wheat flour, vegetable oil, seasoning, salt. Nutrition per 100g: Protein 7g, Total Sugars 3g, Sodium 780mg, Saturated Fat 5g, Trans Fat 0g. Net weight 180g. PKD: 01 JUN 26. Best before 4 months from packaging."}, "steps": [{"name": "plan_investigation", "output": {"objective": "Audit front-of-pack claims against evidence printed on the same packet.", "steps": [{"tool": "inspect_nutrition", "reason": "Required to audit the front claim: Baked Not Fried.", "status": "completed", "source": "fine-tuned router"}, {"tool": "inspect_ingredients", "reason": "Required to audit the front claim: Whole Grain.", "status": "completed", "source": "fine-tuned router"}, {"tool": "resolve_dates", "reason": "Date or after-opening evidence is visible on the supplied label.", "status": "completed", "source": "policy"}], "missing_evidence": [], "stop_reason": "Stopped after all evidence tools required by the detected claims completed.", "router_model": "build-small-hackathon/packetcourt-evidence-router"}}, {"name": "detect_front_claims", "output": ["Baked Not Fried", "Zero Trans Fat", "Whole Grain"]}, {"name": "extract_back_evidence", "output": {"ingredients": ["Refined wheat flour", "whole wheat flour", "vegetable oil", "seasoning", "salt"], "nutrition": {"basis": "per 100g", "serving_size_g": null, "package_size_g": 180.0, "protein_g": 7.0, "total_sugar_g": 3.0, "added_sugar_g": null, "sodium_mg": 780.0, "saturated_fat_g": 5.0}}}, {"name": "calculate_whole_packet", "output": {"calculable": true, "multiplier": 1.8, "protein_g": 12.6, "total_sugar_g": 5.4, "added_sugar_g": null, "sugar_teaspoons": 1.4, "sodium_mg": 1404.0, "saturated_fat_g": 9.0, "explanation": "Calculated from per 100g values across a 180g packet."}}, {"name": "audit_claims", "output": [{"claim": "Baked Not Fried", "verdict": "TECHNICALLY TRUE, CONTEXT MISSING", "summary": "The preparation claim does not establish that the complete packet is low in fat, sodium, or calories.", "evidence": [{"source": "front claim", "text": "Baked Not Fried"}], "caveat": "Review the nutrition panel and ingredient list for the complete product context.", "confidence": "high"}, {"claim": "Zero Trans Fat", "verdict": "SUPPORTED BY PROVIDED LABEL", "summary": "The supplied nutrition panel reports 0g trans fat.", "evidence": [{"source": "nutrition panel", "text": "Trans Fat 0g"}], "caveat": "A zero declaration may still be subject to applicable rounding rules.", "confidence": "high"}, {"claim": "Whole Grain", "verdict": "TECHNICALLY TRUE, CONTEXT MISSING", "summary": "Whole grain is present, but refined grain appears first.", "evidence": [{"source": "ingredient list", "text": "whole wheat flour"}, {"source": "ingredient list", "text": "Refined wheat flour"}], "caveat": "", "confidence": "high"}]}, {"name": "surface_persuasion_gap", "output": [{"headline": "A positive front claim competes with substantial sodium.", "front_impression": "The front emphasizes a favorable product attribute.", "quiet_context": "The complete packet calculates to approximately 1404mg sodium.", "severity": "high", "evidence": [{"source": "whole-packet calculation", "text": "Sodium 1404mg"}]}, {"headline": "Grain variety is prominent. The first ingredient is refined.", "front_impression": "The front suggests a grain-forward product.", "quiet_context": "The ingredient list begins with \u201cRefined wheat flour\u201d.", "severity": "medium", "evidence": [{"source": "first ingredient", "text": "Refined wheat flour"}]}]}, {"name": "resolve_dates", "output": {"packed_on": "2026-06-01", "best_before": "2026-10-01", "instruction": "Best before 4 months from packaging", "after_opening_instruction": null, "status": "Best-before evidence resolves to 2026-10-01"}}], "limitations": ["PacketCourt audits only the text and images supplied by the user.", "Verdicts are evidence summaries, not legal, medical, or food-safety determinations.", "Users should verify low-confidence OCR against the physical packet."]} {"trace_id": "trace-pc-006", "case_id": "pc-006", "input": {"front_text": "100% NATURAL", "back_text": "Ingredients: Chickpea flour, spices, salt."}, "steps": [{"name": "plan_investigation", "output": {"objective": "Audit front-of-pack claims against evidence printed on the same packet.", "steps": [{"tool": "apply_safety_boundary", "reason": "Required to audit the front claim: 100% Natural.", "status": "completed", "source": "fine-tuned router"}], "missing_evidence": [], "stop_reason": "Stopped after all evidence tools required by the detected claims completed.", "router_model": "build-small-hackathon/packetcourt-evidence-router"}}, {"name": "detect_front_claims", "output": ["100% Natural"]}, {"name": "extract_back_evidence", "output": {"ingredients": ["Chickpea flour", "spices", "salt"], "nutrition": {"basis": "unknown", "serving_size_g": null, "package_size_g": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sodium_mg": null, "saturated_fat_g": null}}}, {"name": "calculate_whole_packet", "output": {"calculable": false, "multiplier": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sugar_teaspoons": null, "sodium_mg": null, "saturated_fat_g": null, "explanation": "Package size and nutrition basis are required."}}, {"name": "audit_claims", "output": [{"claim": "100% Natural", "verdict": "CANNOT VERIFY", "summary": "An absolute naturalness claim cannot be established from package text alone.", "evidence": [{"source": "front claim", "text": "100% Natural"}], "caveat": "PacketCourt refuses to infer product composition beyond the supplied label.", "confidence": "high"}]}, {"name": "surface_persuasion_gap", "output": []}, {"name": "resolve_dates", "output": {"packed_on": null, "best_before": null, "instruction": null, "after_opening_instruction": null, "status": "No resolvable best-before date found"}}], "limitations": ["PacketCourt audits only the text and images supplied by the user.", "Verdicts are evidence summaries, not legal, medical, or food-safety determinations.", "Users should verify low-confidence OCR against the physical packet."]} {"trace_id": "trace-pc-007", "case_id": "pc-007", "input": {"front_text": "NO PRESERVATIVES", "back_text": "Ingredients: Tomato pulp, sugar, salt, sodium benzoate. Use by: 08 JUL 2026."}, "steps": [{"name": "plan_investigation", "output": {"objective": "Audit front-of-pack claims against evidence printed on the same packet.", "steps": [{"tool": "inspect_ingredients", "reason": "Required to audit the front claim: No Preservatives.", "status": "completed", "source": "fine-tuned router"}, {"tool": "resolve_dates", "reason": "Date or after-opening evidence is visible on the supplied label.", "status": "completed", "source": "policy"}], "missing_evidence": [], "stop_reason": "Stopped after all evidence tools required by the detected claims completed.", "router_model": "build-small-hackathon/packetcourt-evidence-router"}}, {"name": "detect_front_claims", "output": ["No Preservatives"]}, {"name": "extract_back_evidence", "output": {"ingredients": ["Tomato pulp", "sugar", "salt", "sodium benzoate. Use by: 08 JUL 2026"], "nutrition": {"basis": "unknown", "serving_size_g": null, "package_size_g": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sodium_mg": null, "saturated_fat_g": null}}}, {"name": "calculate_whole_packet", "output": {"calculable": false, "multiplier": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sugar_teaspoons": null, "sodium_mg": null, "saturated_fat_g": null, "explanation": "Package size and nutrition basis are required."}}, {"name": "audit_claims", "output": [{"claim": "No Preservatives", "verdict": "CONTRADICTED BY PROVIDED LABEL", "summary": "The ingredient list contains a recognizable preservative term or code.", "evidence": [{"source": "ingredient list", "text": "sodium benzoate. Use by: 08 JUL 2026"}], "caveat": "", "confidence": "high"}]}, {"name": "surface_persuasion_gap", "output": []}, {"name": "resolve_dates", "output": {"packed_on": null, "best_before": "2026-07-08", "instruction": null, "after_opening_instruction": null, "status": "Best-before evidence resolves to 2026-07-08"}}], "limitations": ["PacketCourt audits only the text and images supplied by the user.", "Verdicts are evidence summaries, not legal, medical, or food-safety determinations.", "Users should verify low-confidence OCR against the physical packet."]} {"trace_id": "trace-pc-008", "case_id": "pc-008", "input": {"front_text": "NO PRESERVATIVES", "back_text": "Ingredients: Tomato, salt. Use by: 08 JUL 2026. Consume within 3 days after opening."}, "steps": [{"name": "plan_investigation", "output": {"objective": "Audit front-of-pack claims against evidence printed on the same packet.", "steps": [{"tool": "inspect_ingredients", "reason": "Required to audit the front claim: No Preservatives.", "status": "completed", "source": "fine-tuned router"}, {"tool": "resolve_dates", "reason": "Date or after-opening evidence is visible on the supplied label.", "status": "completed", "source": "policy"}], "missing_evidence": [], "stop_reason": "Stopped after all evidence tools required by the detected claims completed.", "router_model": "build-small-hackathon/packetcourt-evidence-router"}}, {"name": "detect_front_claims", "output": ["No Preservatives"]}, {"name": "extract_back_evidence", "output": {"ingredients": ["Tomato", "salt. Use by: 08 JUL 2026. Consume within 3 days after opening"], "nutrition": {"basis": "unknown", "serving_size_g": null, "package_size_g": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sodium_mg": null, "saturated_fat_g": null}}}, {"name": "calculate_whole_packet", "output": {"calculable": false, "multiplier": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sugar_teaspoons": null, "sodium_mg": null, "saturated_fat_g": null, "explanation": "Package size and nutrition basis are required."}}, {"name": "audit_claims", "output": [{"claim": "No Preservatives", "verdict": "SUPPORTED BY PROVIDED LABEL", "summary": "No recognizable preservative term was found in the supplied ingredient list.", "evidence": [{"source": "ingredient list", "text": "Tomato, salt. Use by: 08 JUL 2026. Consume within 3 days after opening"}], "caveat": "Incomplete OCR or unfamiliar additive codes may change this result.", "confidence": "medium"}]}, {"name": "surface_persuasion_gap", "output": []}, {"name": "resolve_dates", "output": {"packed_on": null, "best_before": "2026-07-08", "instruction": null, "after_opening_instruction": "Consume within 3 days after opening", "status": "Best-before evidence resolves to 2026-07-08"}}], "limitations": ["PacketCourt audits only the text and images supplied by the user.", "Verdicts are evidence summaries, not legal, medical, or food-safety determinations.", "Users should verify low-confidence OCR against the physical packet."]} {"trace_id": "trace-pc-009", "case_id": "pc-009", "input": {"front_text": "MULTIGRAIN", "back_text": "Ingredients: Whole wheat flour, oats, ragi flour. Best before 6 months from packaging."}, "steps": [{"name": "plan_investigation", "output": {"objective": "Audit front-of-pack claims against evidence printed on the same packet.", "steps": [{"tool": "inspect_ingredients", "reason": "Required to audit the front claim: Multigrain.", "status": "completed", "source": "fine-tuned router"}, {"tool": "resolve_dates", "reason": "Date or after-opening evidence is visible on the supplied label.", "status": "needs evidence", "source": "policy"}], "missing_evidence": ["The packing or manufacturing date needed to resolve relative shelf life"], "stop_reason": "Stopped with explicit missing-evidence requests.", "router_model": "build-small-hackathon/packetcourt-evidence-router"}}, {"name": "detect_front_claims", "output": ["Multigrain"]}, {"name": "extract_back_evidence", "output": {"ingredients": ["Whole wheat flour", "oats", "ragi flour"], "nutrition": {"basis": "unknown", "serving_size_g": null, "package_size_g": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sodium_mg": null, "saturated_fat_g": null}}}, {"name": "calculate_whole_packet", "output": {"calculable": false, "multiplier": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sugar_teaspoons": null, "sodium_mg": null, "saturated_fat_g": null, "explanation": "Package size and nutrition basis are required."}}, {"name": "audit_claims", "output": [{"claim": "Multigrain", "verdict": "SUPPORTED BY PROVIDED LABEL", "summary": "Multiple grain ingredients are present in the supplied ingredient list.", "evidence": [{"source": "ingredient list", "text": "Whole wheat flour"}, {"source": "ingredient list", "text": "oats"}, {"source": "ingredient list", "text": "ragi flour"}], "caveat": "Ingredient order indicates relative quantity, but exact grain percentages may be unavailable.", "confidence": "high"}]}, {"name": "surface_persuasion_gap", "output": []}, {"name": "resolve_dates", "output": {"packed_on": null, "best_before": null, "instruction": "Best before 6 months from packaging", "after_opening_instruction": null, "status": "Relative shelf-life found, but the starting date is missing"}}], "limitations": ["PacketCourt audits only the text and images supplied by the user.", "Verdicts are evidence summaries, not legal, medical, or food-safety determinations.", "Users should verify low-confidence OCR against the physical packet."]} {"trace_id": "trace-pc-010", "case_id": "pc-010", "input": {"front_text": "HIGH PROTEIN", "back_text": "Ingredients: Chickpea flour, salt. Protein 9g."}, "steps": [{"name": "plan_investigation", "output": {"objective": "Audit front-of-pack claims against evidence printed on the same packet.", "steps": [{"tool": "inspect_nutrition", "reason": "Required to audit the front claim: High Protein.", "status": "completed", "source": "fine-tuned router"}], "missing_evidence": ["A readable nutrition panel with its measurement basis"], "stop_reason": "Stopped with explicit missing-evidence requests.", "router_model": "build-small-hackathon/packetcourt-evidence-router"}}, {"name": "detect_front_claims", "output": ["High Protein"]}, {"name": "extract_back_evidence", "output": {"ingredients": ["Chickpea flour", "salt. Protein 9g"], "nutrition": {"basis": "unknown", "serving_size_g": null, "package_size_g": null, "protein_g": 9.0, "total_sugar_g": null, "added_sugar_g": null, "sodium_mg": null, "saturated_fat_g": null}}}, {"name": "calculate_whole_packet", "output": {"calculable": false, "multiplier": null, "protein_g": null, "total_sugar_g": null, "added_sugar_g": null, "sugar_teaspoons": null, "sodium_mg": null, "saturated_fat_g": null, "explanation": "Package size and nutrition basis are required."}}, {"name": "audit_claims", "output": [{"claim": "High Protein", "verdict": "CANNOT VERIFY", "summary": "Protein is listed, but its measurement basis could not be determined.", "evidence": [{"source": "nutrition panel", "text": "Protein 9g"}], "caveat": "", "confidence": "low"}]}, {"name": "surface_persuasion_gap", "output": []}, {"name": "resolve_dates", "output": {"packed_on": null, "best_before": null, "instruction": null, "after_opening_instruction": null, "status": "No resolvable best-before date found"}}], "limitations": ["PacketCourt audits only the text and images supplied by the user.", "Verdicts are evidence summaries, not legal, medical, or food-safety determinations.", "Users should verify low-confidence OCR against the physical packet."]}