Work · Research and publishing

Every piece of research moves on a clock, and the next stage will not open until this one is finished.

An analyst firm founded in the nineteen sixties, with more than two thousand people across dozens of offices, publishing thousands of pieces of research a year. The process that governed each one lived in spreadsheets and email. Who was writing it, who still had to review it, whether the review had come back, and how many days were left before publication were all things you found out by asking somebody.

Client
A global technology research firm
Our part in it
Jon Dallas, lead developer on the task engine and the checking layer, inside the consultancy the client engaged
When
2025 to 2026
The size of the problem

What the process had to hold.

2,000+People across the firm
1964The year it was founded
101Tables in the platform we built
72,527Rows in the working document

The headcount and the founding year are third-party reported, in the firm's home-city newspaper, January 2026. We deliberately do not quote the firm's own analyst or country counts, because it publishes two different numbers for each. The table and row counts are counted from the delivered platform.

What we built

A production platform rather than a workflow. A shared base holds the tables every kind of research needs, and each format gets its own document that reads from the base and adds only what is specific to it. That is what makes it a platform: the second format costs a fraction of the first.

The piece Jon built is the task engine. Templates produce the actual tasks for each piece of research, tasks nest inside each other, and only the ones at the bottom carry an owner, a deadline and a service level. A parent's date is whatever its latest child says it is. A rejected review does not just reopen: it creates a fix task and a fresh review task, so the second look is scheduled rather than remembered.

The clock runs in both directions. Dates are set backwards from the publication month, so the first task's deadline is publication minus every allowance in the chain added up. Then they are recalculated forwards from each actual completion, so finishing early moves everything after it. Days are business days, set on the template rather than typed in.

The gate is what makes it real. The button to the next stage stays disabled until the current person's tasks for the current stage are done. Progress is something you earn by finishing work, and there is no dropdown that says otherwise.

Three checks run inside the workflow, each one Claude with extended thinking. The first validates the market segments against the editorial rules and offers a rewrite a button can apply. The second reads every company named in the research and flags the ones that have been acquired, merged, ceased trading, or do not belong in that segment at all. The third checks the summary for compliance and for consistency against segments that were already approved. What the checks are allowed to say lives in a settings table, so the client changes the behaviour without anyone touching a formula.

A shared base holds what every format needs. Each format gets its own document reading from it. The task engine sits underneath, turning one piece of research into the actual work that produces it.
Step by step

How a deadline in the future decides what is due on somebody's desk this morning.

The clock

The interesting part of this system is not the task list. It is that nobody sets a due date, and every due date is right.

Before anything else can happen
CheckState
Lead analyst assignedPass
Peer reviewer, where requiredPass
Publication month is in the futurePass
Agrees with the edition it replacesNeeds a look
Stage 1

A publication month is chosen, and nothing else is entered

Somebody says this piece of research publishes in November. That is the only date a person types anywhere in the process.

A checklist runs immediately: is there a lead analyst, is there a peer reviewer where the format needs one, is the publication month actually in the future, and does this piece agree with the one it supersedes. Any of those failing stops the piece here rather than three weeks later.

1 of 7
The stage rail, the tasks under the current stage, and what the checking layer flagged.
A drawing of the interface, not a capture. The stage rail, the tasks under the current stage, and what the checking layer flagged.

What happened once it was running

The workflow the firm had written down as a process document became the thing the software actually enforces. A piece of research cannot skip a review, cannot lose a deadline, and cannot publish naming a company that stopped existing. The nine hundred and thirty three rows of historical research the firm already had were migrated in, so the new system opened with the archive already in it rather than empty.

133Steps in the process, mapped and built
286Calculated fields doing the arithmetic
222Historical documents migrated
34,904Company mentions read out of them
Counted from the delivered platform and its migration

The process and field counts are counted from the platform's own definition files. The migration figures are counted from the extracted data: 222 historical documents yielding 34,904 company mentions across 11,619 distinct names, reconciled down to the rows that were loaded. The task engine was verified end to end three separate times before handover.

Why this page is short

Every figure on this page traces to something we measured.

This page once carried claims that described the work inaccurately. They came down in an audit of our own copy, and each one went back up only when its numbers could be traced to something measured. A case study you cannot check is worth nothing to you, and one that turns out to be wrong costs us more than it ever earned.