Their one live sales signal had been written twice, and 78% of it had already expired.
Taxnova sells R&D tax claims to tech companies, and a company's financial year end decides when a claim is even possible. They wanted Attio to be their source of truth for go-to-market signals, starting with year-end changes on a weekly Clay pull, and they asked two questions: what the best practice is for building these automations, and whether to build them in-house or hand them over. The audit found that the automation they had was not the one they thought they had.
Free 48h audit
Engagement
287 of 369
Year-end dates already expired
0 of 78
Deals with a close date
143 of 176
Overdue open tasks
0% (real: 22.9%)
Win rate the report showed
The problem.
The year-end field was meant to be a weekly signal. Its write history showed it had been written on exactly two days in its life, 6 and 15 August, by one connected app. Of 369 values, 287 were already in the past, and 275 of those were in the past on the day they were written. The field was described as the next financial year end. It held the last one.
The same fact lived twice. A month select covered 130 companies and a date field covered 369, overlapping on only 97. Nothing reconciled them, and the workflow built to announce a year-end change had a filter that stops if there is no previous value. No company had ever had two, so it could not fire by construction.
The pipeline had no dates. Expected close date was filled on 0 of 78 deals, there was no next-step field, and all 8 won deals had been imported straight into Won. So the funnel report showed a 0% conversion into Won while the real win rate on closed deals was 22.9%. A second sales motion, 54 accounts in financial services, lived only in task titles, with a deal on exactly one of them.
Objectives.
- Turn the year-end signal into a field that recomputes itself and never goes stale.
- Give signals somewhere to live, so the next five do not each need a new build.
- Put dates and next steps on the pipeline, so there is something to forecast and something for an agent to rank.
- Get the second sales motion into the pipeline and the reports.
- Answer the build-or-hand-over question honestly.
What else the audit found.
2,007 runs, 78 deals
The busiest workflow, meant to create a deal when a lead converts, had fired 2,007 times. The whole workspace held 78 deals. The cheapest diagnostic available was to open its Runs tab and read the last twenty.
A correct workflow that never ran
The workflow that adds won customers to the Customers list triggers when a deal's stage is updated. It had never run against 8 won deals, because a deal created in Won never updates into it. Correct, and starved.
338 warm leads behind one field
A live workflow meant to create a follow-up task when a LinkedIn invitation was accepted had an Invalid value on one step. 338 accepted invitations had produced zero tasks.
Dollars in the CRM, pounds in the proposals
All 67 valued deals were in USD, while the proposals quoted pounds. Every revenue number in the dashboard inherited the exchange-rate gap.
Calls recorded, none on a deal
More than 490 call recordings since February, far better than most workspaces. None attached to the eight largest open deals. Of 2,085 notes, 14 sat on a deal, and 1,753 were app-written LinkedIn receipts.
A funnel that works, for the fundraise
The best report in the workspace tracked their seed round through nine stages, and every conversion was real because entries moved one stage at a time. It was the model the sales pipeline needed.
The pattern we handed over for every signal.
Detector, durable fact, derived fact, trigger, destination. Only the first costs enrichment credits.
Store the month, compute the date
Keep the year-end month as the source of truth and replace the stored date with a formula for the next occurrence. Add a pre-notification deadline as a second formula, six months after the previous year end. Never stale, never re-run.
Write only on change
The Clay table compares the month it finds against the month in Attio and writes back only when they differ, stamping a year-end-changed date. That stamp is the trigger, and it is also the proof the weekly job ran.
One schema, many detectors
Active signals, signal last fired and a signal note on the company, with one saved view sorted by the latest signal. New finance leaders and engineering hiring become one detector each, not one project each.
Six practices, taken from their own workflows.
Never let an agent do arithmetic: the year-end workflow used an AI step to compare two dates, which a filter does exactly and for free. A change trigger needs a field that changes. Trigger on the event that actually happens, created or updated. Count runs against outcomes. Treat zero runs and warning markers as results. And publish: the overdue-task digest had unpublished changes with 143 overdue tasks waiting for it.
Results.
- A signal design that stays correct without a run: the next year end and the pre-notification deadline computed from one stored month.
- A reusable five-step pattern, so signals two to six are a detector each rather than a new build.
- Fixes for dates and next steps on every open deal, the pipeline in the currency the business quotes, and the second motion given its own segment.
- Repairs for four stuck workflows and the four reports showing something false, including the 0% win rate.
- A straight answer to the build-or-hand-over question: every step written out so the team could do it themselves, and a fixed price if they did not.
Ready when you are.
Book a call and we will tell you honestly whether this is worth doing, or start with the free 48-hour audit and decide afterwards.