Pull the AR aging report, score each customer by payment history, draft a tone-matched reminder for each overdue invoice, and present them to the owner. Nothing sends until the owner says so.
User: "who owes me money"
→ Pull AR aging from QuickBooks
→ Cross-reference PayPal settlements (last 14 days)
→ Score each customer: good-payer / occasionally-late / repeat-late
→ Draft tone-matched reminders
→ Show summary table + drafts. Wait for "send these."
Ask the owner two questions before running for the first time:
Do not ask again on subsequent runs.
Pull overdue receivables. Query QuickBooks AR aging for all invoices more than 1 day past due. If Stripe is enabled (owner confirmed at setup), also pull Stripe overdue invoices.
Cross-reference payment history. For each overdue customer, query PayPal for settled transactions using these parameters:
transaction_status: S (settled only — filters out
pending and denied transactions that inflate result size and increase
rate-limit risk)If PayPal returns a 429 rate limit error:
If a customer shows a settled payment within the query window, flag as "possibly paid — verify" and exclude from the draft queue.
Score each customer. Read reference/tone-matching.md for
scoring logic. Result: good-payer,
occasionally-late, or repeat-late.
Draft reminder emails. One email per customer — consolidate multiple overdue invoices into one email. Match tone to score. See reference/examples/gentle-reminder.md and reference/examples/firm-reminder.md.
Present drafts to owner. Show a summary table first:
| Customer | Amount Due | Days Late | Tone | Send via |
|---|---|---|---|---|
| Acme Corp | $1,200 | 18 days | Gentle | PayPal |
| Smith LLC | $450 | 47 days | Firm | Gmail draft |
Then show each draft email in full. Wait for owner to say "send these" or approve individually.
Send or queue — only after approval.
Report what happened. List what was sent, what was queued as draft, and what was flagged (possibly paid, excluded).