Skip to main content
Navigation

A&A INSIGHTS

Business & AI strategyFor business owners

Who to tell when you ship a fix: notify by error hit, not by report

Solo AI SaaS founders: move the fix notice from the reporter to everyone who hit the error. Evidence from Gumloop and Decagon; the notify and stop table is A&A's design.

AI SaaSsupport automationdefect handlingfix notificationsolo founder
日本語で読む
Scattered documents become an organized comparison and a decision
A conceptual illustration of gathering information, organizing it, comparing conditions and making a decision. Illustration generated with AI

THE STARTING POINT

When a fix ships, define who to notify by the users who actually hit that error, not by the person who reported it. Reports arrive from only a fraction of the users who hit a bug, so replying to the reporter alone leaves everyone who stalled on the same defect and quietly left with nothing.

The answer: pick the fix notice by who hit the error, not by who reported it

A&A perspective

When a fix ships, define who to notify by the users who actually hit that error, not by the person who reported it. Reports arrive from only a fraction of the users who hit a bug, so replying to the reporter alone leaves everyone who stalled on the same defect and quietly left with nothing. Whether it resolved is checked by one record: did the notified user run the same operation again and succeed? The inputs change too. The deciding material is not your list of inbound tickets but your error records, plus what each of those users did afterwards.

A&A perspective

Running on that definition needs three things settled in advance. First, move the notification trigger off the inbound side and onto the side where the fix appears, which is the code merge. Second, write the conditions for notifying and the conditions for not notifying on the same single sheet. Third, separate shipped from resolved, and keep the resolution check as a process distinct from the notice. Add notifications without settling those three and you increase contact with people who were never blocked while still missing the ones who were.

A&A perspective

A word first about what this article produces. It is not a notification template. It is one sheet whose rows are split by what the affected user did after hitting the error, each row carrying whether to notify and which record decides it. The wording can be written once the conditions exist. Reverse that order and you spend the time polishing sentences without ever settling who receives them.

The leak is not at intake; it is after resolution

A&A perspective

When you build and operate alone, support improvements go to intake first: automatically attaching the plan, the preceding action and the error the moment a message arrives. That works. The intake design itself is covered in "Solo AI SaaS support: attach the failure context before automating replies"; this article is the stage after it. But no amount of intake polish increases the number of messages that arrive. Intake improvement makes what did arrive faster to handle. It does not touch the people who stayed silent.

From the sources

The Decagon case study published by Anthropic states that, with Claude, "end-users resolve issues without human intervention in most cases." That is all it states: most resolve without a human.

Anthropic ↗

A&A perspective

What humans handle, then, reads as only the part that reached a human. But that sentence is about the end-users of Decagon's customers, the page says nothing about the human side itself, and it says nothing about what share of your own users stay silent. One reading still carries over. The inbound you see is not everything that happened, only what reached a human. A report arrives only when being blocked was joined by a second condition, a willingness to pay the cost of reporting. The choice on the other side of that cost is to stop using the product without saying anything.

A&A perspective

So when you design the post-resolution process, the first question is not how to make replies faster. It is which users this fix concerns. Without a record that can answer that question, a notification mechanism still only yields the ticket list as its recipients, and the operation collapses back to replying to reporters.

Rows split by what the user did after hitting the error, with notify and stop conditions in the same table (A&A's design proposal; neither source states the row cuts, the frequency ceiling or the time before checking. The last row is there to say this is where you stop when the link does not exist.)
What that user did after hitting the errorHandling when the fix shipsDeciding record / stop condition
Reported it (an exchange already exists)Reply inside the existing exchange; create no new channelThe ticket identifier. The resolution check runs as its own process
Kept using the same operation afterwardsNotify once only; write just the move that restarts itRecords of the same operation after the error. Never twice for one fix
Dropped only that operation afterwards (still uses other features)Highest priority; name the operation they hitThe gap in operation records after the error. The row closest to cancelling
Logins stopped afterwardsNotify, but do not mix in any sales messageLast login date. Do not chase if they do not return
Hit it but worked around it and moved onDo not notifySuccess records after the workaround. This is the stop condition
Already notified twice in the last thirty daysDo not notify; carry over to the next fixYour own send records. Hold the frequency ceiling on the record side
Error and user are not linked at allCannot notify; build the link firstWhether the link exists. This is the first thing to check

The source: three separate triggers can be read out of Gumloop's account

From the sources

In a first-party article dated February 17, 2026, Gumloop published how it runs support. The author is Max Brodeur-Urbas. On staffing the article states that "our support team has only two people," making explicit that the whole operation runs on a two-person support team.

Gumloop ↗

From the sources

Three mechanisms that belong to the post-resolution phase can be read out of that article. The first is effect confirmation, and it is daily: "every day, a workflow identifies users to follow up with, to ensure that the solutions the support team provided actually work." Checking whether the provided solution actually worked exists as its own process.

Gumloop ↗

From the sources

The second is the fix notice. "Another agent runs every time Gumloop merges staging, so we can inform users that a fix relevant to their issues was shipped." The trigger sits on the staging merge, not on the inbound side.

Gumloop ↗

From the sources

The third is cleanup: "two other agents automatically archive email threads and Pylon tickets after issues have been resolved," so post-resolution archiving is a different agent from the notice and the effect check.

Gumloop ↗

A&A perspective

For a small company the value of that three-way split is not about headcount; it is about triggers. Treat all three as one lump of after-the-ticket work and the trigger collapses into whenever you happen to remember. On a busy day none of them runs. Kept separate, you can later tell which one failed to run. The reason a two-person operation splits it three ways reads as a difference in triggers rather than a function of staffing.

A&A perspective

Note that the Gumloop article never says to pick the recipient by who hit the error rather than who reported it. It says a merge triggers telling users that a fix relevant to their issues shipped. Widening the target from the reporter to everyone who hit the error is A&A's proposal, not a claim from the source.

Move the notification trigger from the inbound side to the fix side

A two-column before/after figure headed "Move the trigger and the set of recipients changes". The left column, "Trigger on the inbound side", lists four items: the trigger is whenever you happen to remember; the recipients are only reporters who hold a ticket; there are no stop conditions, so it is judged from memory; and the resolution check is mixed into the same process as the notice. The right column, "Trigger on the merge side", lists four items: the trigger is the staging merge; the recipients are the users who hit that error; the stop conditions are written into the same row as the notify conditions; and the resolution check is its own daily process. The point of the figure is that moving the trigger from the inbound side to the merge side swaps the reachable set from reporters holding a ticket to everyone who hit the error. That a merge triggers telling users a fix shipped, that effect confirmation runs daily, and that post-resolution cleanup is a separate process all come from Gumloop's own support-operations article dated February 17, 2026. Defining the target by who hit the error rather than who reported it, and writing stop conditions into the same row, are A&A's design proposal; the article does not say this. This figure shows no effect measured by A&A.

A&A perspective

With the trigger on the inbound side, the people you can notify are limited to those who hold a ticket, and only reporters hold tickets. No amount of operational effort removes that limit, because the set of reachable recipients is already fixed by where the trigger sits.

A&A perspective

Move the trigger to the fix side and the set becomes the users who hit the error that this fix repaired. Whether a ticket exists drops out of the condition. Before any implementation talk, that substitution is the substance of the design.

A&A perspective

In practice you need one token that links a fix to its recipients. Run it by hand and a single rule suffices: when you merge a fix, always write the identifier of the error it repaired into the merge description. The identifier can be an error code, an exception type or the name of the operation that failed, any one of them. Without it, even a built notification mechanism keeps a step where a human has to recall which error this fix repaired.

A&A perspective

At one-person scale, the rule comes before the automation. That one-line commitment to write the identifier into the merge description is the connection point for automating notices later. Go the other way, automating notices while leaving the identifier unwritten, and you hand the guessing of that link to a machine, building your own route to notifying the wrong people.

Write the notify conditions and the stop conditions on one sheet

A&A perspective

A sheet that lists only notify conditions makes contact grow without bound once you operate it. It sends on the same basis to users who hit the error but were never blocked, users who already worked around it themselves, and users who received a different notice recently. Notification frequency can itself become a reason to cancel. So the stop conditions do not live in a separate document; they live in the same row of the same sheet.

A&A perspective

The axis that splits the rows is not the severity of the error. It is what the user did after hitting it. A fix notice means something entirely different to someone who kept using the same operation, someone who dropped only that operation, and someone whose logins stopped. And this axis is decidable from records rather than from opinion. Split by severity and the judgement returns to being subjective every time; split by behaviour and the same record yields the same row.

A&A perspective

The table below is A&A's design proposal. Neither source states how to cut the rows, what frequency ceiling to use, or how long to wait before checking. The last row is there to say that this is where you stop when the link does not exist.

A&A perspective

Use it right after merging the fix by checking the last three rows, the stop conditions, first, and only if none of them applies, reading down from the top to settle the matching row. Read from the top and stop at the first hit and you will send again to someone already notified twice, manufacturing the very over-contact this section exists to prevent. Once the matching row is settled, whether to notify and which record decides it are settled together. The point is to stop assembling the judgement from scratch each time, so verifying that the deciding record is actually in your hands matters more than adding rows. Rows whose record you do not hold read not as notification conditions but as a list of records you still need to build.

"We fixed it" is an explanation, not a completion

From the sources

On the Decagon case study page, CTO and co-founder Ashwin Sreenivas describes the unit of support: "It's not just about answering questions - our AI agents actually complete tasks for customers." Taking a refund as the example, it explains that "the agent checks your eligibility, processes the refund through the payment system, and handles all the steps a human agent would have done." The unit sits at the completion of the procedure rather than at guidance through the steps.

Anthropic ↗

A&A perspective

Apply that view to a fix notice and the sentence "we have fixed the defect" belongs on the explanation side. What is stalled on the user's side is work, not understanding. To move it toward completion, the notice carries the one move that restarts the stalled work: on which screen, which operation to retry. If the retry already happened automatically, the notice carries the fact that it did.

A&A perspective

This is not about making the wording more considerate; it is about making it shorter. The cause analysis, the prevention policy and the volume of apology are surplus against the purpose of the notice. What goes in is the name of the operation they hit and the one move that restarts it, and nothing else. A notice missing those two leaves the recipient with the judgement of what to do now, which is to demand their effort a second time.

A&A perspective

The resolution check is a process separate from this notice. That you sent a notice is not evidence that the issue resolved. That Gumloop holds effect confirmation as its own daily process reads as following from the same separation: the fact of sending and the fact of being fixed are different facts. At one-person scale the signal can be a record rather than a survey. Did the notified user run the same operation again afterwards and succeed? Settle that one signal in advance and the check stops being a manual round of outreach each time.

Hypothetical: three reports, more than three users who hit it

Hypothetical example

What follows is a hypothetical setting. It is not a real customer and not an engagement A&A delivered. Say a one-person invoice-reading SaaS has a defect where loading a PDF in a particular format stalls partway through processing. Three messages arrive, you reply to all three, and you merge the fix. The conventional operation ends there.

Hypothetical example

In the same setting, open the error records. Suppose this format's failure also occurred for users beyond those three reporters; the setting is hypothetical and the counts are assumed. Looking at what happened after the error, the users fall roughly into three groups: those who switched to another format and carried on, those who stopped using only that reading feature, and those whose logins stopped afterwards. Notification priority runs in the reverse of that order, because the ones still using it lose nothing by hearing late, the ones who dropped the feature need to hear now, and the ones whose logins stopped are a last point of contact.

Hypothetical example

In this setting the notice needs two sentences. "We fixed the defect that stalled processing on PDFs in the specified format. Upload the same file again and it will now run through to the end." No cause analysis. The name of the operation they hit, which is uploading a PDF in this format, and the one move that restarts it, which is uploading it again. Those two and nothing else.

Hypothetical example

Settle one check signal in the same setting too. Did the notified user succeed at least once at an upload in that same format within the following seven days? If yes, resolved. If no, either the notice never landed or another cause remains. Records cannot tell you which, so this is the first point where you look case by case. Reducing the number of cases you look at individually is the practical gain for a one-person operation.

A&A perspective

Leaving a numeric target out of the hypothetical is deliberate. What this design changes directly is the range of users a fix reaches and the count of resolutions you could confirm. How cancellation or retention rates move does not come out of this table.

Limits, and the one step available today

A&A perspective

Four limits. First, both sources are the publishers' own accounts of themselves, not independent audits. The Gumloop article describes that company's operation and the Decagon page describes that company's product philosophy. Neither demonstrates reproducibility at small-business scale. The figures displayed on both pages are also left out of this article, because no denominator or definition is given for them.

A&A perspective

Second, neither page says to pick the recipient by who hit the error rather than who reported it. That deciding axis, and the design of writing stop conditions into the same table, are A&A's proposals. Third, the Gumloop machinery runs on a premise that errors, users and merge history are already linked. For a product without that link, the precondition section above is the first task.

A&A perspective

Fourth, this article measures no effect. A&A has not measured any relationship between this design and cancellation, retention or revenue, and offers no prediction that wider notification reduces churn. That excessive notification frequency works against you is anticipated in the design itself, which is why the stop conditions sit in the same table.

A&A perspective

There is one step available today. Open one recent error record and check whether you can identify the user from it. If you can, start by writing the identifier of the repaired error into the description of your next merge. If you cannot, the work of building that link waits ahead of any notification design. Either way, the entrance from an operation that relies on memory to one that relies on records is in the same place.

When a fix ships, pick the recipient by who hit the error, not by who reported it. To do that, move the notification trigger from the inbound side to the merge side, check first whether your error records can identify the user, and write the notify and stop conditions into one table. The notice carries two things only: the name of the operation they hit and the one move that restarts it. Keep the resolution check as a process separate from the notice, decided by one signal: did the notified user succeed at the same operation again? What the Gumloop article shows is an operating shape in which effect confirmation, fix notice and cleanup each have their own trigger, not a way of choosing recipients. What the Decagon page shows is a view that places the unit of support at completion rather than explanation, not reproducibility at small-business scale. The target definition and the stop conditions are A&A's design proposal, and no effect has been measured. What is available today is to open one recent error record and check whether you can identify the user from it.

Sources & editorial note

Primary pages read for this article. Publication dates below belong to the sources; access dates record our research.

  1. Supporting the world's most AI-native companies with a 2-person team

    Gumloop · 2026-02-17 (date shown on page)

    Accessed 2026-10-05
  2. Decagon delivers white-glove customer service at scale with Claude

    Anthropic · no date shown on page

    Accessed 2026-10-05

AI-assisted editorial production

A&A uses AI for research, writing, translation and editorial checks. Source facts, our analysis and hypothetical examples are labeled separately.

Editorial check: 2026-10-05

← All articles