Skip to main content
Save 30% on your first year

Analytics and AI

Purchase data your models and agents can cite

Labels built on another vendor's guesses teach your model to guess. Smartbills supplies line items, SKUs, tax and payment method from the merchant's own record, with the source on every field.

Smartbills matches each transaction to the merchant's itemized receipt and records the source and confidence of every field.

Enriched transactionSource: receipt
Raw descriptorMETRO #182 MONTREAL QC • $84.27
MerchantMetro / Metro Inc.
Location1275 Rue Sainte-Catherine E, Montreal QC / store 182
Line items11 lines / SKU, quantity, unit price and line tax on each
TaxGST 1.04, QST 2.08 / per line
TipNone on this receipt
Payment methodMastercard 2290 / chip
Confidence1.00 / source: receipt
Source: receiptProvenance per field

Labels taken from the merchant's own document

A receipt-matched transaction is a labelled example where the merchant supplied the label. Use it as training data, as an evaluation set, or to settle things when two of your own systems disagree.

  • Receipt-matched transactions as a labelled corpus
  • Provenance per field: merchant record, corpus or model
  • A confidence score on every field you can filter by

An agent that can cite its source

Whether an agent's answer about spend is useful or a liability comes down to whether it can say where the number came from. Every Smartbills field records that.

  • Line-item detail an agent can reason over
  • Fields an agent can attribute to a source
  • REST and batch access to the same record

Backfill first, then the live stream

Most teams start with a bulk backfill of their history. It's also the quickest way to measure the coverage you'd get in production, and the live endpoint follows once you've seen the numbers.

Why teams switch

Your model is learning another vendor's guesses.

Our training labels turned out to be another vendor's inference, so we're learning their mistakes.

Receipt-matched transactions are labelled by the merchant who made the sale, and behind each example is a document you can open.

Our agent answers a spend question and can't say where the number came from.

Every field carries its provenance and a confidence. The agent can attribute an answer to a merchant record, the corpus or a model and word it accordingly.

A category total is built on rows with no breakdown underneath, and nobody can check it.

Line items, SKUs, tax components and payment method arrive as structured data. Any aggregate can be taken apart and verified.

Into your own pipeline

Pull the corpus into your own pipeline, or have your agent read the same records through an endpoint. Either way, provenance travels with each field.

  1. Send the backfill

    Historical transactions in bulk: descriptor, amount and timestamp, and nothing that identifies the cardholder.

  2. Matches become labels

    Each receipt-matched transaction becomes an example labelled by the merchant who made the sale.

  3. The rest is flagged

    Values filled from the corpus or a model are marked that way, with a confidence you can filter on.

  4. Train and evaluate

    You choose the features and splits, and where ground truth ends and a hint begins.

Read directly by your agent

  1. Point the agent at a record

    One call per transaction returns its line items and tax as structured fields.

  2. Every field has a source

    The agent can tell a merchant record from a corpus value or a model estimate, and weigh each accordingly.

  3. Answers cite the receipt

    Where a receipt matched, the original is linked, so any claim about spend can be checked.

  4. Webhooks keep it current

    A record updates when a late receipt turns an estimate into a confirmed value.

FAQ

Frequently asked questions

What people ask us before they sign up.

The label comes from the merchant's own record of the sale. When a network merchant issued an itemized receipt and it matched your transaction, the merchant, basket, tax and payment method are read off that document. When no receipt matched, the row is resolved statistically and marked that way.

Filter on provenance and confidence, which every field returns. You might keep only merchant-record fields for training, allow a wider set for evaluation, and set a separate threshold for what an agent may state without hedging.

Yes, and it's one of the more common starting points. A receipt-matched corpus is a held-out set your classifier has never seen. Because each label is a document, a disagreement between your model and the receipt is a finding to look into, not an argument.

Through a batch endpoint for historical backfill, a REST endpoint for the live stream, and webhooks for receipts that arrive after the authorization. Your pipeline and your agent read the same record. An offline evaluation and an online answer see the same version of a transaction.

In its own region: Canadian data is resident in Canada and European data in Europe. Enrichment doesn't need or receive cardholder identity, because the thing being modelled is the transaction.

Get started

Measure your coverage before you build on it

Send a backfill of historical transactions and we'll report how many match a real receipt, by market and by category, before you commit to anything.