Recategorize anything
Move a transaction to any of the twelve spending categories. Your choice is stored separately from the provider's value and wins from then on — clearing it simply falls back to the original.
Expense tracking
Manual expense tracking dies the same death every time: it works beautifully for eleven days. feels.money categorizes each transaction as it arrives, cleans up the unreadable bank descriptors, and groups the charges that keep coming back — so the only work left is the interesting part, which is deciding what to do about it.
Here is precisely how that happens, including where it gets things wrong and what you can do about it.
where the data comes from
Transactions reach feels.money through FeelConnect, the financial data platform we built underneath it. That covers banks, credit unions, payment apps, brokerages, and crypto exchanges and wallets. Connections are read-only: we can see balances and transactions, and there is no code path by which we could move money, initiate a payment, or change anything at your institution. The security page goes through that in detail.
If an institution is not covered yet, importing a CSV, OFX or QFX file gets you to the same place. Imported transactions are normalized into the same shape as synced ones, which means budgets, subscription detection, insights and the health score all behave identically. There is no second-class data path.
Once a transaction lands it is cached locally so that the app is fast and works even when an upstream provider is having a bad day. Amounts are stored as exact decimals and every calculation that matters runs through integer-cent arithmetic, because floating point quietly loses pennies and a personal finance app that loses pennies deserves to be uninstalled.
the taxonomy
Enough structure to answer real questions, few enough that you can hold the whole list in your head.
The primary categories are Income, Transfer, Food & Drink, Groceries, Shopping, Entertainment, Travel, Transport, Housing, Utilities, Subscriptions, Health & Fitness, Fees, and Other. Two of those — Income and Transfer — are not spending, and are excluded from budgets and spending analytics by design.
Food & Drink and Groceries are separate on purpose. Lumping the weekly shop together with three months of takeaway hides the single most actionable pattern in most people's spending, and a tracker that hides it is doing you no favours. The same logic splits Subscriptions out of Entertainment: one is a recurring commitment you can cancel, the other is a decision you make on a Friday night.
The full category taxonomy
01Income
Salary · Freelance · Interest · Dividends · Refund · Bonus · Other Income
02Transfer
Internal Transfer · External Transfer · Savings Transfer · Investment Contribution · Credit Card Payment · Loan Payment · Cash Withdrawal · Cash Deposit
03Food & Drink
Restaurants · Fast Food · Coffee Shops · Bars & Nightlife · Delivery · Bakeries & Desserts
04Groceries
Supermarket · Convenience Store · Specialty Foods · Warehouse Club · Farmers Market
05Shopping
Clothing & Apparel · Electronics · Home Goods · Online Marketplace · Beauty & Personal Care · Books & Hobbies · Pets · Gifts
06Entertainment
Streaming · Movies & Events · Music · Games · Concerts & Shows · News & Magazines
07Travel
Flights · Hotels & Lodging · Car Rental · Vacation Packages · Travel Insurance
08Transport
Rideshare · Public Transit · Fuel · Parking · Tolls · Auto Maintenance · Auto Payment
09Housing
Rent · Mortgage · Home Insurance · Property Tax · Home Improvement · Furniture · HOA Fees
10Utilities
Electricity · Water & Sewer · Gas · Internet · Mobile Phone · Trash & Recycling
11Subscriptions
Software & SaaS · Cloud Storage · Memberships · Meal Kits · Box Subscriptions · Education & Courses
12Health & Fitness
Gym & Fitness · Pharmacy · Doctor & Dental · Vision · Mental Health · Sports & Outdoors
13Fees
Bank Fees · ATM Fees · Late Fees · Interest Charges · Foreign Transaction Fees · Service Charges
14Other
Uncategorized · Charity & Donations · Education · Childcare · Taxes · Legal & Professional
Anything that cannot be placed confidently lands in Other › Uncategorized rather than being forced into a plausible-looking bucket. A visible gap you can fix in one tap is far better than a confident wrong answer you never notice.
how it decides
Categorization happens upstream, in FeelConnect, as transactions are ingested — so a transaction is already carrying a primary and a detailed category by the time it reaches your account. Nothing has to be classified while you wait, and nothing is left uncategorized until you next open the app.
The classifier itself is a table of explicit patterns — several hundred of them — tested against the description and merchant fields combined. The order of that table is the interesting part, because it encodes what actually matters:
A model is never required for a category to exist, which is the whole point of building it this way round. Where FeelConnect's AI enrichment is used, it refines what the rules left ambiguous and never replaces them: a deterministic answer is computed first, and if the AI backend is slow, down, or returns nonsense, that deterministic answer ships anyway. Every enrichment response records which engine produced it — rules, ai, or ai+rules — so provenance is inspectable rather than mysterious. The same principle runs through the coach.
Anything a model returns is clamped back onto the taxonomy before it is stored. An invented category cannot enter your data: an unrecognized primary becomes Other, and an unrecognized subcategory falls back to the first valid one for its primary.
merchant enrichment
Bank descriptors are written for settlement systems, not for you. They arrive padded with store numbers, terminal ids, processor prefixes, city codes and stray punctuation. Before anything is grouped or displayed, each descriptor is normalized into a stable key: uppercased, runs of digits stripped, punctuation collapsed, whitespace squeezed, truncated to a sensible length.
That key does two jobs. It produces the clean, title-cased merchant name you see in the app, and — more importantly — it makes the same merchant collapse into one entity across months even when the store number changes every visit. Without that step, your top-merchants list would be forty variations of the same coffee shop.
Four descriptors, enriched
recurring detection
A merchant is not recurring because it sounds like a subscription. It is recurring because the timing and the amount say so.
Transactions are grouped by normalized merchant and direction, then tested on two axes. First, cadence: the median gap between charges has to fall inside a known window — weekly, biweekly, monthly, quarterly or annual — and most of the individual gaps have to sit near that period, not merely average out to it. Second, amount stability: the variation in the charge amounts has to stay under a ceiling, because a merchant you visit every week for wildly different sums is a habit, not a commitment.
Streams that pass both tests become recurring items, and the ones that are stable enough and cheap enough get classified as subscriptions rather than bills. The exact thresholds, and what the app does with the result, are laid out on the subscription tracker page.
Two merchants, one verdict each
your corrections
Move a transaction to any of the twelve spending categories. Your choice is stored separately from the provider's value and wins from then on — clearing it simply falls back to the original.
A reimbursed flight or a transaction you have already accounted for elsewhere can be dropped from every total without deleting it, so the record stays honest and the maths stays useful.
Mark a purchase as one you did not plan. It is your own annotation rather than an input to a score — the point is that next month you can see which purchases you already knew were impulses.
Up to 500 characters per transaction. Future you, staring at a $214 charge from six weeks ago, will be grateful.
Underneath all four is one rule: your input is stored separately from what the provider or the model said, and the effective value always prefers yours. There is no scenario in which a routine sync quietly reverts a decision you made. If you clear an override, the original value simply reappears.
what it notices
Categorized transactions make a handful of deterministic detectors possible, and each one exists because it answers a question people actually ask about their own money:
None of these produce a score, and none of them scold. They are observations with the numbers attached, so you can decide whether a pattern is a problem or simply the shape of a particular month. If you want the interpretation, that is what the monthly review guide is for.
questions
Connect one account free, or import a file if your bank isn't covered yet. Whatever history your institution provides arrives categorized on the first sync, and the spending view is populated before you have finished making a coffee.