Skip to the content

The Invoice Chaser for monthly maintenance invoices

The mowing is done every week, but the HOA pays when it pays, and in winter that gap is the crew's paycheck. Feed the Invoice Chaser your invoices CSV and it lists what's overdue, longest first, and drafts a reminder for each account in a friendly, firm or final tone. It all runs on your computer under your own AI key, and sending is up to you. A plain limit: it reads only your CSV, so an account that mailed a check still shows as late until you change the file.

We'll help you set it up. Setup and support are included.

What you'll need first

Three things to bring.

What this looks like in your business

Maintenance accounts are billed monthly, and a late HOA or property manager is a cash problem. In the sample, the list is ordered by days late and not by size: an office park 105 days late comes first, and a church 90 days late comes second. With cutoffs of 9 and 24 days, anything past 24 days is final tone, and the final reminder carries the company's own line: "We'll have to pause the weekly service until the account is current." Two accounts inside the ten quiet days are listed with no draft.

What goes in and what comes out

What you put in

SAMPLE ON MADE-UP DATA invoices.csv

What you put in
SAMPLE ON MADE-UP DATA. From the file invoices.csv, lines 1 to 12.
customer,invoice number,amount,due date,last contact
Maple Ridge Sample HOA,GS-3021,960.00,2026-10-31,
Brookhaven Sample Commons,GS-3015,480.00,2026-10-11,
Clearwater Sample Plaza,GS-3008,1350.00,10/2/2026,2026-10-08
Lindenwood Sample Condos,GS-2997,720.00,9/30/2026,
Prescott Sample Medical Park,GS-2980,2400.00,2026-09-14,2026-09-25
Fairview Sample Townhomes,GS-2965,640.00,2026-08-31,
Kestrel Sample Apartments,GS-2940,1180.00,2026-08-02,2026-09-01
Eastgate Sample Church,GS-2912,350.00,2026-07-15,2026-08-12
Harborview Sample Offices,GS-2880,3050.00,2026-06-30,
Stonebridge Sample HOA,GS-3022,775.00,2026-02-31,
Willowbend Sample Estates,GS-3023,call me,2026-09-28,

What comes out

SAMPLE ON MADE-UP DATA overdue_list.csv

What comes out
SAMPLE ON MADE-UP DATA. From the file overdue_list.csv, lines 1 to 11. Every file the package writes starts with a DRAFT line that names the run, the provider and the exact model. It's shown here as written.
DRAFT run=20261019T211141Z-2de8a3 template=invoice-chaser version=1.0.4 provider=openai model=gpt-6-luna input_sha256=208796e62cc7954a69899c50a4d539cb3a02324b6a64fc19cf6d689b2a3c902d
rank,customer,invoice_number,amount,due_date,days_overdue,tone,reminder_draft,run_date
1,Harborview Sample Offices,GS-2880,"$3,050.00",2026-06-30,105,final,reminder_001.txt,2026-10-13
2,Eastgate Sample Church,GS-2912,$350.00,2026-07-15,90,final,reminder_002.txt,2026-10-13
3,Kestrel Sample Apartments,GS-2940,"$1,180.00",2026-08-02,72,final,reminder_003.txt,2026-10-13
4,Fairview Sample Townhomes,GS-2965,$640.00,2026-08-31,43,final,reminder_004.txt,2026-10-13
5,Prescott Sample Medical Park,GS-2980,"$2,400.00",2026-09-14,29,final,reminder_005.txt,2026-10-13
6,Lindenwood Sample Condos,GS-2997,$720.00,2026-09-30,13,firm,reminder_006.txt,2026-10-13
7,Clearwater Sample Plaza,GS-3008,"$1,350.00",2026-10-02,11,firm,"none, inside quiet days",2026-10-13
8,Brookhaven Sample Commons,GS-3015,$480.00,2026-10-11,2,friendly,reminder_008.txt,2026-10-13
9,Magnolia Sample Courtyard,GS-3026,$865.00,2026-10-12,1,friendly,"none, inside quiet days",2026-10-13

The settings you change

Fit it to your maintenance accounts with one CSV and one settings file. The CSV columns are customer, invoice number, amount, due date and last contact; the sample lists HOAs, plazas and apartment complexes. The settings file reads: business_name: Sample Stonebrook Grounds, friendly_through_day: 9, firm_through_day: 24, quiet_days: 10, and a final_notice_sentence about pausing the weekly service. Put the firm cutoff above the friendly one or the run stops. More than one .txt file in the input folder also stops the run, so move extra notes out. In config.json, set the provider and the model; reminder_max_chars and customer_name_max_chars sit inside template_settings.

Before you buy

What it won't do

  • It won't send a reminder.
  • It won't add a late fee, interest or a threat you didn't set.
  • It won't connect to your bank or your accounting login.
  • It won't mark anything paid.
  • It only knows what's in your CSV. If you got paid and didn't update the file, it will still call that invoice overdue.
  • For this trade: it won't check a contract, a route or whether the weekly service was really done. A pause line in a reminder is yours, written by you, and it's your call whether to send it. In skipped.csv, a negative amount shows with an apostrophe in front of it.

What you bring

  • Three things to bring.
  • Python at version 3.11 or higher.
  • A key of your own from an AI provider, with OpenAI behind the sample you saw.
  • And your files: the maintenance invoices in a CSV, and one settings .txt file.
  • The AI company on your key sees customer names and nothing else from your CSV.
  • Invoice numbers, amounts and due dates stay here.
  • Your API key stays in a setting on your computer. The package never saves it, and it goes only to the AI provider you choose, never to us.

Questions you might have

Winter is thin and summer's late payers hurt most. Will it chase the biggest accounts first?

It sorts longest overdue first, then larger amount first, so days late come before size. In the sample, a church 90 days late sits above an apartment complex 72 days late. If you want to start with the biggest balances, read the list by amount yourself.

Can the reminder say I'll pause the weekly service?

Only in a sentence you wrote. The final_notice_sentence setting holds one line of yours, and the code puts it into final tone drafts as written. The AI never writes the threat. The sample's line is "We'll have to pause the weekly service until the account is current." Leave it out and final drafts carry no next step.

My HOA accounts have long names with slashes and hash signs. Will the names work?

A customer name can run to 60 characters and can hold letters, digits, spaces and these marks: ampersand, period, comma, apostrophe, dash, round brackets, slash and hash sign. A name with an underscore, a colon, a quote mark, an at sign, a semicolon or a plus sign is skipped and listed in skipped.csv.

A property manager says a check is in the mail. Does it know?

No, it only reads your CSV. Put the date you spoke in the last contact column and set quiet_days. The sample uses 10, so an invoice contacted within 10 days isn't drafted. In the sample, Clearwater Sample Plaza and Magnolia Sample Courtyard are listed with "none, inside quiet days".

Where to go next

$29, one time

  • There is no monthly fee and no tier, and all six templates share the figure.
  • Your provider's bill for each run is separate.

We'll help you set it up. Setup and support are included.

$29 one timeBuy this template