Building the harness · August 18, 2026 · 7 min
The work needs something only the client has
Bookkeeping needs the bank statement. A hire needs the role brief. Most agent demos quietly assume the input is already there, and every real engagement stalls on the moment it is not. Refusing well is a product feature, and it has a shape.
By Islam Hachimi, Founder
No bookkeeper on earth can close your month without your bank statement. That is not a limitation of bookkeepers. It is what the job is.
Almost every AI demo skips past this. The information is already there, neatly, at the start. Real work is not like that — and the moment it is not is where most of these systems quietly fall apart.
Three options, one right answer
When work cannot continue without something only the client has:
- Fail. Honest, and useless. The business owner gets a red error for something that is not their fault and is not broken.
- Guess. What AI does by default, and the worst possible outcome in bookkeeping. A wrong entry gets discovered by an accountant in March and costs more to untangle than the month's work was worth.
- Ask — in the client's words — and wait.
Asking properly is harder than it sounds
Here is a real thing our system once said when it could not continue:
"The case does not contain a role brief or a connected candidate-source ID."
Technically that is a question. It is also completely unanswerable, because those are our words. The client does not have a "case." They have never heard of a "candidate-source ID."
What they have is a job description sitting in a folder somewhere.
"A connected candidate-source ID" is unanswerable. "The job description for this role" gets answered in a minute.
So asking in the customer's own language is not politeness. It is the difference between work that unblocks and work that sits there.
Two rules that stop it becoming nagging
Ask about the rule, not the thing
What makes people hate bookkeeping software is being asked the same question every month.
"How should I file this $48 to Acme Supplies?" gets answered, then asked again in thirty days. "Acme Supplies comes up every month — is that always office supplies?" settles it permanently.
And always include your best guess. "I've put this under software — is that right?" takes one word to answer. "How should I handle this?" makes the customer do the thinking they hired you to avoid.
Never pile onto unanswered questions
If work runs on a schedule, something that cannot continue will ask again every single time it runs.
The obvious fix — don't ask the same question twice — fails immediately, because AI does not word things the same way twice. "Please provide the most recent bank statement for the close period" and "Your March bank statement" are the same question, and no simple comparison sees that.
Being clever about near-matches is worse. Set the bar anywhere and eventually you silently block a genuinely different question — and a question that never got asked is invisible. The work just never unblocks and nobody knows why.
What actually works: any one round of work can ask for everything it needs — but it cannot start a second pile on top of questions the client has not answered yet.
That distinction matters. Asking for four receipts at once is fine — that is one list somebody clears in ten minutes. A blanket "maximum three questions" rule would silently drop the fourth and file three quarters of the month, looking completely normal. What is not fine is adding three more questions on top of three the client is already ignoring.
Which files count
Only ones sent in reply to a specific request. Not everything the client has ever sent us.
The generous version sweeps in our own earlier work — last month's report, a rejected draft — so the system reads its own homework back as if the client had provided it, and repeats its own mistakes without ever seeing them.
It also takes away the client's control. A file dropped into a chat to ask a quick question should not silently become an input to work they are being billed for.
"We asked for this, and they sent it for this job" is the only thing that means anything. So it is the only thing that counts.