PREDICTIVE TREND INSIGHT
How to ask a chatbot to scan my spending file and flag subscription traps Illustration

How to ask a chatbot to scan my spending file and flag subscription traps

Direct Summary:

Detecting recurring subscription charges from a bank statement is fundamentally a pattern-matching problem — the same merchant name and roughly the same amount repeating at regular intervals — which a code-execution tool can find reliably by grouping transactions and counting repeats, rather than a chatbot eyeballing a long list. Upload your statement to ChatGPT's Advanced Data Analysis or Claude's code execution tool and ask it to group by merchant description and flag anything appearing 2+ times with a similar amount; that's a deterministic detection method, not a judgment call the model has to guess at.

"If you can't explain it simply, you don't understand it well enough."

— Albert Einstein

Key Insights

  • "Subscription trap" detection is repeat-pattern matching, not judgment: a merchant name recurring monthly at a similar dollar amount is a deterministic signal — real code (pandas groupby + count) finds this reliably, without needing the model to "notice" it in a long list.
  • Watch for near-identical merchant name variants: the same service sometimes bills under slightly different descriptor names (e.g., "NETFLIX.COM" vs "NETFLIX*STREAM") — ask the assistant to also group visually-similar names, since exact string matching alone can miss these.
  • A flagged recurring charge isn't automatically a "trap": it just means it's recurring — you still decide whether it's a subscription you value or one you forgot about.

A "subscription trap" is really just an unnoticed recurring charge, and unnoticed-recurring is a pattern a script can find far more reliably than a person skimming dozens of transaction lines. The task is: group transactions by merchant, count how many times each merchant appears, and flag anything appearing repeatedly at a similar amount — exactly the kind of aggregation a code-execution tool handles cleanly.

Finding recurring charges reliably

1. Upload several months of statement data to a code-execution tool. You need enough history (ideally 3+ months) to distinguish a genuinely recurring charge from a coincidental one-off similar amount.

2. Ask it to group by merchant and count occurrences, flagging repeats. "Group transactions by merchant name, count how many times each appears, and list any appearing 2 or more times with amounts within $2 of each other" is a concrete, code-executable request.

3. Review the flagged list yourself — a repeat isn't automatically unwanted. The tool's job is surfacing candidates; deciding which recurring charges you actually want to cancel is still a human judgment call.

subscription_finder.py
# Detecting recurring charges via grouping and counting
import pandas as pd

df = pd.read_csv("statement_3months.csv")
grouped = df.groupby("description").agg(
    occurrences=("amount", "count"),
    avg_amount=("amount", "mean"),
    amount_range=("amount", "std")
).reset_index()

# Flag merchants appearing 2+ times with consistent amounts
likely_subscriptions = grouped[
    (grouped["occurrences"] >= 2) & (grouped["amount_range"] < 2.0)
]
print(likely_subscriptions.sort_values("occurrences", ascending=False))
Approach Reliability
Manually scanning a long transaction list Low — easy to miss a small, infrequent, or oddly-named recurring charge
Grouping + counting via code execution High — systematically surfaces every merchant repeating at a consistent amount

This is a genuinely good AI-assisted task specifically because it reduces to a deterministic aggregation the model can run as real code, rather than an open-ended judgment call — the "trap" framing is just the human decision layered on top of an otherwise mechanical detection step.

Practical Challenge

Upload 3+ months of your own bank statement data to a code-execution tool and ask it to flag merchants appearing 2 or more times with consistent amounts — review the list for anything you'd forgotten you were paying for.

Concept Check

Why is grouping-and-counting transactions via code execution more reliable than manually scanning a statement for subscription traps?
Correct! Systematic grouping and counting is exhaustive in a way manual scanning of a long list often isn't — it surfaces every recurring pattern rather than whatever happens to catch the eye.
Incorrect. Try again! Manual scanning is possible, just error-prone on long lists — and the tool only flags candidates, it never takes the cancellation action itself.

Sources & Further Reading

Previous Guide Dashboard Next Guide