Bassam Ismail
When Customer Questions Need a Routing Layer Before They Become Engineering Work
Thought Leadership

When Customer Questions Need a Routing Layer Before They Become Engineering Work

10 min read

The questionnaire was already in the customer's hands when we realized some of the questions would make engineering look unprepared. Half were missing-API questions, half were product decisions in disguise, and sending them as one list would have exported our confusion straight to the customer. The fix was not another meeting or a better spreadsheet. We needed a classification and routing step between field discovery and engineering work, so every customer question was categorized, contextualized, and tied to a decision before anyone sent it across the wall.

TL;DR

Ambiguous customer discovery becomes noisy engineering work without a classification step first. Categorize each question as engineering, product, access, architecture, or internal-only, attach the context already known, name the decision it unlocks, and hold back anything that should not be shared externally. This protects customer trust while giving engineering questions they can actually answer.

Customer questions are not raw material for engineering until someone has processed them. In field delivery work, that processing is part of the job. Skipping it is how a half-known system, a nervous customer, and an impatient implementation team turn one missing API answer into three weeks of circular motion.

Why this classification work belongs in field delivery

The customer had reasonable anxiety. Some systems were already being used without enough visibility, which meant work could be duplicated or rejected later because it violated a constraint nobody surfaced early. The delivery team had reasonable pressure: they needed access, API details, and architectural clarity to move implementation forward.

Those two pressures look compatible until they meet in a shared document.

A raw questionnaire flattens everything. A question about authentication sits next to a question about roadmap ownership. A request for an endpoint sits next to a request for product intent. A vendor-specific implementation detail sits next to a customer architectural decision. To the document, they are all rows. To the relationship, they are very different objects.

The problem was not that the engineering team was unwilling to help. We were about to ask them questions that mixed five categories of work:

CategoryWhat it really asksWho should answer first
EngineeringHow does this system behave?Customer engineering or implementation engineers
ProductShould the product work this way?Product owner or internal lead
AccessCan we inspect or call this system?Customer sponsor or platform owner
ArchitectureWhat boundary should the new build respect?Engineering leadership and field delivery
Internal-onlyWhat do we need to decide before asking?Delivery team

That table became the quiet center of the work. Not fancy. Just the difference between asking for help and exporting confusion.

The routing template that changed the conversation

The template we used was deliberately small. A large process would have failed here because the team needed to clean up an already-shared document quickly. The useful unit was one question at a time.

For each question, we added four pieces of information:

  1. The category: engineering, product, access, architecture, or internal-only.
  2. The known context: what we already knew from calls, docs, vendor systems, or app review.
  3. The decision it unlocked: what we could do once the answer arrived.
  4. The sharing boundary: customer engineering, customer product, internal team, or hold.

That last field mattered most. A question can be technically valid and still be wrong to share with engineering. If the team is still learning a vendor-built app, asking the customer engineering team to explain every app-specific detail signals that the delivery team has not done its homework. That signal is sometimes accurate. Broadcasting it before checking the docs and the running app is still bad form.

QUESTION ROUTINGraw askclassifyadd contextname decisionroute[ A question becomes work only after it has an owner and a boundary. ]

Classification does not dissolve the uncertainty; it makes the uncertainty actionable. A question like "Where is the order status API?" breaks into several sharper possibilities:

Routed questionCategoryDecision unlocked
Which endpoint returns order status for /orders/{id}?EngineeringImplement status sync
Who owns the customer-facing status language?ProductAvoid copying backend states into UI
Can we get read-only staging access for order flows?AccessVerify behavior without guessing
Should the new service depend on the store backend or shared CMS?ArchitectureChoose integration boundary

Those are not the same question. Treating them as one is how teams end up with polite answers that do not move the build.

Question lifecycle and state

Beyond the four fields above, a question moves through identifiable states before it closes. Tracking that explicitly keeps the list from accumulating stale rows.

StateMeaningNext step
OpenCaptured but not yet classifiedClassify and assign owner
RoutedCategory and owner assignedOwner investigates or escalates
BlockedWaiting on access, docs, or a product decisionNote the blocker; set a review date
ReadyContext attached, decision named, sharing boundary setMove to appropriate external artifact
ClosedAnswer received and recordedArchive; reference in ADR if architecture question
RetiredNo longer relevant (scope changed, assumption validated)Remove from active list; note why

The "Retired" state matters more than it looks. Questions that linger past their usefulness collect context that was true at one moment and misleads anyone who reads the list later. A two-week-old access request that got resolved informally should be retired with a note, not left open as evidence of a problem that no longer exists.

The customer trust problem hiding inside API discovery

Incomplete API documentation is usually described as a technical blocker. It is partly that. In customer engineering work, incomplete docs also create a trust problem.

When both teams have the same incomplete information, repeatedly asking for more access without showing what you already tried sounds like fishing. The customer hears "we need another thing." The delivery team means "we are trying not to build the wrong thing." The gap between those sentences is where relationships get expensive.

Attaching context before asking closes that gap. Not an essay. Just enough to show that the question came from work already done:

Weak askRouted ask
Can you share the API docs?We reviewed the web API doc and found missing response fields for /stores/nearby. Is there a newer contract or should we infer from staging responses?
Can we get access?We need read-only staging access to verify checkout state transitions before drafting the ADR. Who can approve that scope?
How does the app work?For the vendor-built mobile flow, should the new service preserve the current booking boundary or replace it?

Context says: we are narrowing the unknown. Lack of context says: please absorb our unknown.

Why ADRs helped, but only after classification

The team had already agreed that new builds should use architecture decision records. That was the right instinct. ADRs are good at capturing decisions, constraints, and tradeoffs once the decision space is clear enough to write down. They are less useful as a dumping ground for unresolved discovery.

Raw customer questions sent straight into ADRs turn the document into a shrine to indecision. It will contain product uncertainty, access requests, vendor archaeology, and genuine architecture choices in the same voice. Later, someone will read it and assume every paragraph had equal authority. A temporary uncertainty becomes a permanent constraint with formatting.

Classification came first because it separated discovery from decision. Only architecture questions with enough context and a real implementation consequence deserved to become ADR inputs. Product questions needed product handling. Access questions needed ownership. Internal-only questions needed cleanup before they became anyone else's problem.

The sharp edge: classification can become gatekeeping

A classification step can become a place where hard questions go to become slow questions. If one person owns all categorization, the team gets a bottleneck with a nicer name. If every question needs ceremony, people stop asking in the open and start improvising in side channels, which is worse.

Keeping the artifact thin and the criteria visible is the countermeasure. No committee required. Just a shared habit:

RuleWhy it matters
If the question names implementation behavior, attach observed evidence.Engineering can confirm or correct instead of starting from zero.
If the question asks what should happen, send it to product first.Engineering should not accidentally decide roadmap or customer policy.
If the question asks for a resource, state what work it unlocks.Access requests are easier to approve when the scope is concrete.
If the question exposes internal uncertainty, clean it up first.The customer should see the work product, not the backstage scramble.

The goal is not to sanitize reality. It is to expose the right reality to the right audience at the right time. Field delivery has to be honest without being indiscriminate. That is a narrower skill than transparency and a harder one to practice under schedule pressure.

How I would run it next time

I would introduce the classification step before the first shared questionnaire exists. Retrofitting discipline onto an external document is possible, but the effort is real and the emotional cost is higher than doing it early.

I would also make ownership explicit in the first customer communication plan:

ArtifactOwnerShared with customer?Purpose
Raw discovery notesField teamNoCapture uncertainty fast
Routed question listField leadSometimesPrepare clean asks
Engineering questionnaireField and technical leadYesGet specific answers
ADRTechnical leadYes, when readyRecord implementation decisions
Product question listProduct ownerSelectivelyResolve intended behavior

That split keeps the team from pretending one document can serve every audience. It also protects engineering from becoming the default recipient of every unanswered thing. Engineers are good at answering technical questions. They are not a compost bin for organizational ambiguity.

In customer-facing technical work, the handoff from discovery to engineering is itself a system boundary. Design it deliberately, or it will form on its own: out of repeated requests, missing context, and a customer who cannot tell whether the delivery team knows what it is doing.

FAQ

Why is a customer engineering questionnaire unreliable without routing?

Because a raw questionnaire mixes engineering, product, access, architecture, and internal uncertainty. The receiving team cannot tell which questions require facts, decisions, permissions, or cleanup.

Where should I capture product questions during technical discovery?

Capture them in the same intake, but route them separately before sharing with engineering. Product questions ask what should be true, while engineering questions ask what is true in the system today.

How do I stop repeated API access requests from creating friction?

Attach context to every request: what was reviewed, what is missing, and what decision the access unlocks. Repetition feels different when the customer can see the investigation narrowing.

When should discovery questions become ADR inputs?

Only after they point to an architecture decision with enough context to evaluate tradeoffs. Raw uncertainty belongs in discovery notes or a routed question list, not directly in an ADR.

What is the field delivery role in question routing?

Field delivery translates messy customer reality into scoped work without exposing every internal uncertainty. That translation protects trust and gives engineering a cleaner problem to solve.

More to read