What you get from this. If you're deciding whether to pay for AI to write your appointment and invoice reminders, this test gives you a plain answer and the cases that back it up. We wrote 30 made-up reminder records for two made-up businesses. Each record went through a simple rules script once and through an AI model three times. A script checked every message against answers we locked in before the run. Nothing was sent to anyone, and no real customer data was used.
The short answer
For routine reminders, simple rules did the job. As first scored, before we fixed a mistake in our own scorer, the AI passed 87 of 90 messages and our rules script passed all 30. Our rules script got all 21 routine cases right. It used the right names, dates, times and amounts. It held reminders for paid invoices and cancelled bookings, and it passed disputed or very overdue accounts to a person. It never invented anything. The AI matched that once we fixed the scorer mistake (explained below): all 3 of its failures were our scorer misreading office hours, and with that fixed it passed 90 of 90. It still cost money on every message, and some of its output needed cleanup before a program could read it.
The AI earned its keep on one thing: customer notes. Our rules script sent every record with a free-text note to a person. The AI handled the notes it safely could. It answered a parking question from the business's own facts. It emailed a customer who had written "Please don't text me." It translated a note written in Spanish for staff. It also never promised anything the business hadn't approved. But in one of its three tries, it texted a different customer who had asked for an emailed copy of the invoice.
What we'd do: use the reminder rules built into your booking or invoicing software for sending. If customers often leave notes, an AI that reads each note and drafts a summary or reply for a person to approve is worth trying. We wouldn't let it send on its own based on this test.
What we tested, and why
Most scheduling and invoicing tools already send reminders without any AI. Square says its Appointments product can send automatic text and email reminders (Square help), and its settings page says you can time each one between one hour and three days before the appointment (Square settings help). QuickBooks says it can send up to three automatic email reminders for an invoice you've already emailed (QuickBooks help). Intuit also offers "Payments AI" in QuickBooks, which it says suggests a reminder schedule for you to approve and writes an editable message for each invoice reminder (QuickBooks help). These are the vendors' own descriptions. We didn't test any of these products.
So the real question for an owner is whether AI adds anything to reminders your software can already send with fixed templates. To find out, we compared two approaches on the same records:
- Rules. A short script we wrote: fixed templates with blanks for name, date, time, amount and pay link, plus if/then rules. Examples: if the invoice is paid, don't send. If it's disputed, send it to a person. If the time is missing, send it to a person. If there's any note from the customer or staff, send it to a person. We wrote it before seeing any AI output.
- AI. Anthropic's Claude Sonnet 5.5 (
claude-sonnet-5-5), given each record and a one-page business policy. The policy covered things like: text only customers who agreed to texts, copy facts exactly, no discounts or payment deals, and send anything that needs a decision to a person. The model returned a decision (send, hold, or route to a person), the channel, the message, and a note for staff. We ran it three times per record to see if it would give the same answer each time.
The 30 records
All invented. "Lakeside Wellness Studio" (massage and physical therapy) had 15 appointment reminders. "Ridgeway Landscaping" had 15 invoice reminders. Phone numbers are in the fictional 555-01xx range.
| Kind | Appointment cases | Invoice cases |
|---|---|---|
| Routine (21) | Next-day and same-day reminders, rescheduled, cancelled, missing time, no phone (email only), prep instructions, sensitive service, two bookings in one day, customer in another time zone with a video visit, repeat no-show | Due in 3 days, 14 and 30 days overdue, partial payment, already paid, disputed, payment plan, $8,450 balance 45 days overdue, no pay link, late-fee terms at 35 days overdue |
| Free-text notes (9) | "Running late from work, can we push to 2:30?" / "Is there parking? I've never been there before." / "My daughter Mia will come in my place this time, is that OK?" / "Please don't text me, email only." | "I lost my job last month. Can I pay this in two parts?" / a staff note saying the invoice should be $410.00, not $460.00 / "I sent this through Zelle this morning." / "Can you email me a copy of the invoice? I can't find it." / "¿Puedo pagar el viernes?" (Can I pay Friday?) |
For each case we decided in advance which answers were acceptable and which was best. For example, "Is there parking?" could be routed to a person, but the best answer was to send the reminder and answer the question, because the policy says where the free parking is.
How we scored it
A script did the fact checks. It compared every name, date, time, dollar amount, link and phone number in each message with what was in the record and the policy. It also checked the send/hold/route decision and the channel, and searched for banned words like "discount," "waive" and "collections." Any fact not in the record counted as invented, and so did any banned word. Any wrong or invented date, time or amount failed the message.
Two things can't be checked by a script: whether a message reads well enough to send, and whether a customer's note was handled sensibly. Our AI writing assistant scored those by reading every output. Those scores are labeled as judgment below.
Everything we ran was saved and fingerprinted (a sha256 hash with a timestamp) at 5:17 p.m. ET on October 23, 2026: the AI instructions, the rules script, the 30 records, the expected answers and the scoring script. The first AI call went out 8 seconds later. After the run, the design file and the instructions file each got one dated note (a status update and a note on token use); the original versions are kept and still match their fingerprints.
The results
| Measure (script-checked) | Rules (1 run) | AI (3 runs, 90 outputs) |
|---|---|---|
| Routine cases correct | 21 of 21 | 62 of 63 as scored; 63 of 63 after our scorer fix |
| Note cases correct | 9 of 9 | 25 of 27 as scored; 27 of 27 after our scorer fix |
| Send/hold/route decision acceptable | 30 of 30 | 90 of 90 |
| Best decision | 27 of 30 | 90 of 90 |
| Sent to a person when it could have just sent the reminder | 3 | 0 |
| Wrong dates, times or amounts | 0 | 3 as first scored (all the same scorer mistake); 0 after fix |
| Discounts, waivers, payment deals or threats | 0 | 0 |
| Runs that disagreed on the decision | n/a | 0 of 30 cases |
| Runs that differed in channel or in any fact checked | n/a | 5 of 30 cases (3 only in whether the phone number was included, 1 in writing "tomorrow" next to the same date, 1 in channel) |
About the scorer fix. As first scored, the AI failed 3 of 90 messages. In each one it had added the office hours, "Monday to Friday, 8 AM to 5 PM," which came straight from the policy we gave it. Our scoring script allowed the hours but not the weekday names, so it counted "Monday" as an invented date. That was our mistake, not the AI's. We kept the original score, wrote a corrected scorer, and logged the change with a date. The corrected scorer flips those 3 messages and nothing else. Both versions are in the evidence files.
The cases that differed:
- "Is there parking?" The rules script sent it to a person. The AI sent the reminder all three times and added "Free parking is in the lot behind the building."
- "Please don't text me, email only." The customer's file still said yes to texts. The rules script sent it to a person, so no reminder went out until someone acted. The AI emailed the reminder all three times and told staff why. Our policy told it to stop using any channel a customer opted out of in a note, so it was following a written rule here, not working it out alone.
- "Can you email me a copy of the invoice?" The rules script sent it to a person. The AI emailed the pay link (the policy says it shows the full invoice) in two runs. In the third run it sent the same link by text, and its stated reason never mentioned that he had asked for email. Our expected answers allowed either channel, so the script passed it. Our judgment is that it wasn't what the customer asked for.
On the notes that needed a decision (a time change, someone else attending, a hardship request, a disputed amount, a claimed Zelle payment, a request to pay later), both methods sent the record to a person every time. The AI's staff notes were more useful. It summarized what the customer wanted, included the callback number, translated the Spanish note, and pointed out that the staff note said $410.00 while the invoice said $460.00. The rules script just pasted the note.
Judgment scores
These are our AI writing assistant's ratings, not script checks. It knew which method wrote each message.
| Judgment (0 to 2 per item) | Rules | AI |
|---|---|---|
| Message ready to send (sent messages) | 29 of 30 points (15 messages) | 107 of 108 points (54 messages) |
| Handling of customer notes (9 cases) | 15 of 18 points | 53 of 54 points |
Both lost a point for the same thing: a prep-instructions text that ran past the 320-character limit in our policy. The rules script lost note points for sending three answerable notes to a person. The AI lost one for the text it sent to the customer who wanted email.
What it cost
The AI run cost $0.58 for 90 decisions, based on the token counts Anthropic returned with each call. We used Anthropic's listed prices for Claude Sonnet 5.5 on October 23, 2026 (pricing):
- 146,865 input tokens × $2 per million = $0.29
- 28,330 output tokens × $10 per million = $0.28 (this includes 10,265 "thinking" tokens the model produced on 25 of the 90 calls, even though we didn't ask for them)
That's about 0.6 cents per reminder. Sending 500 reminders a month would come to about $3 at that rate, so the API bill isn't what matters here. What matters is the work: someone has to connect the AI to your booking or invoicing system and make it reliable. Some of that work showed up even in this small test. In 12 of 90 replies the AI wrapped its answer in extra formatting that we had told it not to add. Our scorer was built to strip that, so none counted as failures, but a strict program would have rejected those 12 replies. The rules script cost nothing per message. We didn't time any setup, so we make no claims about hours saved or spent.
What this test does not show
- Real customers. Every record was invented and tidy. Real records have typos, stale phone numbers and notes nobody logged.
- Other models, other days. One model, tested on one date (October 23, 2026), with one set of instructions. A rerun could differ, and the three runs here already differed in small ways on 5 cases, mostly whether the business phone number was included.
- The vendor tools. We tested our own rules script, not Square, QuickBooks or any other product's reminders. What we say about those comes from their help pages.
- Rates. These are counts from 30 cases we wrote to include hard situations. "21 of 21" describes this test, not how often any tool gets reminders right.
- Independent scoring. The fact checks were scripted. The two judgment scores came from our AI writing assistant, the same assistant that designed the test and wrote the rules script. Nobody else re-scored anything.
- Texting law. We didn't test compliance with anything. See the note below.
A note on texting rules
We didn't test this, but you should know about it. Under the federal Telephone Consumer Protection Act, automated calls to cell phones generally need the person's prior consent, and the FCC's rules say "call" includes text messages for the exemptions listed there (47 U.S.C. 227; 47 CFR 64.1200). The rules also say a customer can withdraw consent "by using any reasonable method." A reply text in the customer's own words counts if a reasonable person would read it as a request to stop, and the request has to be honored within a reasonable time, no more than ten business days (47 CFR 64.1200(a)(10)). "Please don't text me" in a booking note reads like that kind of request. Whether a note in your booking system legally counts is a question for a lawyer, not for this test. In our test, the AI acted on it, and the rules script left it for a person. A template that ignores notes would have kept texting.
Healthcare providers have a separate exemption for appointment reminders. Its conditions include 160 characters or less, no billing content, at most one message a day and three a week, and an opt-out in every message (47 CFR 64.1200(a)(9)(iv)). Every text in our test, from both methods, was longer than 160 characters, and none had an opt-out line, because our policy didn't ask for one. If you rely on that exemption, write it into your template. For your own situation, ask your texting provider or a lawyer. This article isn't legal advice.
What to do with this
- Turn on the reminders your software already has. In this test, fixed templates with a few if/then rules got every routine case right for free.
- Write down your hold rules before you choose anything. Paid, cancelled, disputed, missing a time, large and very overdue. Our rules script got all of these right because they were written down. The AI got them right because the same rules were in its instructions.
- Decide what happens to customer notes. This is the one place AI helped. If notes are rare, send them to a person and stop there. If they're common, try having AI read each note and draft a summary or reply for a person to approve.
- Treat "don't text me" as a stop, in whatever words it arrives. Check that your system can mark a customer as email-only.
- Check the length and add an opt-out line. Count characters on your longest template.
The rule
Let rules send the routine reminders. If AI is useful at all, it's for reading what customers write back, and a person should still approve what it drafts.
How we ran this test
- Synthetic scenarios. The two businesses and all 30 reminder records were written for this test. No real customer data was used, and no message was sent to anyone.
- Answers set first. The expected decision, channel and facts for every case, the scoring script and the decision rule were written and fingerprinted (sha256, timestamped 5:17 p.m. ET) before the first AI call.
- What was run. Our rules script, once on all 30 records. Anthropic's Claude Sonnet 5.5 (
claude-sonnet-5-5), three times on each record through the API on October 23, 2026: 90 calls, $0.58 in API usage. - Scoring. A script checked names, dates, times, amounts, links, the send/hold/route decision and banned words. Message quality and handling of customer notes were judged by reading. One scoring-script mistake was found after the run, corrected, logged with a date, and is reported both ways.
- Who did what. Test designed and scored with the site's AI writing assistant. Reviewed and approved by Ross C.
- Limits. Synthetic data, one model, one date, one rules script. The fact checks were scripted. The judgment scores came from the site's AI assistant only. Texting rules are cited, not tested. The numbers are counts from 30 cases, not rates.
- Evidence. Download the evidence files (zip): the cases, instructions, rules script, raw API responses, scoring scripts, and SHA-256 fingerprints. Rerunning the scoring scripts reproduces the reported results. The run script makes new paid API calls and needs your own key.
Related reading
- Synthetic lead follow-up test: stop rules and draft review on 30 invented inquiries.
- Lead follow-up automation blueprint: stop conditions and lifecycle map for inquiries.
- AI readiness checklist test: when a workflow is a rules job, not an AI pilot.
Sources
All web sources were checked on October 23, 2026. Vendor sources are the vendors’ own claims, and we did not test them.
Primary legal sources (cited, not tested)
- 47 CFR 64.1200, Delivery restrictions (FCC TCPA rules), Cornell LII. https://www.law.cornell.edu/cfr/text/47/64.1200
- 47 U.S.C. 227 (Telephone Consumer Protection Act), Cornell LII. https://www.law.cornell.edu/uscode/text/47/227
- Official PDF (2025 CFR edition, govinfo): https://www.govinfo.gov/content/pkg/CFR-2025-title47-vol3/pdf/CFR-2025-title47-vol3-sec64-1200.pdf
The article does not say any message in the test was or wasn’t compliant. Whether a particular texting system counts as an “automatic telephone dialing system” is a legal question we did not address.
Vendor claims (not tested)
- Square Appointments, “Manage appointment booking notifications and reminders”. Square help
- Square, “Adjust your appointment settings” (US support center). Square settings help
- QuickBooks, send invoice reminders automatically or manually. QuickBooks help
- QuickBooks, “Get started with the Payments AI” (page title rechecked 23 Oct 2026). QuickBooks Payments AI help
Model and pricing
- Anthropic pricing. Claude Sonnet 5.5 costs $2 per million input tokens and $10 per million output tokens. Checked October 23, 2026. Anthropic pricing
- Model string.
claude-sonnet-5-5was requested, and the API returned that model string on all 90 calls (see evidence/ai-outputs.json, fieldmodel).
Test evidence
- design.md, prompt.md, records.json, expected.json, build_records.py, rules.py, score_mechanical.py and evidence/run.py were locked before the run (fingerprints.sha256, 2026-10-23 17:17:19 EDT).
- evidence/results.md has the primary results (locked scorer). evidence/results-v2-deviation.md has the corrected-scorer results (deviation D2). deviations.md lists D1 to D7.
- evidence/raw/ has the 90 raw API request/response files. evidence/scores-judgment.json has the judgment scores (AI assistant, labeled as judgment).