DOCUMENT OPS

Duplicate receipt detection with Slack alert

On each new receipt, checks BigQuery for an existing record with the same vendor, date, and amount and posts a Slack alert when a likely duplicate or double-submission is found.

CategoryDocument Ops
Enginesim
Difficultyintermediate
Triggerevent
Steps5
Setup~15 min

How it runs

The automated pipeline, trigger to output.

  • TriggerNew receipt row written to BigQueryGoogle BigQueryBigQuery
  • ActionQuery BigQuery for matching vendor, date, and amountGoogle BigQueryBigQuery
  • LogicBranch on whether a likely duplicate was found
  • ActionPost side-by-side duplicate alert to SlackSlack
  • OutputTag row as pending-review in BigQueryGoogle BigQueryBigQuery

What it does

Catches duplicate expense submissions before they get reimbursed twice. For every receipt parsed into BigQuery, it queries for prior rows matching the same vendor, date, and total within a small amount tolerance, and routes any match to a Slack channel for a human to confirm or dismiss.

When to use it

Use it when the same receipt gets submitted from two devices, forwarded twice, or re-uploaded after a failed sync. Finance teams run this to stop double payments and to spot employees accidentally claiming the same expense across reports.

How it works

  1. 1A new parsed receipt record arriving in BigQuery triggers the check.
  2. 2An action queries BigQuery for earlier records with the same vendor and date and a total within the configured tolerance.
  3. 3A logic step decides: zero matches means clean, one or more means a suspected duplicate.
  4. 4On a suspected duplicate, a Slack message posts both records side by side with confirm and dismiss actions.
  5. 5The original record is tagged in BigQuery as pending-review so it is excluded from spend totals until resolved.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect BigQueryDatasets, queries, schemas.
  2. 2
    Connect SlackChannels, DMs, threads, mentions.
  3. 3
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  4. 4
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  5. 5
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.