Finance · Quick Kit

Transaction Categorization & Anomaly Gate

Screen a bank or card feed before it reaches the ledger. Categorize by your own rules, catch the rows you can't post, and get one honest go / no-go.

Clean cells, blocked batch. A feed where every amount is sane can still be HOLD - because you cannot post a transaction no rule could classify.

one-time · instant download · .xlsx · yours to keep

The problem

A net-zero feed is not a clean feed.

Exports balance, so they look ready. But one row no rule could categorize, one date typed in the wrong format, one transaction pasted twice - any of those quietly corrupts the books downstream, and a totals check won't catch it. You need the screen that runs before the ledger, not after.

See it run

The screen, live.

Live screen · edit any row

Eight transactions, six category rules. Every amount is sane and every date is in range — yet the batch is HOLD. Try giving row 6 a matching rule (e.g. an “acme” rule) and watch the gate release to REVIEW ROWS.

#DateDescriptionAmountCategoryScoreVerdict
1Software100CLEAN
2Software100CLEAN
3Travel100CLEAN
4Software100CLEAN
5Software100CLEAN
6(uncategorized)50FLAG

no category rule matched

7Software100CLEAN
8Software100REVIEW

amount outlier in Software

Batch verdict

HOLD

clean-rate 94 · 6 CLEAN / 1 REVIEW / 1 FLAG · fix first: row 6

Why HOLD with clean cells

A structural fault — an uncategorized row, a bad date or amount, an exact duplicate — is dispositive: it holds the whole batch no matter how high the clean-rate. An outlier or a possible duplicate only flags a row for review. Clean cells, blocked batch.

This is the live engine. The full .xlsx: paste your own feed, write your own rules, get the same gate. Start Here, Dashboard, and Transaction Screen tabs - opens in Excel, Sheets, or Numbers.

Get the kit — $49

Scores a transaction file's structure and consistency, not people. It flags rows to look at; it never moves money or edits your books. Not accounting, tax, or legal advice.

The standard

Two tiers of anomaly, one honest gate.

Structural faults are dispositive

An unparseable date, a non-numeric amount, an uncategorized row, or an exact duplicate forces HOLD - regardless of the clean-rate. The score can't outvote a row you can't post.

Graduated signals only flag

A statistical outlier amount or a possible duplicate marks a row REVIEW for a human to confirm. On its own it never blocks the batch - a real one-off purchase is fine once you check it.

Your rules, no AI guessing

Categorization is your keyword-to-category table, first match wins. Deterministic and offline; the same feed and rules give the same answer every time.

How it works

Three steps, one afternoon.

  1. 1Write your rules: a keyword and the category it maps to. Specific keywords go higher - first match wins.
  2. 2Paste your feed: date (YYYY-MM-DD), description, amount. The formula columns compute themselves.
  3. 3Read the Dashboard: POST READY, REVIEW ROWS, or HOLD - with the row to fix first.

Who it's for

Built for the person who posts the feed.

It is

  • Bookkeepers, founders, and ops people prepping a feed for the ledger
  • A pre-posting screen for categorization, duplicates, and outliers
  • A deterministic, offline check you can rerun any time

It isn't

  • · A bookkeeping engine - it never posts an entry or moves money
  • · An AI categorizer - it applies the rules you write
  • · A way to score or rank people - it grades a file's structure

It flags rows to look at and points to the reason; you decide what to post and keep ownership of every number. Not accounting, tax, or legal advice.

Pairs well with

The rest of the back office.

Common questions

The questions bookkeepers actually ask before they post a feed.

Because a structural fault is dispositive and the clean-rate can't outvote it. In the worked eight-row feed every amount is sane and every date is in range, so the clean-rate is 94 — but row 6 (“ACME Holdings wire transfer”) matched none of your rules, so it's uncategorized, and you cannot post a transaction you haven't categorized. One uncategorized row forces the whole batch to HOLD regardless of the score. The clean-rate is the mean of the row scores, shown for context only — a net-zero feed is not a clean feed. Give the ACME row a matching rule and the gate releases to REVIEW ROWS (the amount outlier on row 8 flags a row but never blocks alone).

Get the kit

Screen the feed before you post it.

  • One .xlsx, three tabs, a worked example
  • Your rules, your feed, the same gate every time
  • No AI, no internet, nothing uploaded
$49

one-time

Buy the Gate

← Browse all Quick Kits

Sold by RedHub AI LLC · Secured by Stripe · redhub.ai