Skip to main content
DoneThat

AI Adoption GuideSupportConfirm

Resolution-confirmation message generator

An LLM drafts a targeted follow-up asking whether the issue is resolved.

Support processIntakeTriageAssignInvestigateResolveConfirmClose

By Don, DoneThat’s AI coach · updated

A good follow-up names the fix and asks one answerable question

Most follow-up messages are the same sentence sent forever. Just checking in, did that resolve your issue? It names nothing, so the customer has to reconstruct the whole thread before answering. A generator writes the version that states what changed, then asks one question about that specific thing.

The draft has three parts. A line saying what was found or changed, in the customer's terms. A question that can be answered in a few words. A statement of what happens if nobody answers, with the date.

That third part does most of the work. A customer who knows the ticket closes Friday, and that a reply reopens it, either acts or lets it go on purpose. Silence after that message means slightly more than silence before it.

This is the cheapest tool in the confirm stage and the one with the lowest ceiling. It verifies nothing. It writes a better question, and better questions get answered more often. The same drafting stack behind knowledge-base-grounded replies usually handles this job as a much smaller task.

The generator does not decide whether to send, or when. It produces text for a ticket that is already resolved and already scheduled for a check. Those decisions live in workflow settings that a support lead owns.

The draft is only as specific as the ticket record allows

The generator needs the resolution in usable form: what the customer reported, what was done, and which part of the report it addressed. When the closing note says fixed and nothing more, the model writes a generic message, because nothing else exists in the record.

That makes this feature dependent on the structured problem, cause, and fix summary written at close. Teams that skip the summary get the same bland check-in they always had, drafted faster.

Give the model the customer's own words as well. A clinic wrote that lab results are not showing up on the patient record. The follow-up should use those words. A message about an integration sync job describes the same event in vocabulary the customer never used.

Set hard limits in the prompt. No apology unless the record shows a service failure. No promise about future behavior. No new commitment on timelines or credits. The message asks one question and states one deadline.

When the resolution field is empty, the generator should refuse and say why. A follow-up asking whether an unnamed thing is fixed is worse than sending nothing. It tells the customer that nobody remembers their ticket.

Timing and channel decide whether anyone answers

Send timing belongs to the issue type, not to a global setting. A password reset can be confirmed within the hour. A fix that only shows during a monthly billing run cannot be confirmed until that run happens. Set the delay per issue type, and let the generator write toward the resulting date.

Match the channel to the original conversation. A customer who used chat gets a short message with no greeting. Email needs a subject line that repeats the issue in plain words, since the subject line decides whether the message is opened at all.

One message, one named recipient. The person who filed the ticket should answer it, not a shared alias where nobody owns the reply. When the requester has left the company, the draft should stop and let an agent choose a new contact.

Length caps help more than tone rules. Three sentences on chat, five on email. Longer messages invite skimming, and a skimmed follow-up produces a one-word answer that nobody can act on.

Cap attempts at two. The first message asks. The second, days later, states the close date and repeats the question in one line. A third message is pressure, and pressure produces irritated replies rather than useful ones.

Draft the follow-up for a vet clinic's lab results

The following scenario is made up. A software company sells practice management software to veterinary clinics, covering appointments, patient records, and lab result imports. A clinic reported that results from their outside lab stopped appearing on patient records after Tuesday.

The fix was a corrected clinic identifier on the lab connection, applied Thursday. Results sent after that point import normally. Results from Tuesday and Wednesday were loaded by hand. The closing summary records all three facts.

The generated draft runs four sentences. It says the lab connection was using an outdated clinic ID, which is why results stopped on Tuesday. It says the ID was corrected and the two missing days were imported manually. It asks whether yesterday's results appeared as expected. It says the ticket closes Friday, and that a reply reopens it.

The question can be answered from a screen the practice manager already has open. She does not have to test anything or look up a ticket number. Yes and no both move the ticket forward.

Compare the generic version: following up on your recent ticket, has your issue been resolved? This clinic has filed four tickets this quarter. The manager cannot tell which one is meant, so she does not answer, and the ticket closes on a customer who confirmed nothing.

Vague check-ins, false certainty, and messages that arrive too early

Overclaiming is the first risk. A model summarizing an engineering note can turn "deployed a change that should address this" into "the problem is fixed." The draft has to keep whatever hedge the record contains. Send it through the same policy and tone review applied to replies before it reaches the customer.

Early sends waste the attempt. A follow-up arriving before the customer could have seen the fix earns a truthful "I have not checked yet," which settles nothing. Tie the send to the event, not to a fixed number of hours after close.

Old templates leak into new drafts. A model shown many past follow-ups as examples drifts toward the average one, and the average one is vague. Supply resolution facts and constraints instead of a large example set.

Multi-issue tickets need multi-part questions, and models tend to ask about the largest issue only. Where three symptoms were reported and two were fixed, the draft must name the open one. Otherwise a clean reply comes back and the label read from it is wrong through no fault of the classifier.

Frequency across tickets goes unmanaged. A customer with five open tickets can receive five follow-ups in one afternoon. Rate-limit by account, not by ticket.

The agent presses send

The draft arrives as a suggestion in a compose box. The agent reads it against the thread, edits the sentence that names the fix, and sends. Editing runs high on technical tickets and low on routine ones, which is the correct split.

Auto-send suits a narrow set: single issue, standard resolution, no service failure, no billing amount. Write that list out. Everything outside it needs a person, because a wrong claim inside a follow-up creates a fresh complaint stacked on the old one.

The deadline in the message has to be real. If the text says the ticket closes Friday, then it closes Friday, and a reply before then keeps it open. Making that promise true is a configuration job shared with the rules governing auto-close after silence.

Review unanswered follow-ups monthly. Sort by issue type and read ten of them. The pattern usually shows up in the first three. A question the customer could not check. A date that made no sense. A fix described in unfamiliar words. Repairing the source summary helps more than rewriting the prompt.

Is this worth automating for you?

Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other.

DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.

Measure the baseline first