Fill in a tax organizer and review last year's return
Claude found a deduction my CPA missed; next year I'm getting a CPA who uses AI. Task: Claude found a deduction my CPA missed; next year I'm getting a CPA who uses AI It’s tax time! Nothing like spending hours gathering documents for my CPA so that I can get a large bill from both him and the government. Thankfully, this year I’ve got Claude by my side, so I’m having a downright good time getting to use this as an eval for its capabilities. I’m pleased to say it has outperformed my expectations in a couple of areas. If you’ve been putting off dealing with your taxes, I hope this post gives you some insight into how LLMs can help make them less painful. Every year, my CPA sends me a tax organizer. It’s a fillable PDF that asks for all kinds of information, most of which is irrelevant to me, so I usually just don’t bother. I just send the source docs and a note with anything I think he might need to know for my taxes. But this year I have a tireless, genius assistant and a desire to find ways to evaluate the usefulness of new models. Since Claude has already been helping me with my bookkeeping, it’s starting off with plenty of context about my business that’s relevant to my taxes. I figured I would also give it all the tax forms I’ve gathered together for my CPA, and it’d be able to fill out the organizer no problem. Except I immediately encountered a problem. The organizer PDF is embedded in their web application, and there’s no way to get it out. I asked if they could send me a fillable copy of it; apparently they do not have one. I considered asking for just a non-fillable version, which they clearly must have, but I figured that would defeat the purpose — this fillable version is almost certainly linked to their tax prep software, such that the values populate wherever they need to be automatically. If I just had Claude overlay text on a non-fillable version and sent that back, they’d still have to transpose the data. Then I had an epiphany — I can use Claude in Chrome to fill it out! Except that it doesn’t have the context that Claude Code does, plus it’s very token-intensive, so having it go through all of my tax docs to pull out the relevant info and fill it in felt like it’d be an extremely heavy lift. Thankfully years of being a PM at very early-stage startups has made me scrappy and resourceful in solving problems like this. The solution: have Claude in Chrome run through the document, creating a JSON representation of all the fields, give that to Claude Code to complete, then give the completed version back to Claude in Chrome and have it fill out the form. Let’s see if it works! It took something like 15-20 minutes to finish. Not exactly speedy, but I watched it work for long enough to note that it was moving much more quickly than my prior experience using Claude in Chrome, likely because I’m now on Sonnet 4.6 rather than Opus. When it was complete, it gave me the JSON in the chat UI. Success! Or… almost. It cut off partway through page 7. I copied and pasted it into a JSON file, then I ran it back a few more times doing two pages at a time (the first few pages had a lot fewer fields than the later ones). I hit a usage limit at page 12, which was odd since the usage limit is supposed to be shared across the entirety of my account, but the couple of Claude Code instances I had working on other things continued to chug away. I gave the partially-complete file to Claude Code to check, and it was very complimentary. I did tell it that it came from Claude in Chrome, and I wonder if it would have gushed as much if it didn’t know the source. Anyway, since things were looking good on that end, once my limit reset I had Claude in Chrome finish grabbing all the pages. Gave that to Claude Code, asked it to fill it out and let me know if it was missing any information (I have learned to be extremely clear and repetitive with this request, or Claude will often tell me things are done when it didn’t actually have sufficient information to complete them fully). It highlighted a few things it didn’t have, like my daughter’s SSN, but otherwise it completed it. I didn’t bother to check the JSON, since I was going to have to check it again in the web UI to ensure everything was entered correctly anyway, and if something was wrong then I could investigate whether it was an issue with Claude Code’s JSON file or Claude in Chrome’s entry of the content into the PDF.; tools: Claude in Chrome, Claude Code. Human role: The original post does not say how a person stayed involved.; limitations: Claude in Chrome cannot directly read or write files, necessitating manual JSON transfer between tools. The web form extraction is token-intensive and prone to context window limits, requiring batch processing. Human verification is mandatory for all financial data entries, as AI may hallucinate or miss specific personal identifiers like SSNs..
Tools
Published on Agent Work Atlas:
Overview
Claude found a deduction my CPA missed; next year I'm getting a CPA who uses AI
Workflow
Claude found a deduction my CPA missed; next year I'm getting a CPA who uses AI It’s tax time! Nothing like spending hours gathering documents for my CPA so that I can get a large bill from both him and the government. Thankfully, this year I’ve got Claude by my side, so I’m having a downright good time getting to use this as an eval for its capabilities. I’m pleased to say it has outperformed my expectations in a couple of areas. If you’ve been putting off dealing with your taxes, I hope this post gives you some insight into how LLMs can help make them less painful. Every year, my CPA sends me a tax organizer. It’s a fillable PDF that asks for all kinds of information, most of which is irrelevant to me, so I usually just don’t bother. I just send the source docs and a note with anything I think he might need to know for my taxes. But this year I have a tireless, genius assistant and a desire to find ways to evaluate the usefulness of new models. Since Claude has already been helping me with my bookkeeping, it’s starting off with plenty of context about my business that’s relevant to my taxes. I figured I would also give it all the tax forms I’ve gathered together for my CPA, and it’d be able to fill out the organizer no problem. Except I immediately encountered a problem. The organizer PDF is embedded in their web application, and there’s no way to get it out. I asked if they could send me a fillable copy of it; apparently they do not have one. I considered asking for just a non-fillable version, which they clearly must have, but I figured that would defeat the purpose — this fillable version is almost certainly linked to their tax prep software, such that the values populate wherever they need to be automatically. If I just had Claude overlay text on a non-fillable version and sent that back, they’d still have to transpose the data. Then I had an epiphany — I can use Claude in Chrome to fill it out! Except that it doesn’t have the context that Claude Code does, plus it’s very token-intensive, so having it go through all of my tax docs to pull out the relevant info and fill it in felt like it’d be an extremely heavy lift. Thankfully years of being a PM at very early-stage startups has made me scrappy and resourceful in solving problems like this. The solution: have Claude in Chrome run through the document, creating a JSON representation of all the fields, give that to Claude Code to complete, then give the completed version back to Claude in Chrome and have it fill out the form. Let’s see if it works! It took something like 15-20 minutes to finish. Not exactly speedy, but I watched it work for long enough to note that it was moving much more quickly than my prior experience using Claude in Chrome, likely because I’m now on Sonnet 4.6 rather than Opus. When it was complete, it gave me the JSON in the chat UI. Success! Or… almost. It cut off partway through page 7. I copied and pasted it into a JSON file, then I ran it back a few more times doing two pages at a time (the first few pages had a lot fewer fields than the later ones). I hit a usage limit at page 12, which was odd since the usage limit is supposed to be shared across the entirety of my account, but the couple of Claude Code instances I had working on other things continued to chug away. I gave the partially-complete file to Claude Code to check, and it was very complimentary. I did tell it that it came from Claude in Chrome, and I wonder if it would have gushed as much if it didn’t know the source. Anyway, since things were looking good on that end, once my limit reset I had Claude in Chrome finish grabbing all the pages. Gave that to Claude Code, asked it to fill it out and let me know if it was missing any information (I have learned to be extremely clear and repetitive with this request, or Claude will often tell me things are done when it didn’t actually have sufficient information to complete them fully). It highlighted a few things it didn’t have, like my daughter’s SSN, but otherwise it completed it. I didn’t bother to check the JSON, since I was going to have to check it again in the web UI to ensure everything was entered correctly anyway, and if something was wrong then I could investigate whether it was an issue with Claude Code’s JSON file or Claude in Chrome’s entry of the content into the PDF.
Reported result
The workflow saved time compared to manual entry but encountered technical friction, including output truncation at page 7 and usage limits at page 12. Claude Code identified missing data (e.g., SSN) and suggested a SEP-IRA deduction strategy, which the author verified with external sources. The author noted that Claude in Chrome lacked file I/O capabilities, requiring manual copy-pasting of JSON.
Human role
The original post does not say how a person stayed involved.
Limitations
Claude in Chrome cannot directly read or write files, necessitating manual JSON transfer between tools. The web form extraction is token-intensive and prone to context window limits, requiring batch processing. Human verification is mandatory for all financial data entries, as AI may hallucinate or miss specific personal identifiers like SSNs.
Try it
I need to fill out a web-based tax organizer using Claude in Chrome and Claude Code. First, use Claude in Chrome to inspect the form at [URL] and generate a JSON schema of all fields. Save this JSON locally. Next, provide Claude Code with the JSON schema and my tax documents located in [Folder Path]. Instruct Claude Code to populate the JSON with data from the documents, flagging any missing fields like SSNs. Once the JSON is complete, return to Claude in Chrome. Paste the JSON in batches (e.g., 3 pages at a time) to avoid context limits. Instruct Claude in Chrome to fill the web form fields using the provided JSON data. Do not submit the form. Instead, take screenshots of the filled pages and present them to me for manual verification. Only proceed to submission after I confirm all data is correct. If Claude in Chrome fails to fill a field, report the error and the specific field name.
Source reports are not independently verified. Publication date is the catalog publication date, not the original article date.