I filed my Indian taxes as an NRI with AI agents
My first time self-filing an ITR, done end to end with Grok 4.5 in the grok build CLI. I built a neo-brutalist dashboard and a 158-page audit packet, and still overpaid by ₹5,550.
Indian taxes are brutal. So I went neo-brutalism on them, with my own personalised dashboard to prepare my ITR for FY 2025-26 (AY 2026-27).
It was also my first year self-filing, with my (AI) agents. Going in, I was hoping I wouldn’t regret it ¯\_(ツ)_/¯
Spoiler: I overpaid by ₹5,550, and I’d probably still do it again.
This started as two threads on X: the prep one in mid-July and the after-filing one two weeks later.
Why an NRI is filing in India at all
I lived in India (NCR and Bangalore) till 2024 and worked there for 12 years. Back then I was one of those FIRE aspirants, putting close to 60% of my paycheck into investments. That portfolio now throws off capital gains, dividends and interest on its own. Add a few past RSU grants and the stock/MF holdings, and there’s a fair bit to account for.
That income is in India, so I still have to file an ITR and pay taxes there. So I haven’t lived in India for 2 years, but I’m still contributing to nation-building. You’re welcome.
Why not a CA this time
Over the last few years I kept finding mistakes in my filings, so many that I was anyway playing the part of the CA. This year I figured I’d just file it myself.
The setup
If you have a coding client like Claude Code, Codex or opencode, these two skills are a good place to start:
I used the two together for the due diligence, then got Grok 4.5 to build me a dashboard with a checklist so I could keep an eye on everything and verify it myself.
The document collection was all manual. I pulled a lot and lot and lot of documents into one folder on my PC, and by the time the dashboard was up it had 17 files loaded. Roughly:
- Form 26AS (annual tax statement), for TDS credits
- Form 16 + 12BA from my employer, for salary, RSU perqs and employer TDS
- Form 16A from the REITs I hold
- Interest certificates and savings statements from my banks, plus the home loan interest certificate
- PPF transaction history, LIC premium statement and the NPS receipt
- Mutual fund capital gains statement and the CAS from CAMS + KFintech
- My broker’s tax P&L, for equity capital gains and dividends
- AIS / TIS (deferred at first, because the portal was down)
- A passport day-count for the residency status (only verbal at that point, the dashboard flagged that a written note would help)
- Last year’s ITR, as a baseline
Grok 4.5 High in the grok build CLI
I did the whole thing end to end exclusively with Grok 4.5 High through the grok build CLI, plus a bunch of custom skills and scripts working off that document folder.

IMO grok-4.5-high sits right between the Sonnet and Opus class models, and it’s incredibly fast, so you can iterate very quickly.
I literally ended up pasting screenshots of complex ITR schedule forms side by side, and it could look at the data in the folder and explain each and everything properly.
The neo-brutalist dashboard
The dashboard was basically my working paper for the whole return, with a tab for pretty much everything:

Everything hung off a “confirmed decisions” table: new tax regime, non-resident (under 60 days in India), self-filing on the portal. From there it picked the form. ITR-1 was out because of the capital gains and NR status, ITR-3 and ITR-4 are for business income, so ITR-2 it was. It also laid out the filing flow in six steps, from locking in NR + new regime to e-verifying within 30 days.


About the look. I’ve been a backend/platform dev all my life, so I’m now on a mission to explore new design languages and systems and build myself custom dashboards that improve my productivity/efficiency (or at least my perception of it ;) ). This one is neubrutalism. If you want to learn a bit more about this design language, check out Neubrutalism: The Definitive Guide.
Gumroad by @shl has been the poster child for this look and feel, and it’s one of the first websites I remember adopting the style.
Filed, and overpaid
ITR-2 filed under the new regime as a non-resident, e-verified, challan paid. Turns out I overpaid by ₹5,550, which is one month of my coding plan, courtesy of the Indian govt.
The last line of the return: ₹5,550 refundable.
The audit packet
Good thing is, I have incredibly detailed records in case I get audited, and I have up to 3 years to fix or amend my return. Bad thing is, the IT Dept is notorious for raising demand notices years after you file. Last year I got a notice to pay an extra ₹550 that was pending from 2016.
So after filing, the e-verify, the challan and all of that, I kept dumping everything into the same folder. Then I made the agent write a 400-line Python script that generates a 160-page (158, if you’re counting) audit packet PDF with everything end to end. The table of contents goes roughly like this:
- Filed return and acknowledgement: the ITR-2 ARN, the full form as filed, the self-assessment tax challan
- Working papers and checklist: a facts memo with the key numbers, the filing checklist, a digital exhibits and path map, and a JSON snapshot of the computation data
- TDS, 26AS, AIS and TIS
- Salary, Form 16 and employer TDS
- House property and home loan
- Bank accounts and interest
- Capital gains, including the Schedule 112A working
- REIT / InvIT Form 16As
- Other investments and exempt income (the CAS)
If I get a demand notice or an audit, or just need someone to review it later, I won’t have to scramble across bank websites, stockbrokers and mutual fund platforms to collect evidence. It’s all in one PDF.
I’m planning to do the same for my last 3 years of returns, just for peace of mind, and probably for my US tax filing too, so I have one single audit packet. I might also package it as a skill and publish it on a skill marketplace.
Was it worth all the effort?
Probably not. Did I learn a lot about taxation, and about how surprisingly good our income tax portal is? Absolutely yes.
Would I do it again? Well, I think so. With all the research I’ve done this time, I can probably cut the time by 60-70% next year and have everything on autopilot. I’m also banking on the models getting significantly better, cheaper and faster by then. So, cheers to that.
Disclaimer: DYOR. I am not a financial advisor.
Keep reading
Labelarium: I kept losing one sheet of paper, so I built an app
My Brother P-touch has 649 symbols indexed on one paper sheet I kept losing. Labelarium is the offline, open-source companion app I built instead, now on Product Hunt and Peerlist.
Building cross-distro offline voice dictation for Linux (and why it took more than a model)
The story behind Vocalinux, from the missing Linux dictation gap to whisper.cpp, remote HTTP STT, Wayland text injection, and a tray app you can use every day.
Coding on the Go: My Full-Stack Dev Environment Lives in My Phone Now
I used to think I needed a laptop. Then I dropped a phone into a lapdock, and now I ship code from hotel TVs.
Leave a comment