
Close the Month
Close out a month of household spending against the project's ledger: sweep the month's entries for category strays and surprises, compute the in/out/net totals and category breakdown, compare against the prior month, and write a short honest month summary with one concrete action for next month. Locks the target month and the reconciliation checks FIRST, then reconciles the entries, then writes the summary — so the close is a repeatable ritual with the same shape every month, not an ad-hoc glance at the numbers. Use for monthly budget close, month-end money review, 'how did we do this month', and household spending retrospectives.
Steps
Entry step: scope. Each step names the specialist role it wants; the full working prompt is expandable.
- Scope the closedata-analystentry
target month, reconciliation checks, comparison baseline
Show working prompt
Define the close before touching the numbers. Step 1: read ledger.json from the workspace and identify the target month (default: the most recently ended calendar month) and the prior month as the comparison baseline. Step 2: define the reconciliation checks — entries with a missing or clearly wrong category, amounts that look like typos (an order of magnitude off that category's normal range), and any income expected but not recorded. Step 3: define what the summary must report — in/out/net for the month, the top 3 spending categories, the largest single expense, and the delta versus the prior month per major category. Step 4: write an acceptance-criteria checklist ('every entry in the month has a sensible category', 'totals computed from the ledger, not estimated', 'prior-month comparison per major category', 'one concrete next-month action named', 'no number in the summary that is not in the ledger'). Call write_task_note with the target month + checks + checklist and write notes/scope.md. No reconciling yet. - Reconcile the monthdata-analyst
sweep entries, fix strays, compute totals and deltas
Show working prompt
Reconcile the target month against the locked checks. Step 1: list every ledger entry in the month and apply the checks — note each category stray or suspect amount, and where the owner's intent is clear, record the correction; where it is not, list the question for the owner instead of guessing. Step 2: compute the month's totals — in, out, net, and the per-category breakdown — directly from the entries. Step 3: compute the prior-month comparison per major category and flag any category that moved by more than a third. Step 4: identify the largest single expense and any new recurring-looking charges worth a look. Step 5: write the structured findings to notes/reconcile.md so the summary phase has clean inputs, and call write_task_note with the net figure, the biggest mover, and the number of strays found.
- Write the month summarycopywriter
honest month summary with one next-month action
Show working prompt
Write the month summary from the reconciliation. Step 1: open with the headline — in, out, net for the month, in one plain sentence. Step 2: give the category picture — the top 3 spending categories with amounts, and the notable movers versus last month with the direction and size of the change. Step 3: name the largest single expense and anything new or surprising, without judgment. Step 4: close with ONE concrete, small action for next month, grounded in the data (a category to watch, a charge to question, a habit that worked). Step 5: keep it under a page, warm and factual — this is a household ritual, not an audit finding. Write report.md and call write_task_note with the report path and the headline net.
- 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/reconcile.md and verify every criterion from notes/scope.md: every entry in the month carries a sensible category (or is listed as an owner question), the in/out/net and category totals trace to the ledger entries (re-add one category to check), the prior-month comparison covers the major categories, exactly one concrete next-month action is named, and no number in the summary lacks a ledger source. 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.
- close the month
- monthly budget review
- how did we do this month
- month end close
- budget month summary
Source
View this craftbook on GitHub · MIT license