
Audit Recurring Subscriptions
Audit a set of transactions or a vendor list to find every recurring subscription, normalize each to a monthly cost, surface duplicates, price hikes, and zombie/unused services, and produce a prioritized cancel/keep recommendation report. Locks the recurrence-detection rule, the normalization (to monthly), and the recommendation criteria FIRST, then detects and analyzes the recurring charges, then writes a clear report whose every recommendation is backed by the evidence in the data. Defining what counts as 'recurring' and how to rank cancel candidates before analyzing is what makes the audit actionable rather than a list of guesses.
Steps
Entry step: scope. Each step names the specialist role it wants; the full working prompt is expandable.
- Scope the auditdata-analystentry
recurrence rule, monthly normalization, recommendation criteria
Show working prompt
Define the audit method before analyzing. Step 1: identify the input (a transactions file, or a list of services with amount + cadence) and its columns. Step 2: define the recurrence-detection rule — what makes a charge a subscription (same/near merchant recurring at a regular interval: monthly/quarterly/annual, within an amount tolerance). Step 3: define normalization to a comparable monthly cost (annual ÷ 12, quarterly ÷ 3) so everything is apples-to-apples, and the total monthly and annual run-rate. Step 4: define the flags and recommendation criteria — duplicate/overlapping services, a price increase vs the prior occurrence, and 'zombie' candidates (high cost and/or low apparent usage) — and how to rank cancel candidates (e.g. by annual cost × redundancy). Step 5: write an acceptance-criteria checklist ('every recurring charge detected and listed', 'each normalized to monthly correctly', 'duplicates and price hikes flagged with evidence', 'a ranked cancel/keep recommendation per subscription', 'monthly and annual totals reported', 'no recommendation without supporting data'). Call write_task_note with the rule + normalization + criteria + checklist and write notes/scope.md. No analysis yet. - Detect and analyzedata-analyst
find recurring charges, normalize, flag, rank
Show working prompt
Analyze the input to the locked rule. Step 1: group transactions by normalized merchant and detect recurring series matching the cadence + amount-tolerance rule. Step 2: for each detected subscription, record name, cadence, last amount, normalized monthly cost, and first/last seen. Step 3: compute flags from the evidence — duplicates/overlaps (two services in the same category), price increases (this amount > prior occurrence), and zombie candidates per the criteria. Step 4: rank cancel candidates by the agreed scoring and compute the total monthly and annual run-rate plus the potential savings if the cancel candidates are dropped. Step 5: write the structured findings (the per-subscription table + totals + flags) to a notes file so the report phase has clean inputs. Call write_task_note with the subscription count, the monthly/annual totals, and the top cancel candidates.
- Write the reportcopywriter
evidence-backed cancel/keep recommendation report
Show working prompt
Write the subscription audit report from the analysis. Step 1: open with a headline summary — total monthly spend, annual run-rate, and the potential savings. Step 2: include a clear table of every detected subscription: name, cadence, monthly-normalized cost, annual cost, and any flags (duplicate, price hike, zombie). Step 3: give a prioritized recommendations section — cancel/keep/review per subscription, ordered by impact, each with a one-line rationale tied to the evidence (cost, redundancy, price change). Step 4: ensure every recommendation traces to a fact in the analysis — no unsupported claims. Step 5: close with the total savings if the recommended cancels are actioned. Write the report as a markdown report with section headers. Call write_task_note with the report path and the headline savings figure.
- Evaluatereviewer
Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.
Show working prompt
Open report.md (and notes/analyze.md) and verify every criterion from notes/scope.md: every recurring charge is detected and listed, each is normalized to a monthly cost correctly (re-check 2 conversions), duplicates and price hikes are flagged with evidence, every cancel/keep recommendation is ranked by impact and backed by a fact in the data, and monthly + annual totals plus potential savings are reported. Confirm no recommendation lacks supporting evidence. Write PASS/FAIL per criterion; on any failure, name the gap and loop back to report. Then route — this is the whole point of the loop: - **Every criterion PASSES →** call `advance_task_step({ ref, stepId: "evaluate", next: "finish" })`. - **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: "evaluate", next: "report" })` to loop back. The builder fixes exactly those gaps. Never route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in. - Finishdeveloper
All acceptance criteria met. Stamp a short summary and report DONE.
Show working prompt
Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.
Triggers
Phrases that suggest this craftbook to a crew.
- audit my subscriptions
- find recurring charges
- cancel unused subscriptions
- subscription spend report
- where is my money going
Source
View this craftbook on GitHub · MIT license