The three-day question
You emailed the account team a quick question on Monday. It is Wednesday. The status update is still "we are pulling the numbers." You have already decided the answer probably will not change your decision anyway, and you have moved on. That is not a lazy agency, and it is usually not a capacity problem. It is a structural one, and it is quietly the most expensive thing on the retainer.
A three-day question is not three days of work. It is fifteen minutes of work spread across three days, distributed across four people, each of whom has to reconstruct the same context from scratch because there is no shared source they can all point at. The question feels simple to you because it is. The answer takes three days because the plumbing behind it does not exist.
What actually happens between the email and the answer
Here is the sequence I have watched more times than I can count on the agency side.
The account lead reads the email. They do not have the number. They ping the paid social lead, the search lead, the programmatic lead, the influencer lead, one at a time or in parallel depending on how the account is run. Each of those people has a different tool. Each of those tools shows something slightly different from the others. Each of them pulls their piece into an Excel workbook, their workbook, formatted the way they format things, and sends it back.
Someone, usually the account lead or an analyst, has to combine the workbooks by hand. Date ranges do not line up. Campaign names do not line up. One person included agency fees in spend, another did not. Reconciling the mismatches takes an hour. Writing up the answer takes twenty minutes. Reviewing it before it goes out takes another cycle.
By the time the response arrives in your inbox, four people spent thirty to sixty minutes each. The wall clock says three days because the work sat in a queue between every step.
Why the simple questions are the expensive ones
Large projects have process. A campaign launch, a quarterly deck, a media plan, all of these go through a workflow. There are templates, there are review steps, there are people whose job includes them.
Simple questions skip the process. They arrive as email, get treated as one-offs, and every one of them runs the fire drill from scratch. Nobody counts them because counting them would require someone to add up how many hours the team spent answering ad-hoc client questions this month, and nobody at the agency wants to know the answer.
On my last agency team we ran that math for one account. It was around eighty hours a month. The retainer had no line item for ad-hoc analysis. All of it lived inside "account management" and "reporting," both of which were technically for something else. The client did not know it was happening. The agency did not want to.
What no shared source looks like in practice
A CPG brand I worked on had a monthly review meeting where the client would ask, casually, midway through, so what was our total spend on the launch push in July. The question was not on the agenda. Two channel leads on the agency side would open two dashboards and quietly disagree. One number would include the influencer spend booked through the talent agency. The other would not. The account lead would pick whichever one sounded closer to what the client seemed to be remembering, and the meeting would move on.
Nobody was lying. Nobody had done a bad job. There was no shared definition of the launch push, no shared definition of spend, and no way to reconcile them in the moment. The answer that made it into the meeting notes was the answer whoever had the loudest number in the room happened to have.
The client was on the receiving end of that same pattern every time they asked a number question, and they did not know it. They assumed the answer they got was the answer.
That is where three days comes from. Not from anyone being slow. From every question having to be reconstructed, because there is no layer where the definitions live.
Why the usual fix does not work
The instinct when someone points out the three-day problem is that the account needs a dashboard. Sometimes the account lead has already built one. Sometimes the client has asked for one. Sometimes there are three of them, each showing slightly different numbers.
A dashboard shortens the loop for questions that fit inside it. That is real value. But dashboards do not shorten the loop for new questions, and dashboards built on top of the same drifted definitions that the channel owners are already using just move the reconciliation problem into a visualization. Now the client is looking at a wrong number faster than before.
The other common fix is more analysts. Adding people to the fire drill makes the drill run faster. It does not stop the drill from happening. The unit economics of ad-hoc analysis do not improve with headcount. They improve with the drill going away.
The drill goes away when there is one place to get the number and one definition of what the number is.
What actually shortens the loop
The fix is not glamorous and it does not ship in a week. But every step of it collapses a different piece of the three-day cycle, and the compound effect is that account leads answer client questions the same morning instead of three days later.
One place the numbers live. Not the dashboard. The mart the dashboard reads from. If the channel owners are still going to their own tools to answer questions, you have not consolidated. The account lead should be able to point at one source and say, that is where every number comes from.
One person owns each definition. Not the team, not whoever built the last dashboard. The person whose job includes deciding whether influencer fees count as spend, and updating the definition when that decision changes. If the answer to who defines spend is a role, not a name, you have your first gap.
Delete duplicate sources before you add new ones. Every extra copy of the same metric is a future disagreement. The old dashboard the channel owner still uses out of habit, the export that gets emailed monthly, the tab in the account lead's tracker. All of them are places the answer can diverge from the source. If they are not the source, they need to go.
The account lead has to be able to self-serve. If answering the question still requires channel owners to open Excel and pull numbers, the loop is not shortened. The account lead needs a view that already contains the answer for the top eighty percent of questions. Which questions those are is knowable, because they are the same questions every month.
Log what is getting asked. Not a survey. Actually log the ad-hoc requests for one month. What was asked, how long the answer took, whether the same question has come back. The list is shorter than the agency thinks it is, and most of it can be pre-answered in the shared view once it is written down.
The three-day question stops being a three-day question the day the numbers stop having three versions. Everything else, the dashboard, the review meeting, the reporting cadence, works the same. The only difference is that nobody has to reconstruct the answer from scratch every time.
If the account team is spending eighty hours a month reconstructing answers, the warehouse and dbt build engagement is what makes that reconstruction unnecessary. One source, one definition, same-morning answers. See the build engagement →
Related reading
Why your AI chatbot keeps giving wrong answers
The chatbot isn't broken. It's working exactly as designed on bad inputs. Where the real fix lives.
dbt vs natural language: do you still need to write SQL?
The transformation layer isn't going anywhere. The question is who gets to interact with it.
What is data hygiene, and why does it matter for AI
Accurate, consistent, documented. Most stacks are one of those three things. Where the gaps hit hardest with AI in the loop.
"We're using Claude for our data" is not a plan
Four different jobs get hidden inside that sentence. Where Claude belongs in the stack and where it does not.
The semantic layer nobody owns
The place where metrics get defined once. In most stacks it does not exist, and AI on top makes the gap harder to see.
Retrieval on dirty data is a distribution problem
Retrieval is a distribution mechanism. If your corpus disagrees with itself, a smarter reranker gives you the same wrong answer with better prose.
Should I use dbt or write my own SQL pipelines?
A candid, practitioner take on when dbt wins, when hand-rolled wins, and what happens when a homegrown stack outgrows the person who built it.
Case study
A regional bank cut correction time from 2.5 days to 30 minutes
What the rebuild looked like in practice, and where the four hours a week came from.