Guided workflow for reviewing recent spending by category, time period, and anomalies
This skill provides a structured, interactive workflow for reviewing your recent spending. Use this for daily, weekly, or monthly spending analysis and pattern detection.
Guide you through a comprehensive review of your spending that covers time period selection, category breakdown, merchant analysis, and anomaly detection. The review adapts based on your chosen time period and generates insights at the end.
Before starting the spending review, gather context:
list_transactions(limit=1) to verify data existsspending_summary() to understand baselineFollow this structured flow in order. Use progressive disclosure — present findings one section at a time and wait for user response before proceeding to the next section.
Ask the user what period they want to review:
Store the selected period for queries below.
Example conversation:
Bot: "Let's review your spending. What time period would you like to look at?"
User: "Last month"
Bot: "Got it, I'll show you January 1–31 spending."
Use spending_summary(start_date=<period_start>, end_date=<period_end>, group_by="category") to aggregate spending.
Present the results in this format:
# Spending Summary — [Period]
Total Spent: $[amount]
By Category:
- [Category 1]: $[amount] ([% of total]) — [count] transactions
- [Category 2]: $[amount] ([% of total]) — [count] transactions
- [Category 3]: $[amount] ([% of total]) — [count] transactions
...
Top Merchant in [Top Category]: [Merchant name] ($[amount])
Analysis questions to ask yourself (do not push on user unless they ask):
If the user asks "Is this normal?" or "Did I spend a lot?", try to provide context:
memory_recall(topic="spending patterns") to retrieve baseline expectationsUse list_transactions(start_date=<period_start>, end_date=<period_end>, limit=20) to get top transactions.
Present top merchants by transaction count:
# Top Merchants
1. [Merchant 1] — [count] transactions totaling $[amount]
- Most recent: $[amount] on [date]
2. [Merchant 2] — [count] transactions totaling $[amount]
- Most recent: $[amount] on [date]
...
Follow-up questions (if appropriate):
Run spending_summary() for two consecutive periods (current and previous) to detect anomalies:
Anomaly types to flag:
Unusually High Single Transaction: If any single transaction is > 1.5× the category average or > $500 (configurable), flag it:
⚠️ Large transaction detected: $[amount] at [Merchant] on [date]
Is this planned? Should I note this as an unusual expense?
Category Spending Spike: If a category's spending increased > 50% vs previous period, flag it:
📈 Spending spike: [Category] increased from $[previous_amount] to $[current_amount]
What's behind the increase? New subscription? One-time purchase?
Unusual Merchant: If a transaction is from a merchant not seen before, note it:
New merchant detected: [Merchant name] ($[amount])
Is this a new subscription, recurring payment, or one-time?
Subscriptions Not Tracked: If the same merchant appears multiple times at similar amounts/intervals, suggest creating a subscription record:
I noticed [Merchant] charged you $[amount] on [dates]. This looks like a recurring subscription.
Would you like me to track this as "[Merchant] subscription"?
Positive patterns to acknowledge:
If reviewing a longer period (weekly or monthly), offer to show spending by week or day:
Bot: "Would you like to see how your spending breaks down by week?"
User: "Sure"
Bot: [Show spending by week, highlighting any week that stands out]
Use spending_summary(group_by="week") to break down by week, or group_by="day" for daily detail.
After presenting all findings, generate a summary:
# Spending Review Summary — [Period]
**Total Spent**: $[amount]
**Top Category**: [Category] ($[amount])
**Transaction Count**: [N]
**Highest Transaction**: $[amount] at [Merchant]
## Highlights
- [Key finding 1]
- [Key finding 2]
- [Key finding 3]
## Action Items
- [Suggested action 1, if applicable]
- [Suggested action 2, if applicable]
## Next Steps
- Would you like to set a spending limit for any category?
- Would you like to create subscription records for recurring charges?
- Should I send you weekly spending summaries?
Suggested actions (only if appropriate):
After the user acknowledges or completes the review, optionally store insights:
Bot: "Would you like me to remember any spending patterns or goals from this review?"
If yes, use memory_store_fact() to capture:
# Example: Store spending pattern
memory_store_fact(
subject="user",
predicate="spending_pattern",
content="tends to spend $300-400/week on groceries at Whole Foods and local markets",
permanence="standard",
importance=6.0,
tags=["spending", "groceries", "recurring"]
)
# Example: Store spending concern
memory_store_fact(
subject="dining",
predicate="spending_spike",
content="dining expenses increased from $200 to $350 in [month] — user investigating",
permanence="volatile",
importance=5.0,
tags=["spending", "dining", "anomaly"]
)
# Example: Store spending goal
memory_store_fact(
subject="user",
predicate="spending_goal",
content="wants to keep subscriptions under $50/month total",
permanence="standard",
importance=7.0,
tags=["spending", "goal", "subscriptions"]
)
For daily reviews:
For weekly reviews:
For monthly reviews:
For custom date range reviews:
Bot: "Daily spending review! Today you had 3 transactions totaling $47.32."
- Coffee at Blue Bottle: $5.50
- Lunch at Panera: $14.99
- Groceries at Whole Foods: $26.83
Nothing out of the ordinary. Have a good day!
Bot: "Here's your weekly spending summary (Jan 15–21):"
Total Spent: $684.50
By Category:
- Groceries: $185.40 (27%) — 6 transactions
- Dining: $156.20 (23%) — 8 transactions
- Transport: $120.00 (18%) — 2 transactions
- Entertainment: $98.50 (14%) — 3 transactions
- Subscriptions: $44.40 (6%) — 4 transactions
Top Merchants:
1. Whole Foods — 4 transactions, $126.30
2. DoorDash — 5 transactions, $89.40
3. Uber — 2 transactions, $120.00
📈 Alert: Your dining spending jumped to $156 this week, up from $89 last week. Special occasion or new routine?
Bot: "January Spending Summary:"
Total Spent: $2,847.60
By Category:
- Rent: $1,800 (63%)
- Groceries: $520 (18%)
- Dining: $287 (10%)
- Subscriptions: $148 (5%)
- Transport: $92 (3%)
⚠️ Subscription Alert: Netflix ($15.99), Spotify ($12.99), Adobe Cloud ($54.99), and 2 others.
Total subscriptions: $148/month. Same as last month—no new ones.
🎯 Reminder: You mentioned wanting to keep subscriptions under $150. You're right at that level!
Would you like me to continue tracking this goal and alert you if subscriptions exceed $150?
User: "Show me spending from Feb 1–10"
Bot: "February 1–10 Spending:"
Total: $547.30 (averaging $54.73/day)
By Category:
- Groceries: $185 (34%)
- Dining: $198 (36%)
- Transport: $98 (18%)
- Entertainment: $66 (12%)
Compared to Jan 1–10:
- Groceries: similar ($192)
- Dining: ↑ 23% ($161 → $198)
- Transport: ↓ 15% ($115 → $98)
💡 Your dining spending is trending upward. Anything new going on?