On this page
Key takeaways
- Internal tools fail politely: nobody complains, they just keep the old workbook open.
- Launch metrics (tickets closed, screens shipped) say almost nothing about adoption.
- The useful questions are small and observable: who still exports to CSV, which status lies?
- The second cut should come from ninety days of use, not from the pre-launch backlog.
Internal tools fail politely. Nobody writes a review. People open the old workbook in another tab and wait for the new system to become optional. Ninety days is usually enough to tell whether you shipped a system or a demo with a database.
This is the checklist we run after a release — what to watch, when, and what to change. It is the difference between a studio that ships software and a vendor that ships a phase.
Why launch metrics mislead
At launch we measure what is easy to count: tickets closed, screens shipped, whether the training session went well. All of it is about the build. None of it is about the work.
| What teams measure | What it actually tells you | What to measure instead |
|---|---|---|
| Screens shipped | The team was busy | Tasks completed without leaving the tool |
| Training attendance | People were polite | Who used it unprompted in week two |
| Tickets closed | The backlog moved | Which workarounds are still alive |
| Logins | The link was clicked | Which records are edited in the tool vs. elsewhere |
Days 1–14: watch the workarounds
The first two weeks are about noticing what people do when they think nobody is looking. Sit with them. Do not ask what they think of the tool; watch what they open.
- The old workbook. Is it still open? Is it still being edited, or only read?
- The CSV export. Who exports, to where, and why? Every export is a missing feature or a missing trust.
- The chat message. Which questions still go to a person instead of the tool?
The signal
A workbook that is read but not edited is a comfort blanket. A workbook that is still edited is a requirement you missed.
Days 15–45: find the lying status
By week three, the data starts to reveal where the model and the work disagree. The classic symptom is a status that people set because the system requires it, not because it is true.
Questions worth asking
- Which status is set and never read?
- Which status is set in bulk, at end of day, from memory?
- Which role was invented in the workshop and does not exist on the floor?
- Which required field is filled with a placeholder?
A status that is always "Done" ten minutes before the shift ends is not a status. It is a tax. Remove it, or make it true.
Days 46–75: the second cut
The second cut should come from these answers, not from the backlog written before anyone used the thing. In practice that means the second release is smaller than people expect and more important than the first.
| Signal | Likely cause | Typical second-cut action |
|---|---|---|
| Workbook still edited | A workflow the tool does not model | Model it, or explicitly decide not to |
| Frequent CSV exports | Missing report, or distrust of totals | Build the one report; show how totals are derived |
| Bulk end-of-day updates | Statuses that do not match the work | Rename or remove states |
| Questions still go to a person | Information not discoverable | Surface it where the question arises |
With Halcyon, the first cut was inbound exceptions, assignment, and a morning digest. The second cut — customer-visible notes — came directly from sales asking dispatch for screenshots in week five.
A demo with a database
- Old workbook still edited
- Statuses set in bulk at end of day
- CSV exports every week
- Questions still go to a person
A system
- Workbook read-only, then retired
- Statuses set as work happens
- Reports built where they were needed
- The answer lives where the question arises
Days 76–90: decide what stays optional
Ninety days in, you should be able to answer a blunt question: could the team go back? If the old workbook were deleted tomorrow, would work stop?
- If work would stop, you have a system.
- If work would slow slightly, you have a good tool that is not yet load-bearing.
- If nothing would change, you shipped a demo with a database.
Decide, deliberately, what happens to the old artifacts. Archive them read-only, name a date, and say so in writing. Ambiguity is how a system stays optional.
The handover that makes ninety days possible
None of this works if the studio disappears after launch. It also does not work if the studio never leaves. The pattern we use: a written handover, a named operator on the client side, and a short, explicit window for the second cut.
- A named person who owns the system after handover.
- Runbooks for the cases that happen after hours.
- A scheduled review at thirty and ninety days, with the questions above.
Ninety-day review checklist
- Name who owns the system after handover.
- List every workaround still alive, with a reason for each.
- Find the status that is always set late, and remove or fix it.
- Decide the retirement date for the old artifact, in writing.
- Schedule the next review before this one ends.
A measurement kit you can set up before launch
Everything in this essay depends on being able to see what people do. That means instrumenting the tool before go-live, not adding analytics in week six when the interesting behaviour has already formed habits. The kit is small.
| Event | Why record it | Question it answers |
|---|---|---|
| record_created / record_updated | Volume and cadence of real work | Is work happening in the tool? |
| status_changed (from, to, actor, time) | Status behaviour | Which statuses are set late or in bulk? |
| export_clicked (which, by whom) | Export demand | What are people taking out, and why? |
| search_no_result (query) | Missing information | What did people look for and not find? |
| override_used (field, reason) | Model mismatch | Where does the system disagree with reality? |
| session_gap (hours idle during shift) | Abandonment | Are people leaving the tool mid-shift? |
Pair the quantitative signals with two qualitative ones: a weekly ten-minute conversation with the most sceptical user, and a standing question in the team channel — what did you do outside the tool this week? The second question surfaces the workaround before anyone thinks to call it one.
SELECT status_to,
date_trunc('hour', changed_at) AS hour,
count(*) AS changes,
count(DISTINCT record_id) AS records
FROM status_events
WHERE changed_at > now() - interval '30 days'
GROUP BY status_to, hour
HAVING count(*) > 20 -- a burst of changes in one hour
ORDER BY changes DESC;Running the thirty-day review
The thirty-day review is where the second cut is decided. Keep it short, keep it evidence-led, and keep the person who owns the system after handover in the chair. A good agenda fits on one page.
- 01
Read the numbers (10 minutes)
Show created versus updated volume, export counts, and no-result searches. No interpretation yet.
- 02
Walk the workarounds (15 minutes)
List every artifact still in use outside the tool. For each, ask: missing feature, missing trust, or habit?
- 03
Name the lying statuses (10 minutes)
Any status set in bulk or set to please the system rather than describe the work.
- 04
Choose the second cut (15 minutes)
Pick at most three changes. Write what each should do to a named metric.
- 05
Assign the retirement date (10 minutes)
Decide which old artifact is read-only from when, and say so in writing.
Handling resistance without a campaign
Resistance to a new internal tool is almost never irrational. It is usually a rational response to a real cost: the new system is slower for a task the person does forty times a day, or it exposes an informal arrangement the old sheet was hiding. Treat resistance as data.
| What you hear | What it usually means | What to do |
|---|---|---|
| "It is slower than the sheet." | One high-frequency task has too many steps | Time that task; cut the steps before adding features |
| "I do not trust the numbers." | Totals are opaque, or a status is wrong | Show how the number is derived; fix the status |
| "We always did it this way." | A rule that exists only in someone's head | Ask them to walk through an example; write the rule down |
| "Nobody told me." | Rollout skipped a group | Fix the communication, not the person |
| "It does not handle my case." | A genuine edge case | Add it to the second-cut list with their name on it |
A week-by-week timeline of a real ninety days
The Halcyon rollout is a useful reference because the numbers are recorded. The pattern generalises even where the details do not.
| Week | What happened | Signal |
|---|---|---|
| 1 | Go-live on the night desk; morning digest starts | Two people still open the old workbook |
| 2 | Assignment used on most exceptions | Workbook is read but no longer edited |
| 3 | Finance closes from the same record | Morning close falls sharply |
| 5 | Sales asks dispatch for screenshots of exception notes | Second-cut feature identified: customer-visible notes |
| 6 | Second cut ships | Screenshots stop |
| 10 | Reopen reasons reviewed at the monthly meeting | One state renamed to match floor language |
| 13 | Old workbook archived read-only | Nobody notices |
The most telling row is week five. Nobody wrote a requirement. The need appeared as a repeated, slightly annoying request between two teams. Watching for that kind of friction is the entire method.
Anti-patterns that make the ninety days fail
How adoption stalls
- Declaring victory at go-live and disbanding the team
- Measuring training attendance instead of behaviour
- Treating every request as equally urgent
- Leaving the old system writable indefinitely
- Adding features to fix a trust problem
How adoption sticks
- A named owner and a scheduled thirty- and ninety-day review
- Measuring what people do outside the tool
- Choosing at most three changes per cut
- Setting a dated, written retirement for the old artifact
- Fixing trust by exposing how numbers are derived
Shape Up [1] describes a related idea in product development: a fixed cool-down after each build cycle to fix what real use reveals, before starting new work. The ninety-day window is the same principle applied to a tool that has just landed in a busy team.
Closing
The internal tool is finished when the old workbook is closed and nobody reaches for it. Everything before that is a launch. Plan for the ninety days, not the week.
References & further reading
- 1Shape Up: Stop Running in Circles and Ship Work that Matters — Ryan Singer, BasecampFree online. See the chapters on cool-down and on shaping work.
- 2Continuous Discovery Habits — Teresa Torres, Product TalkA practical treatment of weekly customer contact and opportunity mapping.
- 3The Lean Startup — Eric Ries, Crown BusinessSource of the build–measure–learn loop referenced here.
About the author
Product behaviour described here reflects what is implemented and tested; anything else is marked as planned. Code samples are illustrative.
All writing