DEV Community

LXSAIHUB
LXSAIHUB

Posted on

I avoided chasing a late invoice for a month. Dunner wrote the emails I couldn't.

I'm a developer who also runs the business, which means the part I'm worst at is the part that pays me: asking clients for money. A invoice went thirty days overdue and I opened the email draft four times without sending it. Too soft reads as careless, too firm reads as hostile, and "friendly but firm" is easier to say than to write.

Dunner is a small tool I built for that exact moment. You enter the client, the amount, and how many days it's overdue, pick a tone, and it returns three ready-to-send reminder emails that stay professional. The goal is copy you can paste without editing — and without the stomach-drop of writing it yourself.

What the drafts actually give you

Three versions, not one, because the first thing you'll want is a choice. The tones are built around staying professional rather than escalating for the sake of it; an overdue reminder that burns the relationship costs more than the invoice. The copy is meant to be copy-ready, so the awkward part — the actual asking — is already done when you land on the page.

It's a writing tool, and that's where AI earns its place: turning "please pay, it's late" into three coherent options with the right amount of warmth is open-ended, and a model handles the phrasing better than I do at 11pm.

What it deliberately does not do

  • It doesn't send anything. The emails land in your hands; the click is yours. No account access, no auto-send.
  • It doesn't track whether they paid. It writes the nudge; your invoicing system tracks the money. It's scoped to drafting, not bookkeeping.
  • It doesn't know your client relationship. The tone you pick is a guess at a dynamic it can't see; adjust the copy before sending if the history says so.
  • No guarantee the invoice gets paid. A good reminder helps; it doesn't compel.

Dunner runs in the browser for $19/mo. If a draft still feels off in your voice, tell me which line — the next version should fit better.

Top comments (0)