{"observation":{"id":"d73f718e-a9a9-4284-b33e-de2e4ed6da9b","tool":"extend-ai","tool_name":"Extend AI","criterion":"schema-adherence","criterion_name":"Schema Adherence","criterion_definition":"Does the output follow the supplied JSON schema hierarchy exactly, with correct nesting, field names, and data types?","criterion_evidence_type":"transformation","criterion_rank_role":"decisive","criterion_rank_role_reason":"If the tool does not follow the supplied JSON schema exactly, the extracted data cannot be reliably used for structured querying or downstream automation. (3 of 3 judges)","scenario":"invoice-pdf","scenario_name":"Invoice PDF","group_tag":"business-document-extraction","scenario_description":"A two-page broadcast advertising invoice PDF with nested header metadata, billing and remit addresses, and eight line items spanning a page break. It was used to stress hierarchical line-item extraction, amount precision, time/day parsing, code extraction, and summary validation.","modality":"pdf","input_text":null,"input_artifact_refs":[{"alt":null,"url":"https://cdn.futuresmart.ai/public/aidemos/e0e9f678bcde4e29a492a11927fc38f7.pdf?v=1","role":"input","filename":"Invoice PDF.pdf"}],"stresses":["Nested line-item hierarchy extraction","Multi-page continuity across a page break","Precision on large dollar amounts and totals","Parsing complex time slots and day patterns","Extraction of Ad IDs and reconciliation codes","Mapping structured metadata sections correctly","Financial summary validation","Handling political advertising compliance text"],"verdict":"worked","score":null,"score_total":null,"note":"The tool reconstructs the invoice hierarchy into nested JSON with invoice_metadata, advertiser, station, summary, and line_items objects rather than returning raw OCR.","evidence_state":"verified","source":null,"artifacts":[{"url":"https://d3epheqghktydj.cloudfront.net/research-media-invoice-schema-order-85baff3c493d.png","role":"input","alt":"Research media invoice schema order.png"},{"url":"https://d3epheqghktydj.cloudfront.net/research-media-extend-invoice-metadata-26a17634e0dd.png","role":"output","alt":null},{"url":"https://d3epheqghktydj.cloudfront.net/research-media-extend-ai-schema-order-invoice-b9ec455e6444.png","role":"output","alt":null},{"url":"https://cdn.futuresmart.ai/public/aidemos/fd8107ed65f54aac8d19e4cdc96c9906.mp4?v=1","role":"context","alt":null},{"url":"https://d3epheqghktydj.cloudfront.net/research-media-extendai-invoice-output-9eaac6626f6c.json","role":"output","alt":null}],"run_id":"a061b9e7-a9c5-443d-a171-b296aaf51b8c","study_title":"Extract and query structured data from documents using natural language","study_kind":"generation","research_task":"86b9y25e5","tested_at":null,"completeness":"input-and-output","input":{"state":"files","text":null,"files":[{"url":"https://cdn.futuresmart.ai/public/aidemos/e0e9f678bcde4e29a492a11927fc38f7.pdf?v=1","filename":"Invoice PDF.pdf","alt":"Invoice PDF","role":"input"}],"modality":"pdf","stresses":["Nested line-item hierarchy extraction","Multi-page continuity across a page break","Precision on large dollar amounts and totals","Parsing complex time slots and day patterns","Extraction of Ad IDs and reconciliation codes","Mapping structured metadata sections correctly","Financial summary validation","Handling political advertising compliance text"]},"tool_page_slug":"extend-ai","tool_url":"https://aidemos.com/tools/extend-ai","permalink":"https://aidemos.com/evidence/d73f718e-a9a9-4284-b33e-de2e4ed6da9b","api_url":"https://ai.aidemos.com/v1/observations/d73f718e-a9a9-4284-b33e-de2e4ed6da9b"},"peers":[{"id":"bdb8a9b6-f2fe-4f93-a1ae-1f0261437067","tool":"datalab","tool_name":"Datalab","verdict":"worked","score":null,"score_total":null,"note":"The invoice workflow can emit nested schema-shaped JSON with separate invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary objects rather than flat OCR text.","artifact_count":1,"thumbnail":"https://cdn.futuresmart.ai/public/aidemos/e05afc14d51f4f23bae1e9a22929fccd.mp4?v=1","evidence_url":"https://aidemos.com/evidence/bdb8a9b6-f2fe-4f93-a1ae-1f0261437067"},{"id":"a1af2980-0fa9-4aa3-910d-7dcdb0e75178","tool":"landing-ai","tool_name":"Landing AI","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the invoice hierarchy into invoice_metadata, advertiser, station, billing_address, remit_address, flight_dates, line_items, and summary objects rather than returning flat OCR text.","artifact_count":4,"thumbnail":"https://cdn.futuresmart.ai/public/aidemos/19c0891ec10d462fbb4ae3555f7ed5f3.mp4?v=1","evidence_url":"https://aidemos.com/evidence/a1af2980-0fa9-4aa3-910d-7dcdb0e75178"},{"id":"43e0f8e1-a013-4335-a8e9-0e66bcff72cd","tool":"llamaparse","tool_name":"LlamaParse","verdict":"worked","score":null,"score_total":null,"note":"The invoice output follows the supplied hierarchy closely, returning nested invoice_metadata, advertiser, station, line_items, and summary objects instead of a flat text dump.","artifact_count":3,"thumbnail":"https://d3epheqghktydj.cloudfront.net/research-media-llamaparse-invoice-metadata-af804b493598.png","evidence_url":"https://aidemos.com/evidence/43e0f8e1-a013-4335-a8e9-0e66bcff72cd"},{"id":"4a0ab0b3-2f6a-4dc0-8387-09bc3462ac42","tool":"nanonets","tool_name":"Nanonets","verdict":"worked","score":null,"score_total":null,"note":"Preserves the requested invoice hierarchy, populating invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary as separate JSON objects rather than flattening the page.","artifact_count":3,"thumbnail":"https://d3epheqghktydj.cloudfront.net/research-media-docstrange-nanonets-invoice-output-9dc0f476da4c.json","evidence_url":"https://aidemos.com/evidence/4a0ab0b3-2f6a-4dc0-8387-09bc3462ac42"},{"id":"bac4e4b0-48cf-4fdb-8df4-8dac86413cab","tool":"reducto","tool_name":"Reducto","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the requested nested invoice JSON rather than flattening the document, populating invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary sections.","artifact_count":3,"thumbnail":"https://cdn.futuresmart.ai/public/aidemos/1b328999a9744f8782faf8d8632db00c.mp4?v=1","evidence_url":"https://aidemos.com/evidence/bac4e4b0-48cf-4fdb-8df4-8dac86413cab"},{"id":"1aade406-f689-48ea-92b7-1b2089eae31b","tool":"retab","tool_name":"Retab","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the invoice schema into nested invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary sections rather than returning a flat document dump.","artifact_count":2,"thumbnail":"https://cdn.futuresmart.ai/public/aidemos/4819c75428154465a5eff0ce7f23f251.mp4?v=1","evidence_url":"https://aidemos.com/evidence/1aade406-f689-48ea-92b7-1b2089eae31b"},{"id":"87b13324-a0ba-424d-ae9f-8da3844ab650","tool":"unstract","tool_name":"Unstract","verdict":"worked","score":null,"score_total":null,"note":"Populates the invoice extraction into the requested hierarchy, separating invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary fields.","artifact_count":3,"thumbnail":"https://cdn.futuresmart.ai/public/aidemos/cb167e3d358042c28f510cff62220d39.png?v=1","evidence_url":"https://aidemos.com/evidence/87b13324-a0ba-424d-ae9f-8da3844ab650"}],"other_criteria":[{"id":"cb0c13d5-8296-4248-ad18-7b40db08339e","criterion":"extraction-accuracy","criterion_name":"Extraction Accuracy","rank_role":"decisive","verdict":"failed","score":null,"score_total":null,"note":"It over-reads the payment-term field, outputting `Payment Terms 30 Days` instead of the requested `30 Days`.","artifact_count":2,"evidence_url":"https://aidemos.com/evidence/cb0c13d5-8296-4248-ad18-7b40db08339e"},{"id":"32fb2961-ac21-4fbb-9f04-80b7d3289d32","criterion":"semantic-field-enrichment","criterion_name":"Semantic Field Enrichment","rank_role":"decisive","verdict":"worked","score":null,"score_total":null,"note":"The tool correctly derives higher-level line-item fields such as `day_of_week: Tu` and `days_pattern: -T----` alongside ad ID, reference number, and flight-period dates.","artifact_count":1,"evidence_url":"https://aidemos.com/evidence/32fb2961-ac21-4fbb-9f04-80b7d3289d32"},{"id":"34d850cc-ac0c-4e02-a62f-5f24678223a5","criterion":"structural-clean-output","criterion_name":"Structural Clean Output","rank_role":"context","verdict":"worked","score":null,"score_total":null,"note":"The invoice output includes per-section OCR confidence metadata alongside the extracted fields while remaining machine-readable JSON that can be consumed without structural transformation.","artifact_count":1,"evidence_url":"https://aidemos.com/evidence/34d850cc-ac0c-4e02-a62f-5f24678223a5"},{"id":"cbdef271-b824-418f-afc9-3031c0b079ab","criterion":"structural-clean-output","criterion_name":"Structural Clean Output","rank_role":"context","verdict":"failed","score":null,"score_total":null,"note":"It does not preserve the declared schema order, so the JSON is not directly consumable by order-sensitive pipelines without extra reshaping.","artifact_count":3,"evidence_url":"https://aidemos.com/evidence/cbdef271-b824-418f-afc9-3031c0b079ab"},{"id":"18ef9ee1-fba7-4665-a17e-e1951b8b0758","criterion":"table-record-completeness","criterion_name":"Table & Record Completeness","rank_role":"decisive","verdict":"worked","score":null,"score_total":null,"note":"It extracts all 8 advertising line items as separate records, preserving item boundaries across the page break without merging adjacent rows.","artifact_count":2,"evidence_url":"https://aidemos.com/evidence/18ef9ee1-fba7-4665-a17e-e1951b8b0758"}],"appears_in":[{"page_type":"ranking","slug":"document-extraction","title":"Best AI Tools for Extracting Structured Data from Business Documents","url":"https://aidemos.com/best/document-extraction","binding":"run"},{"page_type":"tool","slug":"docsumo","title":null,"url":"https://aidemos.com/tools/docsumo","binding":"run"}],"same_scenario":[{"id":"bdb8a9b6-f2fe-4f93-a1ae-1f0261437067","tool":"datalab","tool_name":"Datalab","verdict":"worked","score":null,"score_total":null,"note":"The invoice workflow can emit nested schema-shaped JSON with separate invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary objects rather than flat OCR text."},{"id":"a1af2980-0fa9-4aa3-910d-7dcdb0e75178","tool":"landing-ai","tool_name":"Landing AI","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the invoice hierarchy into invoice_metadata, advertiser, station, billing_address, remit_address, flight_dates, line_items, and summary objects rather than returning flat OCR text."},{"id":"43e0f8e1-a013-4335-a8e9-0e66bcff72cd","tool":"llamaparse","tool_name":"LlamaParse","verdict":"worked","score":null,"score_total":null,"note":"The invoice output follows the supplied hierarchy closely, returning nested invoice_metadata, advertiser, station, line_items, and summary objects instead of a flat text dump."},{"id":"4a0ab0b3-2f6a-4dc0-8387-09bc3462ac42","tool":"nanonets","tool_name":"Nanonets","verdict":"worked","score":null,"score_total":null,"note":"Preserves the requested invoice hierarchy, populating invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary as separate JSON objects rather than flattening the page."},{"id":"bac4e4b0-48cf-4fdb-8df4-8dac86413cab","tool":"reducto","tool_name":"Reducto","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the requested nested invoice JSON rather than flattening the document, populating invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary sections."},{"id":"1aade406-f689-48ea-92b7-1b2089eae31b","tool":"retab","tool_name":"Retab","verdict":"worked","score":null,"score_total":null,"note":"Reconstructs the invoice schema into nested invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary sections rather than returning a flat document dump."},{"id":"87b13324-a0ba-424d-ae9f-8da3844ab650","tool":"unstract","tool_name":"Unstract","verdict":"worked","score":null,"score_total":null,"note":"Populates the invoice extraction into the requested hierarchy, separating invoice_metadata, advertiser, station, account_details, billing_address, remit_address, flight_dates, line_items, and summary fields."}]}