The Solution Playbook

Tool-belt series · Problem shaping · For people who build

Someone describes a problem.
You need to hear a shape.

The hard part of building things at work was never the code — you can vibe your way through code. The hard part is that people describe problems in the language of their frustration, not in the language of what to build. This is a catalogue of the shapes underneath: what people actually say, what it really is, what to build, and how to do a scrappy version this afternoon instead of a proper version next quarter.

The premise

There are maybe sixteen problems in a business. You'll meet them over and over in different costumes — different department, different system, different vocabulary, same underlying shape. Once you can name the shape, you already know roughly what to build, and the building is the part you're good at.

Use it two ways: read it once to load the patterns into your head, then come back to it when someone corners you at a desk and you want to sound like you've seen this before. You have. It just had a different name last time.

01

The first conversation — six questions before you build anything

The most expensive mistake is building the thing someone asked for instead of the thing they need. These six questions take four minutes and save weeks. Ask them in this order — the order matters, because Q1 changes the answer to everything else.

  1. “Walk me through the last time this happened.”

    Not "what do you need" — that gets you their proposed solution. A specific recent story gets you the actual problem, the workaround they've built, and who else touches it. Always start here.

  2. “What do you do with it once you have it?”

    The answer is often "I copy three numbers into a slide." Then you're not building a report — you're building three numbers. Enormous amounts of work get avoided by this question.

  3. “How often, and what happens if it's a day late?”

    This is the latency question, and people always overstate it. "Real time" usually means "before my 9am meeting." Daily is dramatically cheaper to build than streaming, and honesty here is worth days of your life.

  4. “Who else does this?”

    If three teams do the same manual thing, you're not solving one person's problem, you're solving a company problem — which changes the priority, the design, and how much support you'll get for doing it properly.

  5. “What does it look like when it goes wrong today?”

    Surfaces the real risk and the real value. "We restated a board number" is a different project from "I was mildly annoyed." It also tells you what your solution has to protect against.

  6. “If I could only fix one part of this, which part?”

    Your scoping question. Their answer is your first release. Everything else is the backlog — and now it's their prioritisation, not your guess.

The move that buys you credibilityWrite their answers back to them in five bullets and ask "have I got this right?" Almost nobody does this, it takes two minutes, and it makes people feel heard before you've built anything. It also catches the misunderstanding while it's still free to fix.
02

The pattern catalogue

Sixteen shapes, grouped by what they're fundamentally about. Each one gives you the sentence people actually say, what's really going on, what to build, and the scrappy version you could have working before you go home.

Getting data to people

the plumbing problems

I export this every month and email it round.

What it really is

A manual distribution problem, and usually also an undocumented transformation problem — because between the export and the email, they do things. Filtering, renaming, a lookup they keep in another tab. That hidden work is the actual scope.

This afternoon

Recreate their final output as one table in a lakehouse or a view, and get it to them once. If it matches, you've validated the logic before automating anything.

Done properly

Model it into gold, build a small report or a subscribed export, schedule it, and alert on failure. Retire the manual export deliberately — with them watching.

TrapAutomating the email and not the spreadsheet. If they still do the hidden steps by hand, you've saved them thirty seconds and kept all the risk.

It's too much data for Excel now.

What it really is

The classic on-ramp — and the easiest win you'll ever get, because the pain is already acute and they've already given up. They don't need a platform strategy, they need the file to open.

This afternoon

Land the data as a Delta table and point them at the SQL endpoint from Excel. Same tool they know, no row limit. Takes an hour and looks like magic.

Done properly

Proper gold-layer model plus a semantic model so the aggregations are done for them, and they stop pulling millions of rows to sum one column.

TrapAssuming they want a dashboard. Many people genuinely want a grid they can pivot. Give them what they'll use, not what demos well.

Can you just add a column?

What it really is

Sometimes it's just a column. Often it's a question they can't answer and a column is their guess at the fix. Ask what they'd do with it — the answer frequently reveals a measure, a different grain, or an entirely different report.

This afternoon

If it's genuinely a column and it's already in the source, add it. Small requests answered fast are how you earn the right to say "let's talk" on big ones.

Done properly

If it's a new grain or a new source, treat it as its own small project with its own conversation. Don't smuggle it in as a tweak.

TrapSaying yes to twenty "just a columns" until the model is a swamp nobody can reason about. Each one was reasonable; the sum is not.

Making numbers believable

the trust problems — usually the highest-value work

These two systems don't agree and nobody knows which is right.

What it really is

A reconciliation problem, and it's the most valuable pattern in this entire page because it's the one people actively fear. The deliverable is not "which one is right" — it's a repeatable, explainable difference. Once the gap is itemised and each line has a reason, the argument stops.

This afternoon

Pull both sides into one place, join on the key, and produce a difference table with the ten biggest gaps. Show it to them. The reasons will start pouring out of them unprompted.

Done properly

A scheduled reconciliation with categorised difference reasons (timing, mapping, missing, genuine), a tolerance threshold, and an alert when the unexplained portion exceeds it.

TrapTrying to make the difference zero. It won't be, and chasing it makes you look like you failed. Aim for every difference has a name — that's the win, and it's achievable.

Nobody trusts the numbers.

What it really is

Usually not accuracy — usually ambiguity. Four reports say "revenue" and mean four things, so people quietly stop believing all of them. The fix is definition and provenance, not more validation.

This afternoon

Take the three most argued-about measures and write one sentence each: what's included, what's excluded, as-of when. Circulate it. Watch the arguments change shape immediately.

Done properly

One certified semantic model as the definition of record, endorsement so people can see which one to trust, lineage so they can see where it came from, and retirement of the duplicates.

TrapBuilding a fifth version of the truth to fix the problem of four versions of the truth. If you're not deleting something, you're probably making it worse.

This number looks wrong but I can't prove it.

What it really is

A lineage and drill-through problem. They can see the total but not the rows behind it, so they can't self-serve the answer and have to ask you — which is why you keep getting asked.

This afternoon

Give them one drill-through page or a saved query that returns the underlying rows for any given total. Their next three questions answer themselves.

Done properly

Keep a bronze layer so you can always show the raw as-arrived record, plus the load timestamp and source. The ability to say "here's exactly what we received" ends most disputes.

TrapAnswering the specific question and not giving them the means to answer the next one. You're training people to depend on you, which feels good and scales terribly.

The data's a mess.

What it really is

A data quality problem that nobody has ever quantified. "A mess" is a feeling. Your job is to turn it into a count — because a count can be tracked, targeted and fixed, and a feeling can't.

This afternoon

Write one query that counts the issues: nulls in key fields, duplicate keys, orphan references, values outside a sane range. Report it as a table. That table is now the project.

Done properly

Quality checks as a scheduled step between bronze and silver, with a trend over time and an alert when a threshold breaks. Bad data stops silently, loudly.

TrapCleaning it in your pipeline forever instead of pushing the fix upstream. Some cleaning belongs to you; some is a source-system problem you're quietly subsidising.

Noticing things in time

the monitoring problems

We only found out a week later.

What it really is

A detection problem, not a reporting problem. A dashboard doesn't solve it — a dashboard requires someone to look. The fix pushes to them: a rule and a message.

This afternoon

One threshold, one alert into Teams or email. Genuinely an hour's work, and it changes how people experience your team.

Done properly

Rules on a stream or a refreshed table, with severity levels, an owner per alert, and enough context in the message to act without opening anything.

TrapAlert fatigue. An alert that fires daily gets muted in a fortnight and is then worse than nothing, because everyone believes it's watching. Tune the threshold until it's rare.

It broke and nobody noticed.

What it really is

Pipeline observability — and specifically the nastiest version, where it didn't fail loudly, it succeeded with nothing in it. Silent partial failure is the one that reaches a board pack.

This afternoon

Add a failure notification to your most important pipeline, plus a row-count check that fails deliberately if the load is suspiciously small.

Done properly

A run log table (what ran, when, how many rows, how long), a small monitoring page over it, and freshness expectations per table so "stale" is detectable.

TrapOnly alerting on failure. The dangerous outcome is a successful run with zero rows — everything green, nothing there.

We need this in real time.

What it really is

Usually a latency mismatch, not a streaming requirement. Ask what decision changes if they see it now versus in an hour. If nothing changes, they don't want real time — they want fresh, which is far cheaper.

This afternoon

Increase the refresh frequency and see if the complaint stops. Often it does, and you just saved a quarter of engineering.

Done properly

If a decision genuinely changes in seconds — operational monitoring, fraud, capacity — then it's a real streaming case and worth building as one.

TrapBuilding a streaming architecture to satisfy a preference. It's ten times the operational burden and someone has to keep it alive at 2am. Make sure the decision justifies it.

Helping people decide

the analysis problems

Can we predict what next quarter looks like?

What it really is

Nine times in ten: they want a trend, not a model. "Predict" is how non-technical people say "help me see where this is going." A well-built trend with seasonality beats a black box they won't trust.

This afternoon

Plot the history properly — same period last year, rolling average, and the run rate. Show it to them. Frequently that is the answer.

Done properly

If there's a real forecast case, start with something explainable and measure it against actuals openly. A forecast nobody can interrogate gets ignored the first time it's wrong.

TrapReaching for ML because it's interesting. If you can't explain why the number moved, finance will not use it — and they're right not to.

I need to be able to slice this myself.

What it really is

A self-service modelling problem. They're not asking for a report, they're asking to stop asking you. That's a compliment and an opportunity — it's also the thing that scales your influence past your own hours.

This afternoon

Give them a clean table with sensible names and let them pivot it in Excel. Then watch which slices they actually use.

Done properly

A star-schema semantic model with named measures and friendly field names. What you observed them doing manually becomes the dimensions.

TrapHanding over a model with cryptic column names and forty raw measures. Self-service fails on vocabulary far more often than on capability.

We keep getting asked the same question.

What it really is

A question-answering problem, and the newest pattern here. If the same handful of questions arrive weekly, that's a data agent or a well-named model — but only if the underlying data is modelled well. Agents expose bad modelling ruthlessly.

This afternoon

Write the top ten questions down. Half will be answerable from one existing table — make that table findable and say so.

Done properly

A data agent over a clean gold layer, tested against those ten questions, with the failures fed back as modelling and naming fixes.

TrapPointing an agent at a messy lakehouse and blaming the AI when it's confidently wrong. The agent is a mirror for your model quality.

Letting people put data in

the write-back problems

The mapping lives in Dave's spreadsheet.

What it really is

Unmastered reference data — and a bus-factor risk wearing a spreadsheet costume. Cost-centre mappings, account groupings, entity hierarchies. It's small data with enormous blast radius.

This afternoon

Get a copy into a governed table and point a pipeline at it. Even reading from Dave's file on a schedule beats a copy pasted quarterly from memory.

Done properly

A small write-back app or governed table with an owner, change history, and validation — so a bad mapping is caught at entry, not at close.

TrapTaking it off Dave without giving him a way to maintain it. He'll keep the spreadsheet, you'll diverge within a month, and now there are two.

We do this by hand every close.

What it really is

A process automation problem. Careful here: manual steps often encode judgement that nobody wrote down. Automating the mechanics is great; automating away the judgement quietly is how you get an error nobody catches.

This afternoon

Watch them do it once and write down every step, marking each as mechanical or judgement. That document is valuable on its own, whatever you build.

Done properly

Automate the mechanical steps; keep the judgement steps as an explicit human approval in the flow. Faster and still signed off.

TrapAutomating an inefficient process instead of fixing it. Sometimes the right answer is that three of the eight steps shouldn't exist at all.

Only one person knows how to do this.

What it really is

A bus-factor problem, and it's rarely presented as a request — you'll usually spot it yourself. It's also the easiest way to be genuinely useful without anyone having asked, which makes it disproportionately good for your reputation.

This afternoon

Sit with them and document it while they do it. One page. The act of writing it down usually surfaces two steps even they had forgotten.

Done properly

Move the logic into version-controlled, scheduled, monitored code — so the knowledge lives in a repo instead of a person, and can be reviewed.

TrapMaking yourself the new single point of failure. If it's now in a notebook only you understand, you've moved the risk, not removed it.
03

Sizing it before you commit

The question you'll be asked in the corridor is "how long would that take?" Being roughly right, fast, is a genuine professional skill — and these are the factors that actually drive the answer.

FactorCheap when…Expensive when…
Source accessAlready in the lake, or shortcut-ableNew system, new credentials, security review
GrainMatches something you already modelNew grain — new fact table, new conversations
LatencyDaily or weekly is genuinely fineSub-minute, and it must be right
Write-backRead-onlyHumans typing values — validation, audit, permissions
ConsumersOne team who'll tell you when it's wrongExecutives, or anything external-facing
Correctness barDirectionally right is usefulIt's going in a statutory return
The honest estimate formulaFind the row that's most expensive and let it set the size — the hardest constraint dominates, not the average. Then say a range and name the assumption: "two or three days if the data's already in the lake; a couple of weeks if I need a new connection." People remember that you were clear far longer than they remember the number.

Always build the scrappy version first

Not because it's all they deserve — because it's the fastest way to find out you misunderstood. A rough version in front of someone on day one generates more useful correction than three weeks of careful specification. For a vibe coder this is your native advantage: you can get to a wrong thing quickly, and wrong things in front of users are how right things get built.

Just be explicit that it's scrappy, and be equally explicit about what "proper" would add. The failure mode isn't building it fast — it's letting a prototype quietly become production because nobody said out loud that it wasn't.

04

Saying no without being the person who says no

Becoming the person who builds things means becoming the person everyone asks. Reputation is built as much on what you decline well as on what you deliver.

The thing that actually builds the reputationGo back a month later and ask whether it's still being used. Almost nobody does this. It tells you which of your instincts were right, it surfaces the next problem before anyone else hears about it, and it makes you the person who cares whether it worked — not just the person who built it.
← back to the tool belt