Prompt patterns that work
1. Start with a narrow window
Claude is happiest when you give it a bounded question. “How much did we spend last month?” is clearer than “how’s our spending looking?” A good prompt names:- A time range (last month, Q1 2026, the last 90 days).
- A category or merchant if you have one in mind.
- A dimension you care about (totals, trends, outliers).
2. Let Claude discover before it computes
For anything where the right filter isn’t obvious, ask Claude to calllist_categories or list_users first. That grounds the answer in values that actually exist in your data, rather than Claude guessing a category slug that doesn’t match anything.
3. Ask for the query plan
For big questions, ask Claude to lay out its plan before making the calls. This lets you catch an unfortunate filter (“they’ll sum across all currencies”) before it happens.4. Ask for the shape of the answer
“Give me a table” or “give me a chart” or “summarize as three bullets” help constrain the response. Claude will pick reasonable defaults, but a specified shape makes the answer easier to act on.Two gotchas to watch for
Currency mixing
Every Breadbox amount carries aniso_currency_code. If any of your accounts is in a different currency than the rest — a euro-denominated card, a CAD checking account — summing raw amounts will give a meaningless number.
Claude usually notices this and groups by currency. But not always. Whenever you ask for a total, add one of:
- “Don’t sum across different currencies — tell me the totals per currency.”
- “Filter to USD only before summing.”
Attribution
Breadbox supports attributing transactions to a specific household member different from the account owner — for example, a child’s purchases on a shared card attributed to the child, not the parent who owns the card. Transaction queries useCOALESCE(attributed_user_id, account_owner_user_id) to resolve the effective user, so per-user totals “do the right thing” by default. But ad-hoc questions that slice by account and then by user can double-count if you’re not careful.
If you ask “how much did Alice spend last month,” Claude filters by user_id correctly. If you ask “how much spending happened on the Chase Amex last month, broken down by user,” the answer will respect attribution too. But if you ask “whose transactions are on the Chase Amex,” the answer might surprise you — attributed transactions show a different user than the account owner.
When in doubt, ask Claude to say whether it’s using account ownership or attribution to decide who a transaction belongs to.
One more, minor: pending transactions
By defaultquery_transactions returns both pending and posted. Pending transactions may change amount or disappear entirely. For “what did we spend” questions, ask Claude to pass pending: false so the numbers reflect what’s actually cleared.
A full ad-hoc session
Here’s what a well-formed on-demand analysis looks like from start to finish:Where this fits in the bigger picture
On-demand analysis isn’t a replacement for the tagging and categorizing workflows in the rest of this tab — it rides on top of them. The cleaner your categories and tags are, the more trustworthy an ad-hoc answer gets. If subscriptions are all tagged, “what are our subscriptions costing per year” is a two-second question. If they’re not, Claude has to invent a heuristic and may under- or over-count. Invest in the structure first; the ad-hoc queries come for free.Related reading
- Single Routine Reviewer — keeps your categories clean so ad-hoc queries are accurate.
- Tracking Subscriptions — the setup that makes subscription questions trivial to answer.
- MCP tools — reference for all the tools Claude calls on your behalf.