Datalab icon
productivity

Datalab

Schema-paste extraction for bank statements and invoices, with cited JSON output and fast-mode recovery when schemas get large.

Visit Datalab
Schema pasteCited JSONBank statementsInvoice line items
TL;DR — our verdictUpdated July 2026 · 9 test artifacts

Strong structure, but bank-statement transactions need review

Where it wins
  • You want to paste a JSON schema and get nested JSON back without writing code.
  • You need extracted values to carry page and table citations for audit and review.
  • You can review bank-statement rows before downstream use, especially when the document is dense.
Main limitation
  • You need exact bank-statement row boundaries or transaction IDs without manual cleanup.
Pricing (verified plans)
Free Pay-as-you-goTeam $400/monthEnterprise Custom pricing
Strongest test artifacts

Our take

Datalab handled schema-guided extraction well: both PDFs came back as nested JSON, and the citations made the results easy to audit. The invoice path looked clean, with eight line items and summary totals extracted in a review-friendly structure. The bank-statement path was much rougher: rows were merged, transaction IDs stayed null, the count was inflated, and some rows were misclassified or misdated. Balanced mode also hit a schema-size error, but Fast mode recovered successfully, so the workflow is usable if a human can validate the financial rows before downstream use.

Screen recording of the schema-paste extraction flow and mode switching used in the bank-statement test.

In-Depth Review

Our detailed analysis of Datalab — features, performance, and real-world testing.

AD
AI Demos Team
Expert Reviewer
Verified Review

Feature-by-Feature Breakdown

Schema-Guided Nested Extraction
Strong overall, with cleaner invoice output than bank-statement rows.
Test Summary
Feature tested: Schema-Guided Nested Extraction
Result: Passed — Strong overall, with cleaner invoice output than bank-statement rows.

Feature tested: Schema-Guided Nested Extraction

Result: Passed

Verdict: Strong overall, with cleaner invoice output than bank-statement rows.

Expected behavior: Datalab can take a pasted JSON schema and extract business PDFs into nested structured output. The bank statement run reconstructed metadata, account, branch, balances, transactions, summary, and disclaimers, and the same schema-shaped approach was used on the invoice.

Test case: PDF document → Text/code file

Input type: PDF document

Input used: Input artifact (PDF document): Input — Bank Statement PDF.pdf

Observed output: Output artifact (Text/code file): Nested JSON for statement metadata, account, branch, balances, transactions, summary, and disclaimers was produced from the bank statement. — datalab-bank-statement-output.json

Input artifact: Input artifact (PDF document): Input — Bank Statement PDF.pdf

Output artifact: Output artifact (Text/code file): Nested JSON for statement metadata, account, branch, balances, transactions, summary, and disclaimers was produced from the bank statement. — datalab-bank-statement-output.json

What changed: PDF document transformed into Text/code file

Test case: PDF document → Text/code file

Input type: PDF document

Input used: Input artifact (PDF document): Input — Invoice PDF.pdf

Observed output: Output artifact (Text/code file): Nested JSON for invoice_metadata, advertiser, station, account_details, billing sections, line_items, and summary was produced from the invoice. — datalab-invoice-output.json

Input artifact: Input artifact (PDF document): Input — Invoice PDF.pdf

Output artifact: Output artifact (Text/code file): Nested JSON for invoice_metadata, advertiser, station, account_details, billing sections, line_items, and summary was produced from the invoice. — datalab-invoice-output.json

What changed: PDF document transformed into Text/code file

Why it matters / Conclusion: Good schema adherence across both documents, but the bank statement still needed transaction-level cleanup before downstream use.

Datalab can take a pasted JSON schema and extract business PDFs into nested structured output. The bank statement run reconstructed metadata, account, branch, balances, transactions, summary, and disclaimers, and the same schema-shaped approach was used on the invoice.

pdf
Bank Statement PDF.pdf
json
datalab-bank-statement-output.json
Loading file...
Nested JSON for statement metadata, account, branch, balances, transactions, summary, and disclaimers was produced from the bank statement.
pdf
Invoice PDF.pdf
json
datalab-invoice-output.json
Loading file...
Nested JSON for invoice_metadata, advertiser, station, account_details, billing sections, line_items, and summary was produced from the invoice.
Bottom Line
Good schema adherence across both documents, but the bank statement still needed transaction-level cleanup before downstream use.
Field Citations and Provenance
A clear strength for audit and review workflows.
Test Summary
Feature tested: Field Citations and Provenance
Result: Passed — A clear strength for audit and review workflows.

Feature tested: Field Citations and Provenance

Result: Passed

Verdict: A clear strength for audit and review workflows.

Expected behavior: Datalab can attach extracted values back to source locations such as pages, tables, and text spans. In the bank statement and invoice runs, citations were present on metadata, account, transaction, line-item, totals, and disclaimer fields.

Test case: PDF document → Image

Input type: PDF document

Input used: Input artifact (PDF document): Input — Bank Statement PDF.pdf

Observed output: Output artifact (Image): Citation paths are shown on extracted bank-statement values, including source page and text references. — datalab-bank-statement-extracted-citation.png

Input artifact: Input artifact (PDF document): Input — Bank Statement PDF.pdf

Output artifact: Output artifact (Image): Citation paths are shown on extracted bank-statement values, including source page and text references. — datalab-bank-statement-extracted-citation.png

What changed: PDF document transformed into Image

Test case: PDF document → Image

Input type: PDF document

Input used: Input artifact (PDF document): Input — Invoice PDF.pdf

Observed output: Output artifact (Image): Invoice metadata is shown with citations back to /page/0/Table/8 and /page/1/Table/8. — datalab-invoice-metadat.png

Input artifact: Input artifact (PDF document): Input — Invoice PDF.pdf

Output artifact: Output artifact (Image): Invoice metadata is shown with citations back to /page/0/Table/8 and /page/1/Table/8. — datalab-invoice-metadat.png

What changed: PDF document transformed into Image

Why it matters / Conclusion: Traceability is one of Datalab's strongest capabilities, but provenance does not fix extraction mistakes on messy transaction rows.

Datalab can attach extracted values back to source locations such as pages, tables, and text spans. In the bank statement and invoice runs, citations were present on metadata, account, transaction, line-item, totals, and disclaimer fields.

pdf
Bank Statement PDF.pdf
image
Output artifact for "Field Citations and Provenance" test: Citation paths are shown on extracted bank-statement values, including source page and text references., datalab-bank-statement-extracted-citation.png
Citation paths are shown on extracted bank-statement values, including source page and text references.
pdf
Invoice PDF.pdf
image
Output artifact for "Field Citations and Provenance" test: Invoice metadata is shown with citations back to /page/0/Table/8 and /page/1/Table/8., datalab-invoice-metadat.png
Invoice metadata is shown with citations back to /page/0/Table/8 and /page/1/Table/8.
Bottom Line
Traceability is one of Datalab's strongest capabilities, but provenance does not fix extraction mistakes on messy transaction rows.
Table and Transaction Row Reconstruction
Excellent on invoice rows; inconsistent on bank-statement transactions.
Test Summary
Feature tested: Table and Transaction Row Reconstruction
Result: Passed — Excellent on invoice rows; inconsistent on bank-statement transactions.

Feature tested: Table and Transaction Row Reconstruction

Result: Passed

Verdict: Excellent on invoice rows; inconsistent on bank-statement transactions.

Expected behavior: Datalab can turn tables and repeating transaction rows into structured arrays. The invoice produced eight clean line items, while the bank statement showed mixed row segmentation quality on several transaction entries.

Test case: Image → Image

Input type: Image

Input used: Input artifact (Image): Input — bank-statement-21-jun-transactions.png

Observed output: Output artifact (Image): The 21 Jun statement rows were collapsed into one long UPI/merchant description, showing merged transaction boundaries. — datalab-bank-statement-21-jun-extracted-transactions.png

Input artifact: Input artifact (Image): Input — bank-statement-21-jun-transactions.png

Output artifact: Output artifact (Image): The 21 Jun statement rows were collapsed into one long UPI/merchant description, showing merged transaction boundaries. — datalab-bank-statement-21-jun-extracted-transactions.png

What changed: Image transformed into Image

Test case: Image → Image

Input type: Image

Input used: Input artifact (Image): Input — bank-statement-18-june-transaction-id.png

Observed output: Output artifact (Image): The 18 Jun ATM withdrawal kept the embedded reference number in the description but returned transaction_id as null. — datalab-bank-statement-extracted-18-jun-transaction-id.png

Input artifact: Input artifact (Image): Input — bank-statement-18-june-transaction-id.png

Output artifact: Output artifact (Image): The 18 Jun ATM withdrawal kept the embedded reference number in the description but returned transaction_id as null. — datalab-bank-statement-extracted-18-jun-transaction-id.png

What changed: Image transformed into Image

Test case: Image → Image

Input type: Image

Input used: Input artifact (Image): Input — bank-statement-28-jun-transaction.png

Observed output: Output artifact (Image): The 28 Jun row was classified as Deposit even though the row contained a 399 withdrawal, which is a classification error. — datalab-bank-statement-extracted-28-jun-transaction.png

Input artifact: Input artifact (Image): Input — bank-statement-28-jun-transaction.png

Output artifact: Output artifact (Image): The 28 Jun row was classified as Deposit even though the row contained a 399 withdrawal, which is a classification error. — datalab-bank-statement-extracted-28-jun-transaction.png

What changed: Image transformed into Image

Test case: PDF document → Image

Input type: PDF document

Input used: Input artifact (PDF document): Input — Bank Statement PDF.pdf

Observed output: Output artifact (Image): The extracted summary reported 54 total transactions, which exceeded the expected count and confirmed over-segmentation or duplicated rows. — datalab-bank-statement-transaction-count.png

Input artifact: Input artifact (PDF document): Input — Bank Statement PDF.pdf

Output artifact: Output artifact (Image): The extracted summary reported 54 total transactions, which exceeded the expected count and confirmed over-segmentation or duplicated rows. — datalab-bank-statement-transaction-count.png

What changed: PDF document transformed into Image

Test case: PDF document → Image

Input type: PDF document

Input used: Input artifact (PDF document): Input — Invoice PDF.pdf

Observed output: Output artifact (Image): The invoice line_items array expanded to eight entries, showing clean row separation in the output tree. — datalab-invoice-line-items.png

Input artifact: Input artifact (PDF document): Input — Invoice PDF.pdf

Output artifact: Output artifact (Image): The invoice line_items array expanded to eight entries, showing clean row separation in the output tree. — datalab-invoice-line-items.png

What changed: PDF document transformed into Image

Why it matters / Conclusion: Invoice rows were reconstructed cleanly, but bank-statement segmentation was not reliable enough to trust without review.

Datalab can turn tables and repeating transaction rows into structured arrays. The invoice produced eight clean line items, while the bank statement showed mixed row segmentation quality on several transaction entries.

image
Input artifact for "Table and Transaction Row Reconstruction" test: Input, bank-statement-21-jun-transactions.png
image
Output artifact for "Table and Transaction Row Reconstruction" test: The 21 Jun statement rows were collapsed into one long UPI/merchant description, showing merged transaction boundaries., datalab-bank-statement-21-jun-extracted-transactions.png
The 21 Jun statement rows were collapsed into one long UPI/merchant description, showing merged transaction boundaries.
image
Input artifact for "Table and Transaction Row Reconstruction" test: Input, bank-statement-18-june-transaction-id.png
image
Output artifact for "Table and Transaction Row Reconstruction" test: The 18 Jun ATM withdrawal kept the embedded reference number in the description but returned transaction_id as null., datalab-bank-statement-extracted-18-jun-transaction-id.png
The 18 Jun ATM withdrawal kept the embedded reference number in the description but returned transaction_id as null.
image
Input artifact for "Table and Transaction Row Reconstruction" test: Input, bank-statement-28-jun-transaction.png
image
Output artifact for "Table and Transaction Row Reconstruction" test: The 28 Jun row was classified as Deposit even though the row contained a 399 withdrawal, which is a classification error., datalab-bank-statement-extracted-28-jun-transaction.png
The 28 Jun row was classified as Deposit even though the row contained a 399 withdrawal, which is a classification error.
pdf
Bank Statement PDF.pdf
image
Output artifact for "Table and Transaction Row Reconstruction" test: The extracted summary reported 54 total transactions, which exceeded the expected count and confirmed over-segmentation or duplicated rows., datalab-bank-statement-transaction-count.png
The extracted summary reported 54 total transactions, which exceeded the expected count and confirmed over-segmentation or duplicated rows.
pdf
Invoice PDF.pdf
image
Output artifact for "Table and Transaction Row Reconstruction" test: The invoice line_items array expanded to eight entries, showing clean row separation in the output tree., datalab-invoice-line-items.png
The invoice line_items array expanded to eight entries, showing clean row separation in the output tree.
Bottom Line
Invoice rows were reconstructed cleanly, but bank-statement segmentation was not reliable enough to trust without review.

Reported plans

Free
Pay-as-you-go
Includes a free monthly API allowance, followed by usage-based pricing.
Team
$400/month
Higher rate limits, production-ready access, and enhanced support.
Enterprise
Custom pricing
Hosted or self-managed deployments with custom infrastructure, commercial terms, and dedicated support.

Pricing was stated in the task report; no plan limits or quotas were verified in this test.

✓ Use This If
You want to paste a JSON schema and get nested JSON back without writing code.
You need extracted values to carry page and table citations for audit and review.
You can review bank-statement rows before downstream use, especially when the document is dense.
✕ Skip This If
You need exact bank-statement row boundaries or transaction IDs without manual cleanup.
You need the output to preserve your schema field order exactly as written.
You need natural-language querying over the extracted data, because this research only demonstrated extraction and review.
productivitypdf-toolstext
It handled a bank statement PDF and an invoice PDF.
Yes. The report says JSON schema paste worked successfully, and the extracted output followed the uploaded schema structure.
Yes. The bank-statement and invoice outputs both included citation paths back to page, table, or text locations.
The bank-statement output was usable but imperfect: it returned 54 transactions instead of the expected 51, merged some rows, left transaction_id values null, and misclassified at least one row.
The invoice extraction was much cleaner. The report says all eight line items were extracted as individual structured records, and the summary values matched the source.
No. The report says the invoice output did not preserve the supplied schema order exactly, even though the extracted values were correct.
Balanced mode returned a schema-size error on the bank-statement run and recommended switching to Fast mode. Fast mode then completed successfully.
The report listed three plans: Free at pay-as-you-go pricing with a free monthly API allowance, Team at $400/month, and Enterprise with custom pricing.

Banner Preview

How the embed badge will look on your site

Datalab featured on AI Demos

Embed HTML

Copy this code to your website source

<a target="_blank" href="https://aidemos.com/tools/datalab?utm_source=datalab_embed" style="width: 250px; height: 80px; border-radius:4px;" width="250" height="80"> <img src="https://aidemos-website-images.s3.amazonaws.com/featured.png" alt="Datalab | Featured on AI Demos" style="width: 250px; height: 80px; border-radius:4px;" width="250" height="80"> </a>

Quick Integration Guide

  • 1Copy the HTML code block above.
  • 2Paste it into your site's HTML or CMS editor.
  • 3Banner appears instantly on your page.
  • 4Links back to your tool profile here.
Similar Tools

Similar Tools

Discover more AI tools like Datalab to enhance your workflow.

Comments (0)

Please Log in to join the discussion.

Back to Top