If you've ever stared at a shoebox full of crumpled receipts the night before a tax deadline, you know the feeling. That sinking dread. The mental math. The realization that you've spent 15+ hours this month on something a machine should have handled years ago.
Leonard Rodman captured this sentiment perfectly in a viral tweet that racked up 5.2K views in under 24 hours: "Someone built a self-hosted AI app that might kill manual bookkeeping forever."
That app is TaxHacker — and with 6,400 GitHub stars, 1,000+ forks, and an MIT license, it's not just another side project. It's the beginning of a genuine shift in how indie developers, freelancers, and small businesses handle their finances.

Drop in your:
It automatically extracts:
And here's the crazy part:
Everything is structured and ready for bookkeeping or tax filing. This is exactly the kind of AI that turns hours of admin work into minutes.
TaxHacker is a self-hosted AI accounting application built by indie developer vas3k — a Berlin-based engineer known in open-source circles for privacy-respecting tools. Under the hood, it's a Next.js 15 frontend paired with a Prisma-powered PostgreSQL 17 database, all wrapped in a Docker container that deploys with a single command.
The pitch is deceptively simple: drop in a photo of any receipt, invoice PDF, or bank statement, and TaxHacker's LLM engine extracts everything that matters. Vendor names, invoice numbers, dates, tax amounts, line items, payment information — all structured and ready for your spreadsheet, your accountant, or your tax filing software.
But what makes TaxHacker genuinely interesting isn't just the feature list. It's the philosophy.
Unlike SaaS tools like Expensify or Receipt Bank — which store your financial data on their servers, behind their paywalls, subject to their privacy policies — TaxHacker runs entirely on your infrastructure. Your documents, your LLM API keys, your database. Complete data sovereignty.
Traditional receipt scanners use OCR: they read text, sure, but they don't understand what they're reading. TaxHacker's multi-modal LLM pipeline is a fundamentally different approach.
When you upload a photo of a crumpled Starbucks receipt, the AI doesn't just extract "Starbucks — $4.75." It recognizes "Starbucks Coffee" as a Meals & Entertainment expense. It identifies VAT amounts on European invoices. It can split a complex restaurant bill into individual line items, each with its own category.
The system supports any language, any currency, and any document format. Handwritten Greek taverna receipts? Korean bank statements in PDF? Crypto transaction logs? TaxHacker handles all of them.

Here's the feature that sets TaxHacker apart from every other accounting tool — open-source or commercial: you can write your own LLM prompts for every extraction field.
Want to extract project codes from invoice footers? Write a prompt. Need to identify specific tax categories for your country's regulations? Write a prompt. Want to auto-flag any transaction over $500 for review? You guessed it — write a prompt.
This isn't a black box. Every system prompt is visible and modifiable in the settings panel. You get fine-grained control over field extraction priorities, naming conventions, and industry-specific document understanding. For freelancers with unique workflows, this is the difference between a tool that sort-of-works and one that fits like a glove.
Financial documents are arguably the most sensitive data most people generate. Account numbers, income patterns, client billing rates, tax IDs — this isn't the kind of information you want sitting on a third-party server.
TaxHacker's self-hosted architecture addresses this directly:
curl command, one docker compose up, and you're runningPerhaps most importantly for the privacy-conscious, TaxHacker supports local LLMs through Ollama, LM Studio, vLLM, and LocalAI. If you don't want your receipts touching OpenAI or Google's servers at all, you can run everything completely offline. The quality depends on your local model's OCR capabilities, but the option exists — and that's rare.
For GDPR compliance, client confidentiality agreements, or anyone who simply believes their financial data is nobody else's business, this architecture is a game-changer.
The BrightCoding review documented several real-world use cases that illustrate the difference TaxHacker makes:
The Global Freelancer. A UX designer working with clients across the US, EU, and UK was spending 6 hours monthly on multi-currency expense reporting. TaxHacker's automatic currency detection and historical rate conversion — supporting 170+ fiat currencies and 14 cryptocurrencies — cut that to 30 minutes. 5.5 hours saved every month.
The Crypto-Active Business. A blockchain consultancy juggling payments in BTC, ETH, and stablecoins needed cost-basis tracking for tax compliance. TaxHacker automatically pulls historical crypto prices at transaction time, logs both crypto and fiat values, and generates tax-ready reports. Compliance achieved in hours instead of weeks.
The Multi-Project Agency. A 10-person marketing agency was losing revenue because team members forgot to tag receipts to specific client campaigns. TaxHacker's project-based auto-categorization — combined with custom fields for "Billable" detection — reduced revenue leakage by 90%.

These aren't hypotheticals. They're the kind of efficiency gains that turn a tool from "nice to have" into "I can't go back."
Ready to try it yourself? Here's the quick-start:
# 1. Grab the Docker Compose file
curl -O https://raw.githubusercontent.com/vas3k/TaxHacker/main/docker-compose.yml
# 2. Set your environment variables
# At minimum: DATABASE_URL, BETTER_AUTH_SECRET, and one LLM API key
# (OpenAI, Google Gemini, or Mistral)
# 3. Launch
docker compose up -d
# 4. Open your browser
# http://localhost:7331
TaxHacker requires PostgreSQL 17+ (included in the Docker Compose setup), 2GB RAM minimum (4GB recommended), and an API key from at least one LLM provider. If you're going fully local with Ollama, skip the cloud API keys and point TaxHacker at your local endpoint.
The app runs database migrations automatically on startup, so there's no manual setup beyond the environment variables. In self-hosted mode (SELF_HOSTED_MODE=true), you get auto-login and custom API key management out of the box.
TaxHacker isn't happening in a vacuum. It's part of a broader trend: the migration of sensitive, high-stakes workflows away from SaaS platforms and onto self-hosted, open-source infrastructure.
We saw it with code forges (Gitea, Forgejo). We saw it with note-taking (Obsidian, Logseq). We're seeing it with AI itself (Ollama, LocalAI, vLLM). Now it's accounting's turn.
The traditional options — QuickBooks, Xero, Expensify — aren't going anywhere. But for the growing population of indie hackers, digital nomads, crypto-native businesses, and privacy-conscious professionals, the calculus has changed. Why pay a monthly subscription to hand your most sensitive data to a company that may or may not respect it, when you can run something better on hardware you already own?
TaxHacker, at 6,400 stars and counting, is proof that the demand is real. The shoebox era is over. The self-hosted AI accounting era has begun.
Star the repo at github.com/vas3k/TaxHacker — the project is in active development and new features ship regularly.