7 August 2026
Why not just point Claude at your GitHub?
We raced a frontier model against Taxnova's pipeline on the same open source data, and published everything that happenedWe raced a frontier model (Anthropic's Fable, at high reasoning effort) against Taxnova's pipeline on the same open source data, and published everything that happened – including what we learned from Claude's approach
In 2026 frontier models are evolving at crazy speed. What was only possible with a specialised software solution a year ago, is now available to everyone who has a subscription to one of the frontier model providers via a chat bot or a coding assistant – capable of building workflows, running custom scripts and adjusting to your specific data and use-case.
Even when it comes to R&D Tax, the area that has always required deep domain expertise, there's a large chunk of work related to data preparation that can be automated. And "why can't I do it myself?" is a fair question to ask for someone who is familiar with Claude Code or Codex, able to connect to their engineering tools with MCPs and roughly aware of what they need to achieve.
We thought it's time to meet face to face – and see how a general-purpose AI agent performs on Taxnova's tasks.
There are no existing benchmarks on R&D Tax claims (surprise!), so we have come up with our own: we prepared a synthetic 2025 UK R&D claim – built twice on the same open source data, and then audited both results against the underlying record and tax authority criteria.
New to R&D Tax?New to R&D Tax? What the task actually isCollapse the primer
R&D Tax incentives exist in most developed economies – R&D relief in the UK, the R&D tax credit in the US, CIR in France, SR&ED in Canada, the R&DTI in Australia. Rates, qualification tests and paperwork differ substantially, but the broad principle is shared: a company that spent money advancing science or technology beyond what was already readily available can recover part of that spend through its tax return. For a software business the dominant cost is engineering time, so the claim comes down to three questions – which projects qualify, whose time went into them, and why the work was technically hard.
What counts as qualifying work, and how it has to be described, differs materially from one country to the next, which is precisely why local tax expertise has to be built into the process. This benchmark was run and scored against UK rules.
This benchmark is not an end-to-end claim. Neither contender touched payroll and cost data, the tax computation, the relief rates or the filing itself. What was compared is the part that sits in front of all of that – data preparation: turning a year of raw engineering activity into the technical substance a claim is built on.
Concretely, that means reading the engineering record – repositories, pull requests, issues, commits – and producing three target outputs:
The project list. Every distinct piece of work in the year that meets the qualifying criteria, grouped into projects as a tax authority would recognise them.
Time allocation. For each project, which employees contributed and what share of their year went into it, expressed as an R&D percentage per person.
The evidence and narratives. For each project, the technological uncertainty faced, the approaches tried and discarded, and how it was resolved – each traceable back to a source in the record.
Everything measured below is measured on those three outputs. The final steps – costing, claim computation and a qualified professional signing the claim off – are out of scope for both contenders.
Setup
| Case | Open-source infrastructure software company with a UK engineering team of around 50 people |
|---|---|
| Inputs | Same corpus of public data from the company's public GitHub org for 2025: 40+ repositories, 30K+ of pull requests (PRs), 60K+ commits and 8K+ GitHub issues |
| Contenders | Claude: Claude Code driving Anthropic's Fable model, high reasoning effort, thinking mode onOur pipeline: Taxnova's R&D Tax processing pipeline |
| Experiment | Each built a full 2025 claim under UK rules from that data independently. We then compared them to each other on Project coverage, Contributions coverage, Evidence depth, Audit readiness. |
| Not tested | Multi-step long-running workflow based off Claude Code with sub-agents reading the record in stages, proper prompts and quality control. It takes months to build, not an afternoon. |
TL;DR
1. Claude did not produce garbage. That's what the tax advisors wouldn't want you to hear, and why the rest of this is worth reading.
What worked well:
The big picture was there. Eight of the nine projects it proposed map onto projects we independently identified as qualifying.
The calculation was roughly right. For 60% of people where it was able to size contributions, it landed within ±15% of our figure.
2. What it missed costs you a fifth of the claim.
The gap is not Claude being wrong about the work. It's that it never saw that certain engineers – and entire projects – existed.
Three qualifying projects were never proposed at all, and 15 of the people we sized never appear anywhere in its output. That resulted in a ~22% claim loss – reported with exactly the same confidence as the rest.
3. The narratives risk being audited.
This one is less obvious, but more expensive if you assess the risks.
Claude's narratives describe what changed, not what was technically uncertain and how that was resolved – leaving five of its nine projects with no evidence of a technological uncertainty at all.
Submitted as is, these are the kind of narratives that attract an audit, which can take up to 3 years of back-and-forth and the whole organisation being under scrutiny by tax authority for the future claims to come.
So, are the outputs usable?
Yes, if you turn a blind eye close these gaps. But closing them would mean spending time to re-design the methodology, and doing back-and-forth with tax advisors to get the narratives in a good shape. That is the part you were hoping to get done for you.
| Claude | Taxnova | |
|---|---|---|
| Identified projects | 9 UK-qualifying | 14 UK-qualifying (39 in total) |
| Qualifying UK R&D FTE | 9.9 FTE | 12.7 FTE |
| Qualifying UK projects missed | 3 (2.18 FTE) | 1 (0.93 FTE) |
| Unique UK employees with contributions sized | 26 (24 with non-zero R&D%) | 41 (32 with non-zero R&D%) |
| Evidence of a stated technological uncertainty | 4 of 9 – zero anchors on the other five | Evidence base covers all 14 |
| Data processed | Below 1M tokens | ~42M tokens |
Claude's methodology
Claude's method is worth walking through – because it's a sensible workflow anyone trying to solve this could land on, and because every defect below is caused by decisions in this workflow.
Read the full walkthroughCollapse the walkthrough
It starts with people. It matches a list of UK engineers to GitHub identities. 29 of 83 match – and that number quietly becomes the ceiling on everything after it.
Then it picks where to look: 14 repositories, chosen from what the model already knew about the company, "an unverified manual guess". It fetches 2K commit titles for the 29 matched people into a single working file – grouped under one heading per person.
That file becomes the entire evidence base. The work is sorted by author, so the only question it can ask is "what was this person doing?" – and asked 29 times that returns one clue per person.
Projects come from this, named by clustering those per-person summaries, so a project exists only where a single person's pile was tall enough to point at it.
Percentages come last, one per person, read off the R&D-versus-routine mix in their own commits.
Then the impressive part: Claude actually catches its own repo guess and sweeps every active repository – 50K commits, the full company record. And it spends that scope re-running the person match, lifting 29 to 42 matched people, of whom only 26 ever get a percentage. One new project arrives as a by-product. The other 12 new matches had small or routine piles, so they produced no projects at all.
Handed the whole year's engineering, it went looking for more people — and §1 is what it costs.
If you point a capable general-purpose AI agent at your repos, you will get an answer that is often close to right on the work it finds.
1. A project can be in the claim and still be two-thirds empty
This is the core problem, and it's structural – not a prompt you can rewrite.
Claude natively works person-first. It counts each author's commits, decides which project the loudest ones "belong" to, names a handful of top people, and sets their percentage from their own commit volume. A project, to Claude, is a label it hangs on a busy author.
This explains two defects in Claude's model:
It gives each person one project, or none. Real engineers' work scatters across projects, sometimes daily. Claude saw this for one engineer and couldn't express it: its own project write-up names that person under both projects, but the allocation sheet gives them one project with 35% — and the work for the second one evaporates.
It is blind to the low-volume contributors. If you opened a handful of PRs inside a project that spans thousands – you're not sizable. Ranking by volume drops you. The engineer who wrote the design doc, reviewed forty PRs and shipped six commits is doing qualifying work and is invisible to a model.
Stats on the five largest projects Claude did find:
| Project | Claude: UK contributors | Taxnova: UK contributors |
|---|---|---|
| Core frontend platform | 2 | 14 |
| Telemetry collection agent | 1 | 8 |
| Storage & query engine | 2 | 7 |
| Unified alerting | 3 | 6 |
| Dashboard schema evolution | 1 | 4 |
Missing 12 contributors on a project you found is the same lost money as missing a whole project.
It just doesn't look like a gap, because the project is in the output with a confident number next to it.
A real claim works project-first, and this is the model that Taxnova follows to ensure the list is complete. To achieve this, you would have to process and classify not just the UK employees' contributions, but the whole mass of data.
2. Three qualifying projects were missed
Nothing in the output tells you the list is short. You wanted the projects you can claim; you got nine, and nine looks the same whether it's the whole year or two-thirds of it. There is no error bar on the number and no line anywhere saying "there may be more here I didn't reach".
A project that is never proposed is 100% lost, and the loss is shaped exactly like completeness.
| Project Claude never proposed | UK contributors | UK FTE |
|---|---|---|
| Plugin developer platform & ecosystem | 8 | 1.73 |
| Distributed-tracing backend | 3 | 0.26 |
| Dashboard provisioning & storage infrastructure | 2 | 0.19 |
| Total missed (~17% of the claim) | 13 people | 2.18 FTE |
The plugin platform is a good example precisely because it's hard: the work is spread thinly across many repositories, 8 people's work, and expressed mostly through review, issue design and integration commits. There is no single repo you can point at and see "this is a project". Name the plugin platform – and Claude will probably do a respectable job on it – the missing projects are mostly recoverable if you already know they're there.
Completeness has to come from the methodology, not from you remembering each project.
Taxnova's process covers every piece of the year's work and groups it into the projects, so that it doesn't depend on anyone remembering each single project.
3. The narratives aren't defensible at audit time
The tax authority wants the technological uncertainty and how it was resolved; approaches tried, approaches discarded, and the reason for that. A commit title like "add jitter to scheduled writes" is a label on an outcome with the reasoning discarded. The trails of that often live in documents, comments and threads.
In this experiment, Claude never read a single GitHub issue or PR body, and that isn't a data-access excuse. The issue threads are fully public, sitting in the same repositories it already had open. It read the commit titles and stopped. As a result, it found zero uncertainty-related citations for five of its nine projects and mentioned it in its own notes.
Claude read the labels. We read the work.
The data was there. The difference is what each of us bothered to read.
We ingested the whole public record and used it: PR bodies and issue threads included.
That translated in better technical depth and quality of documentation: Taxnova's narrative for the alerting project cites the engineering team's own stated rationale for how they staggered a burst of writes across the available window, and pins it to a production-scale scenario – hundreds of thousands of concurrent alert instances – that a user had quantified in an issue thread. Those are the sentences that survive an audit.
The sheer volume of data is roughly 40x too big to read in one sitting even for Fable.
You can overcome this with a multi-step / sub-agent workflow and better prompting requiring evidence-based documentation. This also means you are no longer pointing Claude at your GitHub – you are building the thing.
The model has to optimise what it consumes – and it falls short on quality.
Where we incorporated learnings from Claude Fable
Two cases where Claude was right and we learned something new – disclosed for transparency.
1. A qualifying project we excluded because we considered it done overseas.
One UK Engineer's most valuable 2025 work went into a large metrics-storage project (0.93 FTE) that our pipeline classed as non-significant for the UK – because 98% of the work was done elsewhere. Therefore, it was never assessed for qualification at all.
Claude didn't get allocation for that Engineer right either. But it did something better than being wrong: it refused to size the person at all, flagging that the commit count badly understated the work and should not be filed without an interview. That's a genuine advantage of how Claude reported it, and we're adopting it: by introducing per-person confidence tiering.
We have also adjusted our thresholds and correctly assessed the project as qualifying in the end, because even 2% of a large project matters.
2. The direct qualifying activity portion is where we rely on human review.
Our apportionment measures contribution on a project – not whether a person's contribution was direct resolution of technological uncertainty or qualifying indirect activity, which are treated differently.
It shows as two post-sales Technical Support Engineers carrying 12% and 16% in our sheet, which Claude excluded as non-R&D eligible roles. These roles are rarely R&D, but this isn't necessarily wrong – they could have still been involved in direct R&D work, we just don't have enough information at hand to confirm it.
This is why Taxnova's project decisions and assumptions are recorded with a written rationale and aren't final until a human signs each one off. To facilitate those checks, now we're adding an explicit flag-and-confirm step on role and activity type – and stating it here for transparency.
Summary
When a general-purpose agent is enough
A general-purpose agent with a strong model (like Fable) is a good choice when:
Triaging: quickly determining if the claim is worth doing, particularly in a new market.
Making a claim where the exercise costs more than it recovers: a small team and a handful of projects that you remember. Run it, improve the output with the context you have, and honestly, spend your money elsewhere. You don't need Taxnova for this.
Cross-checking a claim you already have: independent convergence within 15% on 12/21 people is exactly the validation an advisor should want – and it's how we caught the case above.
Using Claude gets you to a good first draft. What it can't do is tell you what it missed and guarantee quality.
Its output is delivered with full confidence, and no signal that twelve employees, three quarters of the claim's contribution links and at least one substantial workstream are absent.
The narratives it did write carry no such signal either – nothing marks the five projects it could not evidence, and those are exactly the pages a tax authority reaches for first.
When you need something purpose-built
Taxnova is a good choice when:
Your engineers work across multiple projects. Claude's person-first model will only assign one project per person, leaving the rest of their work unaccounted for. In our benchmark example, 75% of the claim's value was delivered by multi-functional teams, which the model can't represent.
You want defensible and grounded technical narratives. The tax authorities want the technological uncertainty and how it was resolved. It's in the record, but never inside a single context window – which is the problem we already solve.
You claim in more than one country. Everything above is a UK exercise. Running it again for the US means a second rulebook you have no way to check, and every defect above a second time. Taxnova is a one-stop shop, wherever your engineers are.
Someone has to put their name to it. AI can't be your competent professional; at best it prepares work for one. We built explicit reviews and confirmations into the process, and track each one as evidence – so every project decision reaches filing with a written rationale behind it.
You want to turn a once-a-year scramble into a systematic process. We monitor R&D projects continuously – not just once a year, proactively collecting data that wouldn't otherwise be captured in any engineering system.
It's not the model that matters – Taxnova was able to achieve better results using materially cheaper models than Fable.
It is the result of months of engineering time invested into building the methodology that finds every single project and person, managing disparate and messy data sources at scale, and incorporation of local tax domain expertise from professionals – which is something even the smartest model can't keep up with.