Patient Outstanding Balance Chaser
Example prompt: "Each weekday morning, find unpaid patient invoices in our Google Sheet. Draft a soft reminder at 7 days, a clearer chase at 14, and a final notice at 28 — and flag anything still unpaid a week after the final notice to the practice manager in Slack."
The Problem
Private clinics carry an unpaid-invoice tail and most of it is not bad debt — it is the patient who meant to pay and forgot, or the card that was declined and never retried, or the statement that landed in a spam folder. Reception means to chase but a polite chase needs the right tone, the right reminder of the policy, and a payment link that actually works; writing that by hand for thirty overdue invoices a week is the work that gets pushed to next Monday and the Monday after. The invoices that needed one polite reminder at day seven end up at day forty-five, the patient is embarrassed, and the conversation turns defensive when it should have been a one-tap payment.
How GloriaMundo Solves It
We build a workflow that runs at 8am every weekday. An integration step reads the 'Invoices' tab and filters to anything unpaid and at least seven days old. A code step walks each invoice's reminder ladder — day seven soft, day fourteen clearer, day twenty-eight final notice — and never skips a rung. The workflow checks the 'Disputes' tab and quietly skips any invoice with an open dispute, surfacing the skip in the daily summary so it is auditable. An LLM step composes a rung-appropriate Gmail in the practice's voice and saves it as a draft with the Stripe payment link embedded. The daily 9am Slack message gives reception the queue — today's drafts grouped by rung, any drafts carried over from prior days, and the skips — and they send through it doing a sense-check on context the workflow cannot see (mid-treatment patients, recent concerns, write-off candidates). The rung state on the invoice row advances only when reception actually sends a draft, so an unsent draft does not push the ladder forward on the wrong basis. Practice-manager escalations fire once per invoice, not every morning. Glass Box preview shows the rung selection logic, the rendered emails, and the Slack summaries before anything is queued.
Example Workflow Steps
- Trigger (integration): Each weekday at 8am local time.
- Step 1 (integration): Read the 'Invoices' tab and filter to rows where status is 'Unpaid' and the invoice date is at least seven days ago.
- Step 2 (code): For each row, calculate days_overdue and pick the next rung in the ladder (+7, +14, +28) that has not yet been sent.
- Step 3 (conditional): Check the 'Disputes' tab; if an open dispute exists, skip drafting and record the skip in the daily summary.
- Step 4 (llm): Compose a rung-appropriate Gmail in the practice's voice — short, warm, never accusatory — with the Stripe payment link embedded.
- Step 5 (integration): Save the composed message as a Gmail draft and append a row to the 'Chase Log' tab with the invoice number, the rung, the draft creation time, and the Gmail draft link.
- Step 6 (conditional): If days_overdue is more than thirty-five and the day-twenty-eight notice has been sent for over a week, append a row to the 'Practice Manager Review' tab with the patient code only and post once in #practice-manager. Escalation fires once per invoice.
- Step 7 (integration): At 9am, post the daily summary in #front-desk with today's drafts grouped by rung, any drafts carried over from prior days, and the dispute skips.
- Step 8 (integration): When reception sends a draft (or a reconciliation step detects the send), advance the rung state on the invoice row.
Integrations Used
- Google Sheets — the 'Invoices' tab, the 'Disputes' tab, the 'Chase Log' tab, and the 'Practice Manager Review' tab
- Stripe — the payment link generated when the invoice went out; the workflow embeds the link, it does not generate it
- Gmail — draft every chase; nothing auto-sends
- Slack — the daily #front-desk summary for reception, and the smaller #practice-manager list for write-off-territory cases
Who This Is For
Private dental, physio, mental health, and small private GP practices that bill the patient directly (not insurance-first) and carry a meaningful unpaid tail — typically £5,000-£25,000 outstanding at any time across a few hundred invoices. Works best where the practice already uses Stripe Payment Links or similar for one-tap payment so the chase is friction-light for the patient.
Time & Cost Saved
A two-clinician practice with 30-50 unpaid invoices in a given week typically loses two to three hours of reception time to chases that are inconsistent in tone and frequently late. This workflow does the drafting overnight and reception sends through 30-50 drafts in around 30 minutes. The financial gain is the recovery rate: a consistent seven/fourteen/twenty-eight day cadence with a one-tap payment link typically recovers 20-35% more of the unpaid tail than ad-hoc chasing, which on a practice with £15,000 outstanding is £3,000-£5,000 of recovered cash a quarter.
Notes on Auto-Send vs Drafts
The chase always lands as a draft. The patient might be mid-treatment, the practice manager might be on a phone-call path with them, there might be a goodwill credit waiting to be applied, or the patient might be the family of a current patient where the relationship matters more than the £80. The day-seven reminder is templated enough to auto-send safely in theory — we still draft it, because the cost of a tone-deaf send to a patient who matters is much higher than the thirty seconds of reception's time.