Produce two outputs from invoice audit findings: (1) a homeowner insight summary highlighting what actually matters, and (2) a plain-text email to the GC. Calibrates tone to severity — jokes about pennies, direct about missing COs.
Turn structured audit findings into two outputs:
Homeowner Insight Summary — what you'd tell a friend who just got a $265K draw request and asked "should I be worried about anything?" This is the analysis. Not a restatement of the spreadsheet, but the interpretation: which trends are worrying, which charges deserve scrutiny, what patterns suggest scope creep without approval, and what to push back on.
GC Email — a plain-text email to the contractor that raises the right questions without being adversarial.
Both outputs use the same tone calibration and writing rules.
The skill expects:
audit_findings.md first. This is the consolidated findings document written by the analyzer and contains everything: math results, matcher discrepancies, price-check flags, budget overruns, and other anomalies. If doesn't exist, fall back to reading the individual JSON files (, , ). Every finding in should be considered for inclusion — especially price-check flags (items above market with dollar comparisons) which are some of the most actionable findings for the homeowneraudit_findings.mdextracted.jsonmatching_results.jsonprice_check_results.jsonaudit_findings.mdproject-context.mdIf no audit has been run yet, tell the user to run invoice:analyzer first.
| Severity | Tone | Example phrasing |
|---|---|---|
| Trivial discrepancies (pennies, rounding) | Self-deprecating, joking | "I'm only mentioning this so you know how bored I was on a Saturday night" — never be earnest about tiny amounts, it makes the sender look petty |
| Housekeeping (typos, code mismatches) | Casual, brief | "A few typos on the summary I wanted to flag" |
| Budget variance (explained) | Acknowledging | "That tracks" or "I see the increases" |
| Budget overrun (unexplained) | Direct question | "Do we have a CO for that?" |
| Missing documentation | Firm but fair | "I don't see one in my records" |
| Potential unauthorized work | Very direct | "This wasn't something we approved" |
| Dispute | Professional, factual | State the facts, request resolution, no threats |
This is the "what should I actually worry about?" document. Not a list of every finding, but a prioritized narrative about what matters.
An insight is NOT "invoice #305970 doesn't match." That's a finding. An insight is:
Lead with the total and a one-sentence characterization. "This is a $265K draw that's mostly clean but has a few things worth pushing on."
The big concerns (2-4 items). These are budget overruns without COs, scope changes that weren't discussed, patterns that suggest the project is running differently than planned. Frame each as: what happened, why it matters, what to do about it.
Future exposure. Large deposits, upcoming obligations, budget codes that are trending over. "You have $94K in future obligations from Dixon Glass alone."
The bookkeeping stuff. Invoice number errors, missing documentation, the $0.02 kind of stuff. Group it, handle it lightly. "Three invoice numbers are wrong on the summary. Not a billing issue, just sloppy data entry. Have them fix their records."
Bottom line. One sentence: pay, pay with conditions, or dispute. And the 2-3 conditions that matter most.
Plain text. No bold, italic, or markdown formatting.
For an initial inquiry (first email about a new invoice):
For a response to GC explanation:
For a follow-up:
Project-specific details (GC name, contacts, homeowner name, project address, relationship tone, prior dispute history) should be stored in a project-context.md file in the working directory.
If no project context file is found, ask the user for the GC's name and any relevant context before drafting.
If extracted_pages/ exists in the working directory, check which flagged invoices have been extracted as standalone PDFs. Reference them by filename in both outputs.
In the insight summary: When discussing a flagged document, note the extracted page:
"The Hearth & Home fireplace invoice is at
extracted_pages/Hearth___Home___SLC_303970.pdfif you want to see the line items yourself."
In the GC email: When asking about a specific invoice, reference it as an attachment:
"I've attached the Hearth & Home invoice (303970) for reference."
After drafting the email, list the recommended attachments at the bottom:
Attachments:
- Hearth___Home___SLC_303970.pdf (fireplace pricing question)
- BFS_Group_LLC_78710505-00.pdf (invoice number correction)
- Wheeler_CAT_None.pdf (need actual invoice)
This tells the homeowner exactly which extracted pages to attach when they send the email.
Always write both outputs to disk in the working directory in addition to displaying them:
{month}_draw_insight_summary.md{month}_draw_email.mdUse a version suffix (_v2, _v3) if prior versions exist. The user needs these as files, not just chat output.