🤖

How AI Reads Your Bank Statements to Find Hidden Subscriptions

Not all recurring charges look the same. Here's the pattern-matching logic behind Winnowfi's auto-detection engine — and why it catches what spreadsheets miss.

D
David Miranda · Founder & CEO
·May 14, 2026·5 min read
Share:Twitter/XLinkedIn

Why "just check your bank" isn't enough

The traditional advice for finding subscriptions is simple: review your bank statements. But modern subscription charges are deliberately obfuscated. A Netflix charge might appear as "NFLX*XXXX" or "Netflix.com" depending on the card network. A gym membership might show up as the parent company's name rather than the gym brand you know.

Winnowfi's detection engine was built to handle this messy reality.

The three pillars of subscription detection

1. Temporal pattern recognition

The first signal is time. A genuine subscription charge appears on a predictable interval — daily (rare), weekly, monthly, quarterly, semi-annually, or annually. The engine builds a statistical model of your transaction history and flags charges that repeat within a ±3-day variance window. This catches most legitimate subscriptions even when billing dates drift slightly.

2. Merchant normalization

Bank transaction descriptions are notoriously inconsistent. "SPOTIFY USA" and "SPOTIFY*PREMIUM" are the same charge, but a simple string match would miss the relationship. Winnowfi maintains a merchant normalization table that maps thousands of raw bank descriptor variants to canonical service names — so you see "Spotify" rather than "SP*SPOTIFYUSA877."

3. Amount clustering

Subscription prices occasionally change. When a service raises its price by $2, a naive detector would treat the new charge as a separate transaction. Winnowfi uses amount clustering to track charges within a ±15% band over time, recognizing price evolution as continuity rather than a new event.

What makes it hard

The trickiest charges to detect are:

  • Annual subscriptions — appearing only once, they look like one-off purchases until a second charge confirms the pattern.
  • Usage-based bills — cloud services like AWS or Google Cloud have variable amounts; distinguishing these from true subscriptions requires additional signals.
  • Marketplace bundles — when an Amazon or Apple charge contains multiple underlying subscriptions, the engine needs to disaggregate them.

How Winnowfi handles false positives

Not every recurring charge is a subscription you want to track — rent, utilities, and loan payments are also periodic. The engine uses a curated exclusion list of known non-subscription merchants, combined with a confidence score. Charges below the confidence threshold are surfaced as "possible subscriptions" for you to confirm, rather than added automatically.

Privacy first

Winnowfi connects to your bank via Plaid, which uses read-only access — we can see transactions but cannot move money. All transaction data is encrypted at rest and in transit. We never sell your financial data to third parties. Full details are in our Privacy Policy.

D

David Miranda

Founder & CEO

David built WinnowFi to solve a problem he lived — hidden subscriptions, surprise charges, and budget chaos. 20% of every dollar WinnowFi earns goes to autism research. Learn more →

Stop paying for subscriptions you forgot about.

WinnowFi automatically finds every recurring charge in your bank account — free to start, no credit card required.

Start free →

More from the blog