Transactions & categories
How AI categorisation works
How keel assigns categories automatically, confidence levels and when it asks for help.
keel uses AI to categorise your bank transactions automatically. It reads merchant names, transaction codes and your household's own history to assign each transaction a category — and when it isn't sure, it asks rather than guesses.
The result: after your first import or two, the large majority of transactions arrive already categorised, and the review queue only shows the genuinely ambiguous ones.
How it works
The pipeline
- Transactions arrive from a statement import.
- Merchant names are cleaned up — transaction IDs, codes and noise stripped out.
- keel checks whether your household has seen this merchant before. If there's a confident match, the transaction is categorised instantly — no AI needed.
- keel checks its built-in list of common UK merchants. If it recognises the name (Costa, Netflix, Aldi, the big utilities, fuel forecourts...), the transaction is filed straight away — again, no AI needed.
- The remaining transactions go to the AI in batches.
- Each comes back with a category and a confidence level.
Confidence levels
| How confident keel is | What happens | Where it appears |
|---|---|---|
| Confident | Categorised automatically, marked done | All Transactions |
| Somewhat confident | The suggestion is shown for you to confirm | Review queue |
| Not confident | keel asks, with no suggestion | Review queue |
keel is deliberately conservative: it only auto-categorises when confident. When a payment goes through a service like PayPal, GoCardless or SumUp, keel looks past the processor for the actual shop named in the description. If it recognises that shop from a category you've set before, it offers a suggestion for you to confirm with one tap (and files future payments to that shop automatically once you have); if there's no recognisable shop, the payment goes to your review queue with no guess. Person-to-person payments go to review the same way. A payment addressed to a bank's own name also goes to review, since it could be a loan, a mortgage, a card or an overdraft, and keel would rather ask than guess.
The names keel already knows
keel ships knowing the most common UK merchants, and files them the moment they appear — no AI, no waiting, and the same answer every time. That covers coffee shops and fast food, streaming and software, the discount grocers, high-street fashion, the big energy, water and mobile suppliers, fuel forecourts, a wide range of everyday national shops (from Pets at Home and Trainline to Lush, Spar and the cinema chains, plus popular kids' activity classes), and a few government and statutory payments with one obvious home: road tax to the DVLA, NS&I and Premium Bonds (savings), the TV Licence, and council tax. It also recognises the bank statement lines that always mean the same thing, like overdraft interest, credit-card interest and foreign-transaction fees, so those file themselves too. Where a description could genuinely mean more than one thing, keel holds back: a petrol-station Spar is treated as fuel rather than groceries, and a bare "late fee" (which could come from a card, a parking app or a council) is read in context rather than assumed to be a bank charge.
Shops that sell more than one thing get split correctly. A supermarket fuel stop and a supermarket food shop belong in different categories, and keel tells them apart from the transaction itself when your bank labels them differently ("Tesco Petrol" vs "Tesco Stores") — for Tesco, Sainsbury's, Asda and Morrisons. And for shops that span categories (those supermarkets, plus Amazon, which sells everything), keel deliberately won't let a single correction freeze one category onto every future transaction there — it keeps reading each one on its own, using your history at that merchant, so fixing one Tesco food shop never mislabels your next Tesco fuel stop. Insurers stay categorised by what the policy protects.
A couple of government payments are handled on purpose rather than filed automatically. Child maintenance you receive is treated as income; child maintenance you pay is sent to your review queue, because no single category really fits a family-support payment. Payments to HMRC are left to the AI for now — a tax payment can mean several different things, and keel doesn't yet have a dedicated way to report tax.
How insurance is categorised
Many insurers sell several kinds of cover, so keel categorises a policy by what it protects rather than by the brand. Cover for a person — private medical, life, income protection — goes to Health & Medical. Cover for your home goes to Home Insurance. Cover for a vehicle goes to Vehicle Finance & Insurance. When a payment shows only the brand with no hint of the product, it goes to the review queue so you can place it. The exception is an insurer that only sells one kind of cover: a pet-specific insurer like Petplan or ManyPets protects exactly one thing, so it files straight to Pets without waiting for review.
What the AI considers
- The merchant name and its cleaned-up variants
- The bank's transaction code (DD for direct debit, FPI for faster payment in, and so on)
- UK-specific patterns — council tax, water companies, insurers
- Your household's past categorisation decisions
- Each category's description and example merchants
Large imports
Small imports are processed in real time. Larger ones run in the background — you can navigate away and come back; keel checks progress automatically. If a batch fails, you can retry from the dashboard or the import page.
When an import has the same shop many times over (a year of coffee runs, say), keel reads that shop once and applies the answer to the rest, instead of checking every single one. Big historic imports finish faster this way, and the result is exactly what a one-by-one check would have given. Shops that genuinely sell different kinds of thing (the supermarkets, Amazon) are still read individually, so a fuel stop and a food shop are never lumped together, and anything keel is unsure about still lands in your review queue as normal.
Learning from you
keel learns merchants two ways: when the AI categorises a merchant with high confidence, it remembers; and when you confirm or correct a category, that decision always wins over anything the AI learned. Correct a merchant once and every future transaction from it is categorised correctly. Full details in How keel learns your merchants.
The explanation line
Every categorised transaction carries a one-line explanation of what keel thinks it is. Usually that comes from the AI. For a handful of well-understood transaction types — credit card payments, savings deposits, pot transfers, internal transfers, savings interest, confirmed subscriptions, and known direct-debit fixed costs — keel uses clear standard wording instead when the AI's own explanation would have been vague. If the AI wrote something specific and useful, that's kept.
Why it works this way
Cautious confidence means fewer wrong guesses to undo. And the learning is household-specific: your corrections train your keel, not everyone's — so your "Tesco is Groceries except the petrol station" stays yours.
FAQ
Why is keel asking me about obvious transactions? The AI is being cautious. Once you confirm, it learns and won't ask again.
Does correcting one transaction fix all future ones? Yes, for the same merchant — the learning persists across all future imports. The one exception is shops that genuinely sell more than one thing (supermarkets, Amazon): there, keel won't freeze a whole merchant to one category off a single correction, because your grocery fix shouldn't relabel your next fuel stop. It reads those each on their own instead.
Can I re-run categorisation? Yes — from the dashboard if a batch fails, or via the import page.
Why did my car insurance land under Vehicle Finance & Insurance, not Health? keel categorises insurance by what the policy protects. A motor policy belongs with your other vehicle costs; a health or life policy belongs under Health & Medical. If the brand alone was visible and keel couldn't tell which product it was, it would have asked you in the review queue instead.