---
title: "The refund that closed itself"
subtitle: "Tools can finish money, quotes, and calls. Write down who still has to touch them."
principle: "Keep the gate"
date: "2026-09-04T14:21:14.129Z"
author: "Mikko Atienza"
canonical: "https://ciel.codes/showcase/blog/the-refund-that-closed-itself"
edition: "2026-09-04"
source: "https://ciel.codes/showcase/pulse/2026-09-04"
abstract: "You already have a ticket that can finish without you. A refund. A contract tweak. A quote sitting in a thread that has been open so long the customer stopped chasing it. The software can post the credit, rewrite the"
cite: "Atienza, M. (2026). Keep the gate. Pulse."
citations:
  - handle: "@rileybrown"
    url: "https://x.com/rileybrown/status/2095650681755521030"
  - handle: "@fchollet"
    url: "https://x.com/fchollet/status/2095556013407834273"
  - handle: "@rowancheung"
    url: "https://x.com/rowancheung/status/2095538308436914307"
  - handle: "@SpikeCalls"
    url: "https://x.com/SpikeCalls/status/2095545944913694736"
---

You already have a ticket that can finish without you. A refund. A contract tweak. A quote sitting in a thread that has been open so long the customer stopped chasing it. The software can post the credit, rewrite the clause, and send the number. That is the tempting part. The useful part is slower: a named person still has to look, then click.

That is not a taste for paper. It is how a shop this size survives a bad week. One auto-refund to the wrong job. One clause that moved a date. One quote that undercut the rate you actually need. François Chollet (@fchollet), who has spent years building the systems people want to run with nobody in the chair, is not asking you to slow down for sport.

> I believe we need to make a deliberate effort to keep humans in the loop in all critical processes across our economy and society, regardless of whether it is technically necessary.
>
> François Chollet (@fchollet)

Read that the way you would read it on a Thursday, not as a speech. Necessary is the wrong test. The test is whether you can live with the close if nobody saw it.

## The list that did not wait

You have a list like this. Old rows. Last owner gone. Two people already called it dead. It still sits in the CRM because deleting it feels like admitting the pipeline was a wish.

Someone pointed dialers at a list like that. The operator behind SpikeCalls (@SpikeCalls) ran 25 voice bots at 1,200 rows that had sat for eight months, after the last agent quit in March. The bots placed 1,520 cold calls in 60 seconds. That is a real count, not a slogan. Two humans had written the list off. The software did not ask them.

Speed will revive follow-up you abandoned. It will also call people you may not call, read a script nobody approved, and offer a number you cannot honor. The row is not the problem. The missing stop is. A dead list is storage. A callable list has a person who will own the quote if anyone picks up.

If a prospect says yes in that first minute, the loop is no longer "outreach." It is money. The bot can dial. It cannot be the one who names the price.

## A briefing is not a send

Monday morning, you used to rebuild the day by hand. Inbox. Open invoices. Tickets nobody touched over the weekend. Now you can dump the pile in one place and ask what needs a reply. That is a genuine save. It is also how a draft starts looking like a decision.

Riley Brown (@rileybrown) has shown a lot of flashy assistant demos in public. The moment that mattered to him was quieter: he gave the assistant context over the whole business, then asked a normal morning question. Inbox, invoices, open tickets, in one pass. The wow was not a picture. It was not having to reconstruct who was waiting. He still chose what left the building. Exports. The follow-up. The send.

That split is the whole job. The briefing can be automatic. The send cannot.

The same split shows up after a call. You walk out of the room with a head full of owners, dates, and "we said we would." Rowan Cheung (@rowancheung), who tries a lot of these workflows before they hit other people's calendars, rambles into the phone and lets the mess become structured notes and action items. Fine. Useful, even. Then a person still has to say which of those lines becomes a ticket, which date is real, which promise a client can quote back, and which hours are billable.

If you skip that pause, the ramble is the commitment. Nobody meant it that way. The customer will not care.

## Who still has to touch it

You are already the unnamed stop on half of these. Make it named. Four closes still wait: money back, contract language, a quoted price, and anyone the shop is about to call. Draft and route as much as you want. The last click stays a person you can point to.

```mermaid
flowchart TD
    A["Customer: asks for a refund"]:::navy
    B["Coordinator: drafts the credit"]:::green
    C["Owner: checks the invoice"]:::purple
    D["Owner: posts the refund"]:::green
    E["Coordinator: sends the no"]:::navy
    F["Customer: sees the money"]:::purple
    A --> B --> C
    C -->|yes| D --> F
    C -->|hold| E
    classDef navy fill:#1e1b4b,stroke:#a5b4fc,color:#e0e7ff
    classDef green fill:#064e3b,stroke:#6ee7b7,color:#ecfdf5
    classDef purple fill:#4c1d95,stroke:#c4b5fd,color:#ede9fe
```

The coordinator can prepare the file. The owner still posts it, or the coordinator still has to say no with a reason. There is no third path where the ticket closes because the tool was confident.

Same shape for a quote. Sales drafts. Owner or sales lead signs the number. Same shape for a contract change. Counsel or the owner reads the clause. Same shape for the old list. Someone marks the rows that may be called, records the script, and takes the transfer when a person asks for a price.

You can take a gate off later. You take it off in writing, for one loop, after you have watched it. You do not take it off because the demo finished the loop in a second.

## Tally last week's ungated closes

Nobody has a credible figure for how many shops already let software post credits. Count yours.

Measure this: from last week, mark every closed refund, contract edit, quote, and outbound call with a person's name, or with "none."

Four numbers. That is the whole tally. If "none" shows up next to money or a quoted price, that loop is already finishing without you. If the outbound column is a pile of "none," you are running the dead-list experiment whether you meant to or not. Do not average them. A clean quote column does not excuse a refund column with no name.

## Name who still closes it

You already know which loops scare you. Write the names this week, on paper if that is what you have.

- [ ] Write the person who may post a refund, and the person who covers Thursday.
- [ ] Write the person who may change contract language, even a date.
- [ ] Write the person who may send a price, and the rule for who they must ping above a number you pick.
- [ ] Write who may be called this week, who owns the script, and who takes the live quote.

Put those four names next to the desk that already works the queue. If a line is blank, that loop stays open until a name is on it. Missing cover on Thursday is a blank.

Open the oldest refund ticket before you open anything new.

If it can close without a name, it waits.
