CaseAdvancedShipping & Model Lifecycle / Pilot design and POC-to-production / #20

How do you handle a pilot customer who wants custom behaviour that does not generalize?

The direct answer
Do not write the pilot customer's exception straight into the shared prompt or model path every other customer's runs share. Give them a real, separate lever instead, something like a manual review queue, and hold off on building anything permanent until you have real evidence this is more than a one-off. A patch buried in a shared prompt is nearly impossible to find and undo months later. Saying no today just costs the customer a little manual work, and that part you can always hand back.
Do this, in order
  1. Refuse to hard-code the pilot's exception straight into the shared classification prompt.Why: that prompt runs every customer's audit. Six months from now, nobody will remember why one customer's rule quietly skips a check.
  2. Hand the pilot customer a real, separate lever right now, like a manual bulk-review queue.Why: it fixes their actual pain today without touching the model path every other customer relies on.
  3. Tag and count how often the exception would really fire, for three or four weeks.Why: cheap, real evidence beats a guess about whether this is a one-off or the start of a pattern.
  4. Check whether other pilots in the same kind of business hit the identical wall before building anything permanent.Why: one customer's request is not proof of a pattern. Two or three, in the same kind of business, is.
  5. If the pattern is real, build a proper setting outside the model, with its own held-out test.Why: that is the only version of "yes" that will not quietly break for a different customer later.
  6. Only turn the new setting on for the pilot once it clears that test against their own data.Why: a setting nobody has checked against real receipts is just a guess wearing a nicer shape.

How to answer this, stage by stage

Nobody is grading whether you can say yes or no to a pilot customer. They are grading whether you can rank the real options by what is hardest to undo, not by who is asking loudest this week. Eight moves get you there.

1
Scope it to one real product, one real pilot
Say it like this
"Let's ground this. Cinch is Halsted Finance's tool that reads a company's expense reports and checks each line against that company's own spending rules. Kaia Denholm runs product for it, and Marrick Freight, a trucking company three weeks into a pilot, is the account asking for the one-off."
Why this works
Grounds the ranking in a real product and a real account before naming a single option.
2
Say the ranking rule out loud, before naming a single option
Say it like this
"Here's how I'd frame it. Anyone can say yes or no to a customer's request. The real question is which call is easiest to undo if it turns out wrong, and I rank by that, not by who is asking loudest this week."
Why this works
States the method before the specific request, so it reads as a rule you can reuse, not an opinion about Marrick.
3
Name the outcome every option is competing to protect
Say it like this
"Every option on the table is fighting for the same thing: a policy check that works the same honest way for every paying customer, not one that quietly bends for whoever is loudest this week."
Why this works
This is the O step. Without a named outcome, ranking is just a gut call wearing a method's clothes.
4
Walk the reversibility call with the real numbers behind it
Say it like this
"If we write 'skip the receipt check for drivers under seventy five dollars' straight into the shared prompt, that line runs on every customer's expense reports the second it ships, whether or not they're a trucking company. Six months from now, some engineer touches that prompt for an unrelated fix and has no idea why it's there. Saying no today is the opposite. Marrick keeps clicking approve by hand for a few more weeks, and we can turn it into something real the moment we're sure."
Why this works
This is the R step, the hardest one, made concrete with the actual shared code path instead of an abstract warning.
5
Name what a real yes unblocks, and what a fast yes poisons
Say it like this
"Building this the right way, as a real setting, could actually help us close two other trucking pilots stuck on this exact same rule. Building it the fast way, as a hack, doesn't unblock anything. It just quietly changes what every other customer's audit run means, and nobody signed up for that."
Why this works
This is the D step. It shows the interviewer you're tracking downstream effects, not just this one request.
6
Own the cheap evidence you'd gather before committing
Say it like this
"Before I build anything permanent, I'd tag every driver meal that would have skipped the check, count them for three or four weeks, and go ask the other trucking pilots whether they've hit the same wall."
Why this works
This is the E step, a real check you could run in days, not a promise to "gather more data" someday.
7
Name the alternative you considered and ruled out
Say it like this
"We looked at building Marrick a full custom policy tier that same sprint, since they're a paying pilot and the renewal call was Friday. We ruled it out. One customer's ask isn't proof of a pattern, and a permanent feature built for a sample size of one usually gets rebuilt anyway the moment a second customer's version of the same rule turns out slightly different."
Why this works
A named, rejected alternative is what proves this was a real judgment call, not the only idea anyone had.
8
Close on the rank, defended in one line
Say it like this
"So the order is: manual queue for Marrick now, count the real volume, check the other trucking pilots, then build a real per-role setting with its own test before switching it on anywhere. The queue sits above the hack because it's the only fast option that doesn't quietly change what the model does for anyone else."
Why this works
Closes on the rule itself, something a reader can apply to a request they've never heard before, not just this one.
If you remember one thing A one-off request is not really a question about whether to say yes. It's a question about whether your product has a real setting for this at all, or only a shared number with nowhere else to live.

Let's learn

Say we build a tool that reads a company's expense reports and checks each line against that company's own spending rules. Cinch does this for Halsted Finance's customers: a receipt over a set amount needs a photo attached, a meal over a set amount needs a manager's note, a mileage claim gets checked against the standard rate. Before a tool like this, a company's own accounts payable clerk did all of it by eye, one report at a time, maybe forty a day.

With Cinch running, that same clerk reviews closer to four hundred reports a day, because the model clears the easy, obvious ones on its own and only hands over the ones that actually need a person to look.

Knowledge spark: what makes a shared prompt risky here? Cinch checks every customer's expense report by sending the model the same base instructions, with that company's own rules stitched in. A line written for one customer sits inside that same base text. It runs on every report, every customer, every week, whether or not it was ever meant for them.

Marrick Freight, three weeks into a pilot, runs three hundred and forty long-haul drivers who file about nineteen hundred meal line items a week from truck stops and diners on the road. Cinch's standard rule, built for Halsted's early customers, needs a receipt photo for anything over twenty five dollars. A sit-down meal at a truck stop often runs twenty eight to thirty four dollars, and a driver who has been on the road twelve hours rarely still has the paper receipt. So Cinch flags around four hundred and sixty of those meal line items a week, missing a receipt, over the line, and drops every one into a queue for Marrick's small finance team to check by hand.

Marrick's weekly driver meal line items, submitted versus flagged
1900 950 0 Meals submitted Meals flagged 1,900 a week 460 a week
Nearly one in four of Marrick's driver meal reports gets flagged for a missing receipt or a few dollars over the line, all of it now landing in a manual queue that did not exist before the pilot.

Here is the turn. Those four hundred and sixty flagged meals are not really the problem. The real problem is what Marrick's finance team does next. They can trust the queue and wave the whole thing through without looking, which throws away the actual audit. Or they can open all four hundred and sixty by hand every week, which is close to the same fifteen hours a week Cinch was supposed to save them in the first place.

We did not just build a tool that flags too many meals. We built a tool that hands Marrick's finance team the exact choice we promised to remove: trust everything, or check everything.

At its worst, this costs more than fifteen hours a week back. Say the fastest fix ships instead, a line hidden inside Cinch's shared prompt that lets driver meals skip the check whenever the customer is Marrick. That same line now sits inside the exact model path every other customer's audit runs through. Nobody outside the two people who wrote it knows it is there. The next time anyone touches that prompt for an unrelated reason, driver meals could quietly stop being checked at all, or the same shortcut could get copied for a different customer who never should have gotten it.

Hand sketched flow diagram titled What has to happen before the real setting gets built. Five boxes connected by arrows, in order. Manual queue. Count the volume, shown highlighted in gold. Check other pilots. Build real setting. Turn on for Marrick.
Nothing on this list means anything until you count how often the exception would actually fire. Building the real setting, and turning it on, both sit downstream of that one count.

The choice I would take back is not the twenty five dollar line itself. It is that Cinch's receipt rule was built as one number, sitting inside the shared prompt every customer's report runs through, instead of a real setting a customer's own contract could hold. That was a fine choice back when every one of Halsted's early customers was an office of consultants and accountants filing the same kind of report. It stopped being fine the day a trucking company showed up.

What I would leave alone: Cinch's mileage math never needs a Marrick-shaped exception. Every customer, trucking or not, reimburses mileage against the same standard government rate, so that part of the tool already works exactly the same for everyone, and touching it would only add risk nobody asked for.

The lesson: a customer's one-off request is not really a question about whether to say yes. It is a question about whether your product has a real setting for this at all, or only a shared number with nowhere else to live.

Now here is the same thing as a story

The short version is above. Read on if you want to feel how ordinary the Monday that almost broke this looked from Kaia's side of the pilot.

Kaia Denholm has spent two years turning Cinch from a demo into something forty finance teams now run their expense reports through every week. She is good at the part most product managers dread: sitting on a pilot call, hearing a customer describe a strange edge case, and knowing inside thirty seconds whether it is a real gap in the product or a one-off that will never come up again.

For the first three weeks of the Marrick Freight pilot, Kaia loved that call. Feyi Ostrow, who runs finance operations there, kept saying how much lighter her mornings felt. Cinch was clearing most of Marrick's non-driver expenses clean, hotel folios, fuel cards, office supplies, the exact same as it did for every other customer.

Then came the meal reports. On the Monday of week three, Feyi flagged eleven driver meals in a row that Cinch had sent to her queue, all in a single morning, all missing a receipt, all a few dollars over the line. By Wednesday it was a running joke in their shared pilot channel. By Friday it was not a joke anymore. It was forty five minutes of her one clerk's day, every day, undoing the exact thing Cinch was built to remove.

The trigger came the following Monday, small, almost nothing. Feyi wrote one line: "Can you just turn this off for us? Our drivers aren't lying about their lunch." No threat, no deadline, just a tired, reasonable ask from someone who had been patient for three weeks.

Here is where it almost went wrong. Reo, the engineer closest to the Marrick account, had a fix ready inside the hour: add a check right inside Cinch's shared prompt, if the customer is Marrick and the role is driver, skip the receipt rule under seventy five dollars. It would have shipped by end of day. It would have made Feyi's Monday. It probably would have helped the renewal call sitting on the calendar for that Friday.

Kaia almost approved it. What stopped her was one question she asked herself right before hitting merge: whose report does this line touch besides Marrick's?

Because it was not really a Marrick-only line. It was one condition inside the exact prompt every one of Cinch's forty customers' expense reports ran through, this week and every week after. A junior associate at a consulting firm claiming a seventy dollar client dinner with no receipt would clear the same gate, for a completely different reason, and nobody reviewing that report would ever know a rule built for a trucking pilot was the reason it slipped through.

Hand sketched comparison diagram titled What is easy to undo, and what is not. Left panel, a document icon labelled Manual review queue, caption Costs Marrick a few weeks. Can hand it back any time. Right panel, a solid red box labelled Line in the shared prompt, caption Runs on every customer's report. Nobody remembers why in six months.
A slower Monday for one clerk is a cost you can hand back the moment the evidence changes. A line buried in a shared prompt is not something anyone can point to and undo six months from now.

So Kaia pulled the fix before it merged. Two years earlier, when Cinch's founding engineers first built the receipt rule, the design meeting was short. Every one of Halsted's first six customers was an office of consultants, agencies, or law firms. Twenty five dollars, one number, baked straight into the prompt, was the fastest way to ship something that worked for all six of them. Nobody in that room was picturing three hundred and forty drivers eating at truck stops. Why would they. That customer did not exist yet.

What Kaia actually did that Monday: she gave Feyi's team a real lever instead, a bulk-review button on the flagged queue that let her clerk clear a whole week of driver meals in one pass, with one shared note, instead of opening each one alone. Not a fix to the model. A fix to the workflow around it. She tagged every meal that queue would have skipped, four hundred and sixty a week, and told Feyi plainly: give me three weeks, and if two more transportation pilots hit the same wall, I will build this properly, as a real setting, not a favor.

The replay, three weeks later: two more pilots, a produce distributor and a parcel courier, had asked Halsted's sales team for almost the identical thing, on the exact same meal-receipt rule. That was the number Kaia needed. She built a real setting, a receipt-and-cap rule keyed to a customer and a job role, checked outside the model call itself, tested against six weeks of Marrick's own flagged meals before it ever touched a live report. It cleared at a rate Halsted's compliance team was comfortable signing off on. Feyi's clerk went from forty five minutes a day on driver meals to about six. Nobody at the consulting firm three accounts over ever noticed a thing changed, because for them, nothing did.

What I would tell myself, back in that near miss on a Monday: the fast yes and the right yes are not the same shape of decision, and the fast one is the one you can almost never take back.

Five checks before Marrick's request gets anywhere near the model

This is a question about what to build first and what to refuse first, not a story about a habit with two settings, so ORDER fits, not a step-by-step recovery framework.

O
Outcome. What every option on the table is competing to protect.
Not "keep Marrick happy this week." A policy check that works the same honest way for every paying customer, with nobody able to say a rule bent for reasons nobody wrote down.
R
Reversibility. Rank by which call is hardest to undo, not which one is loudest.
A line hidden in Cinch's shared prompt reshapes every customer's audit run the moment it ships. Saying no to Marrick today costs a few weeks of manual work you can hand back any time.
D
Dependency. What actually unblocks what.
Built as a real per-role setting, this could unblock two other transportation pilots stuck on the same rule. Built as a hack, it unblocks nothing. It just quietly changes what every other customer's audit already means.
E
Evidence. What you could check cheaply before committing a quarter of engineering.
Tag and count how often the exception would fire, for three or four weeks, then ask the other trucking pilots whether they have hit the same wall.
R
Rank. State the order, defend the top pick in one line.
Manual queue now, count the real volume, check the other pilots, build the real setting only once two more asked, switch it on for Marrick last, once it passes its own test.

Two things worth saying out loud here, since this is exactly where an AI PM question earns its name. First, the alternative most candidates reach for by reflex is building Marrick a full custom policy tier that same sprint, because they are a paying pilot and the renewal call is Friday. That got ruled out on purpose. A permanent feature built for a sample size of one customer usually gets rebuilt anyway the moment a second customer's version of the same rule turns out slightly different, and building it fast under deadline pressure is exactly how a rule tuned for one account quietly breaks for everyone else. Second, the real bar for the eventual fix is not "never let a driver's meal through without a receipt." It is a calibrated one: the new per-role check has to clear its own held-out set of real Marrick receipts, checked outside the model call, at a precision Halsted's compliance team signs off on, most of the time, by design, before it ever reaches a live report. That trade is real too. Saying no cost Marrick roughly three more weeks of manual review, real hours their clerk did not have to spend before the pilot. It bought Cinch's audit accuracy for the other thirty nine customers already leaning on that same shared prompt.

Knowledge spark: why not just tell the model to ignore Marrick's request in the prompt, instead of building a real setting? Because a condition written into a shared prompt is invisible to everyone except the two people who wrote it. A future prompt change made for an unrelated reason can silently widen it, narrow it, or break it for customers who never agreed to any of it. A structured setting, checked outside the model call, cannot be touched by accident the same way.

And if you want to be sure it really works, try it somewhere else

Same five checks, a completely different product, a different industry, so the method proves itself instead of repeating a story you happened to prepare.

Pallister Civic Systems sells Ordinance, an AI tool that checks building permit applications against a city's own zoning and code rules, to city planning departments across the state.

O, outcome. What every option competes to protect: a permit check that applies a city's real rules the same honest way to every applicant, not a version that quietly bends because one city's planning director asked nicely.
R, reversibility. Writing "auto-approve any permit inside the Maple Street incentive district, skip the setback review" straight into Ordinance's shared compliance prompt runs on every city's permits the moment it ships, not just Cedar Falls'. Telling Cedar Falls no for now, and routing those permits to a fast-track human queue instead, costs a planning clerk a few extra minutes per file, and it is easy to undo the day the evidence changes.
D, dependency. Averill Rasmussen, who runs product for Ordinance, first needed to know whether Cedar Falls' incentive-district carve-out was a real pattern or a one-off. Two other pilot cities running their own downtown revitalization zones turned out to want almost the same thing, which is what actually justified building a real setting.
E, evidence. Before building anything, Averill tagged every permit that would have used the carve-out for six weeks, and reached out to Ordinance's other pilot cities directly to ask.
R, rank. Fast-track human queue for Cedar Falls now, count the real volume, check the other pilot cities, then build a real zoning-district setting, checked outside the model, before switching it on anywhere.

Same shape, different stakes At Marrick, the unlogged risk was a truck stop meal slipping past a receipt check. At Cedar Falls, it is a permit skipping a real zoning review. The rank does not change: whatever gets buried in a shared model path outranks the request that only costs someone a slower Tuesday.

Swap the trigger and it still runs.
Speed: an interviewer caps the answer at ninety seconds. Skip straight to the rule: rank by what's hardest to undo, and name the manual queue over the shared-prompt hack as the top move, not the other way round.
Cost: engineering says the real per-role setting cannot ship for six weeks, not three. Don't cave and ship the shared-prompt hack in the meantime. Keep the manual queue running a little longer instead, and say plainly that the trade is real hours for the pilot customer against safety for everyone else.
The model got better, for real: say Cinch's receipt-reading accuracy jumps ten points overnight. That still is not the same claim as "a rule built for one customer is safe to bury in a shared path." A better model can still be handed an exception nobody remembers writing.

Where people run it wrong.
They treat "the customer is paying, so say yes fast" as the whole analysis, instead of asking what saying yes fast actually touches.
They build the customer a full permanent feature off one request, then rebuild it anyway once a second customer's version of the same ask turns out different.
They bury the exception in the model's own instructions because it is the fastest place to put it, not because it is the right place to put it.

How to use it live. Say the rule before naming a single option: "I rank a pilot's one-off request by what's hardest to undo if I get it wrong, not by how loud the ask is." That buys you the room to give the real answer for this specific request, instead of reciting "always say yes to keep the customer happy" on reflex.

Flashcards (click a card to flip it)

1 · THE FRAMEWORK
What framework fits deciding whether to build a pilot customer's one-off request into the product, and why?
Tap to flip
ANSWER
ORDER. It is a prioritization question, what to build and refuse first, and in what order, not a story about a habit with two settings.
2 · THE PERSON
Who is this answer about?
Tap to flip
ANSWER
Kaia Denholm, senior product manager for Cinch at Halsted Finance, running the Marrick Freight pilot with finance lead Feyi Ostrow.
3 · THE REQUEST
What is Marrick actually asking for, and why doesn't it generalize?
Tap to flip
ANSWER
Skip the receipt-and-cap check for driver meal line items under seventy five dollars. It's specific to trucking, where drivers rarely keep receipts on the road, and would be the wrong default for an office-based customer.
4 · THE HARD-TO-UNDO CALL
What's the top-ranked move, and why does it outrank saying yes fast?
Tap to flip
ANSWER
Refuse to hard-code the exception into Cinch's shared classification prompt. A prompt-level patch silently reshapes every customer's audit run at once, and it's nearly impossible to trace back out later.
5 · THE OLD DECISION
What decision would you take back, and why did it make sense at the time?
Tap to flip
ANSWER
Building the receipt threshold as one hardcoded number inside the shared prompt, not a structured per-customer setting. It made sense because every one of Halsted's first six customers was an office of consultants filing the same kind of report.
6 · THE NUMBER
Fill in the blank: Marrick's drivers file about ___ meal line items a week, and Cinch's standard rule flags about ___ of them.
Tap to flip
ANSWER
1,900 meal line items a week; about 460 flagged for a missing receipt or being over the cap.
7 · THE EVIDENCE
What would tell Kaia this is a real pattern rather than a one-off?
Tap to flip
ANSWER
Tagging and counting how often the exception would actually fire for a few weeks, and checking whether other pilots in the same kind of business, like transportation, hit the identical wall.
8 · CROSS-PRODUCT TRANSFER
Section 4 answers this same question again for a different product. Which product, and what's its version of the top-ranked item?
Tap to flip
ANSWER
Ordinance, the permit-review tool from Pallister Civic Systems. Its top item is a fast-track human queue for Cedar Falls, refusing to hard-code the incentive-district carve-out into the shared compliance prompt.

Check yourself Score: 0 / 0

Multiple choice
1. Why does refusing to hard-code Marrick's exception into Cinch's shared prompt outrank giving them a fast yes?
  • A. Because Marrick's dispatchers do not deserve special treatment as a pilot customer.
  • B. Because a prompt-level patch quietly changes every customer's audit run at once, and is nearly impossible to trace or undo later.
  • C. Because Cinch's model cannot technically support any customer-specific rules at all.
  • D. Because Halsted's contract with Marrick does not allow custom behavior of any kind.
Show hint
Think about which customers a line inside the shared prompt actually reaches.
Show answer
B. A shared prompt runs on every customer's report. A rule written for one customer, hidden inside that same text, silently applies everywhere the prompt runs, with no record of why.
True or false
2. True or false: the right first move is to build a full, configurable role-based policy tier for Marrick right away, since they are a paying pilot customer.
  • True
  • False
Show hint
Check the rejected alternative in stage 7 of the walkthrough.
Show answer
False. One customer's request is not proof of a pattern. The right first move is a manual queue plus cheap evidence, not a permanent feature built for a sample size of one.
Fill in the blank
3. Marrick's drivers submit about ___ meal line items a week, and Cinch's standard receipt-and-cap check flags about ___ of them for missing a receipt or being over the line.
Show hint
Check the chart in "Let's learn."
Show answer
1,900; 460. Nearly a quarter of Marrick's driver meal reports get flagged, all landing in a manual queue that did not exist before the pilot.
Short answer
4. What old decision does this answer take back, and why did it make sense when it was first made?
Show hint
Look for the meeting memory from two years earlier, not a dial anyone could just turn back up.
Show answer
Model answer: Building the twenty five dollar receipt threshold as one hardcoded number inside the shared prompt, instead of a structured setting a customer's contract could actually hold. It made sense because every one of Halsted's first six customers was an office of consultants or agencies filing the same kind of report, so one number fit them all.
Short answer, apply it yourself
5. Think of a tool you use that different organizations get to configure differently, a form builder, a scheduling app, whatever it is. What is a one-off request one organization made that, if hardcoded in instead of built as a real setting, would quietly change the tool for everyone else too?
Show hint
Look for a rule that lives inside shared logic rather than a per-account setting.
Show answer
Model answer: A shared help desk tool where one client asked support agents to always auto-close tickets tagged "billing" after 24 hours with no reply. If a developer wrote that rule straight into the shared ticket-closing logic instead of a per-client setting, every other client's unanswered billing tickets would start auto-closing too, with nobody able to say why.
Short answer, the number question
6. If Marrick's flagged-meal volume had been about 20 a week instead of 460, would refusing to hard-code the exception still be the right call? Show the reasoning.
Show hint
Think about what the volume changes and what it does not.
Show answer
Yes, the call would not change. The volume changes how painful it is for Marrick to say no to, not whether a line in the shared prompt is hard to undo. Twenty flagged meals a week would make the manual queue an easy ask instead of a real burden, but the shared-prompt hack would still quietly touch every other customer the exact same way.
Before you close the answer
Why this works
Tests whether you would trade platform-wide precision for one customer's goodwill under pilot-renewal pressure, and whether you can rank a request by how hard it is to undo instead of by how urgent it feels.
Follow-up traps
"Isn't refusing this basically ignoring your paying customer during a pilot?" Response: no, because they get a real lever immediately, the manual bulk-review queue. The refusal is about where the exception lives, not whether Marrick gets relief today.

"What if Marrick threatens to walk without a fix by Friday?" Response: give them the queue, and a real deadline for the evidence check, three or four weeks, rather than a same-day hack. A patch shipped under deadline pressure is exactly how a rule built for one account quietly breaks for everyone else.
If pressed
The real per-role setting Kaia eventually shipped is a small rules table, keyed by customer, job role, and expense category, checked as a deterministic pre-filter before the model call ever runs, not text inside the prompt. Each new rule variant gets its own held-out set of real receipts to clear before it goes live, so a future prompt edit or model swap cannot silently widen or regress it without a person noticing.
From U2xAI Academy

From answering questions to owning outcomes.

A live workshop where you ship a working AI agent, defend a launch decision, and walk away with a portfolio recruiters can't wave off, not just more questions to study.

  • A live AI agent you actually shipped
  • A launch decision you can defend under pressure
  • An interview-ready portfolio, not more flashcards
Know more