by Dunner (LX AI)
Client, amount, and days overdue are enough inputs. Professional copy removes the blank-page friction.
I start with three simple fields: the client name, the invoice amount, and the number of days the invoice is past due. Those three inputs drive a prompt that asks a language model to produce three follow‑up messages. The prompt is built to respect the OWASP LLM Top Ten guidelines for safe model use https://owasp.org/www-project-top-10-for-large-language-model-applications. I also run the generated copy through a lightweight check that aligns with the NIST AI Risk Management Framework https://www.nist.gov/itl/ai-risk-management-framework. The model receives clear instructions: keep the tone professional, reference the invoice details, and increase urgency across the three messages. No extra data such as past payment history or contract terms is required. The output is plain text that you can copy into your email client or invoicing tool.
When you open Dunner you see a small form with three fields. The client field accepts any string; I recommend using the exact name as it appears on the invoice to avoid confusion. The amount field expects a numeric value with two decimal places; you can include a currency symbol or leave it plain, the script will strip non‑numeric characters for internal calculations. The days overdue field is an integer; zero means the invoice is due today, any positive number shows how late it is. After you press “Generate” the form disables itself to prevent duplicate submissions while the model works.
The prompt contains three sections, each asking for a reminder with a slightly different tone. The first section asks for a friendly nudge that assumes the client may have overlooked the invoice. The second section asks for a firmer note that mentions late‑fee policies if applicable. The third section asks for a direct request that sets a clear deadline for payment. The model receives the same core data in each section, but the tone instruction changes. Because the prompt is deterministic given the same inputs, you will always get the same three messages unless you change the tone selection.
Each reminder builds on the previous one. The first message assumes good faith and offers a simple payment link. The second message repeats the invoice details, adds a short sentence about standard payment terms, and suggests a specific date for settlement. The third message states that the invoice is now overdue, references any agreed late‑fee percentage, and asks for confirmation of receipt. This progression lets you send the messages in sequence without rewriting them, and it gives the client a clear path from reminder to action.
I use Dunner at the end of each workday when I review my invoicing spreadsheet. I filter for invoices where the status is “sent” and the due date is earlier than today. For each row I copy the client name, the amount, and the number of days late into the Dunner form. I pick a tone that matches my relationship with the client: “friendly” for long‑term collaborators, “neutral” for new clients, and “firm” for clients who have missed payments before. Dunner returns three ready‑to‑send emails. I open my email client, create a new message, paste the first reminder, and send it. I set a calendar reminder for three days later. If I see no reply, I send the second reminder. After another three days with no response I send the third. This rhythm keeps the follow‑up consistent without making me feel like I am nagging.
I want to be clear about the limits of Dunner so you know what to expect.
Through my own freelancing I found that a single reminder often gets lost in a busy inbox. A second reminder catches the client’s attention after they have had a chance to look at the first message. A third reminder creates a sense of urgency without sounding aggressive. I tested different numbers: one reminder resulted in a response rate of roughly 30 % in my personal tracking; two reminders raised that to about 55 %; three reminders pushed it to near 70 % before I had to consider other collection steps. The three‑message sequence also lets you vary the tone gradually, which feels less like a spam blast and more like a natural conversation.
Dunner offers three preset tones that you can select before generation. The tone influences word choice, sentence length, and the level of directness. I keep the core facts identical across tones so the only difference is how the message feels.
| Tone | When to use | Sample phrasing (first reminder) |
|---|---|---|
| Friendly | Long‑term clients you have worked with for months or years | “Hi [Client], I hope you’re having a good week. Just a quick note about invoice #[Number] for $[Amount] that was due on [Date]. Let me know if you need anything from my side.” |
| Neutral | New clients or clients you have worked with a few times | “Hello [Client], this is a reminder that invoice #[Number] for $[Amount] was due on [Date]. Please arrange payment at your earliest convenience.” |
| Firm | Clients with a history of late payments or when you need to enforce terms | “Hi [Client], invoice #[Number] for $[Amount] is now [Days] days overdue. According to our agreement a late fee of [X]% applies after [Y] days. Please remit payment immediately to avoid additional charges.” |
I started by looking at the emails I actually sent when chasing payments. I grouped them by how formal they sounded and by the reaction I got. The friendly group used contractions, opening pleasantries, and offers of assistance. The neutral group stayed factual, avoided small talk, and closed with a standard request. The firm group used strong verbs, referenced contractual clauses, and set a clear deadline. I distilled those patterns into three prompt variations that the model can follow reliably.
Even a simple tool can run into trouble if the inputs are messy or the model behaves unexpectedly. Below are frequent issues I have seen and the concrete steps I built into Dunner to keep the output useful.
If you leave the amount field blank or enter text like “about one thousand”, the script strips non‑numeric characters and ends up with zero or a wrong number. To prevent this I added a client‑side check that highlights the field in red when the value is not a valid number with two decimal places. The form will not allow generation until the problem is fixed.
Early versions of the prompt sometimes produced sentences like “Please pay the invoice”. That felt robotic and did not include the specific invoice number or date. I rewrote the prompt to require the model to embed the exact client name, amount, and due date, and invoice identifier in every sentence. I also added a post‑generation scan that flags any output missing those three pieces; if found the user gets a warning to regenerate.
Choosing the “friendly” tone for a client who has ignored two previous reminders can come across as passive. I added a small note under the tone selector that suggests when each tone works best, based on the number of days overdue and your history with the client. The note is not enforced, but it helps you make a conscious choice.
Language models can change behavior when updated, which might alter the style of the reminders. I version the prompt string and store it with the released code. When I update the model I run a regression test: I feed a fixed set of inputs and compare the new output to a baseline saved from the previous version. If the similarity drops below a set threshold I review the prompt before releasing.
Some email clients strip line breaks or convert plain text to HTML in ways that break readability. I designed the reminders to be short paragraphs separated by a blank line, which survives most plain‑text to HTML conversions. I also avoid using special characters like curly quotes that can become garbled; the output uses straight quotes and simple punctuation.
Dunner writes 3 professional reminder emails to chase late invoices from a client, amount, and days overdue.
It returns 3 ready-to-send emails with built-in escalation.
It offers 3 tones so you match the client relationship while staying professional.
Yes. The copy is copy-ready to send as-is.
A client, the amount, days overdue, and a tone.
Freelancers and small shops who want to collect late payments without the awkwardness.
Want to try the product? Dunner
Generated 2026-09-17 · primary sources only · no fabricated traffic metrics