TaxHacker Review: Self-Hosted AI Receipt Scanning with Custom Prompts
Self-hosted AI accounting app. LLM analyzer for receipts, invoices, transactions with custom prompts and categories
At a glance
- What is it?
- TaxHacker is a self-hosted accounting app that uses LLMs to extract data from receipts and invoices. It offers custom prompts, multi-currency conversion, and local model support, but it is early-stage software.
- Who is it for?
- TaxHacker is for freelancers, indie-hackers, and small businesses that want to keep financial document processing in-house and are comfortable running early-stage software.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
What TaxHacker Actually Does
TaxHacker solves a specific pain: turning photos of receipts, invoices, and PDFs into structured accounting data without manual typing. It is aimed at freelancers, indie-hackers, and small businesses, not at accountants or large finance teams. The core workflow is simple. You upload a document, the app uses an LLM to extract fields like dates, amounts, vendors, and line items, then stores everything in a structured database. You can also split invoice items into separate transactions. The README claims it handles any language and any currency, though that claim depends on the underlying model's capabilities. The app also supports manual entry, which is important because AI extraction will fail on some documents. The key value proposition is that you can run it yourself, keeping financial data on your own infrastructure, and you can customize the extraction prompts to match your specific business needs.
The Mechanism: LLM-Driven Extraction with Custom Prompts
The architecture is built around LLM analysis. You choose a provider: OpenAI, Google Gemini, Mistral, or a local OpenAI-compatible endpoint like Ollama, LM Studio, vLLM, or LocalAI. The app sends document images or text to the model with a system prompt that defines the extraction rules. What makes TaxHacker different is that you can edit those system prompts in settings, and you can create custom fields that each have their own prompt. For example, you could add a field for 'project code' and write a prompt that tells the model how to find it. This is not just a fixed OCR pipeline. The README emphasizes 'full transparency' and 'full control' over the extraction process, which is a real differentiator for users who need to extract non-standard data. The catch is that the quality of extraction depends heavily on the model's OCR ability. The README warns that local models 'results are not guaranteed,' which is a honest admission of a practical limitation.
Getting It Running: Commands and Configuration
The README does not include explicit installation commands, which is a gap for a self-hosted tool. It points to the homepage at taxhacker.app for a demo video, but the repository does not show a docker-compose file or setup script in the provided text. Based on the project being TypeScript and self-hosted, you would likely need to clone the repository, install dependencies, and configure environment variables for your LLM API keys. The README mentions settings for system prompts, which suggests a web UI for configuration rather than a config file. For a local LLM, you would point the app to your OpenAI-compatible API endpoint. Because the README is truncated, the exact steps are not available. This is a real barrier for adoption. If you are not comfortable figuring out a Node.js deployment from source, you will need to wait for more documentation or a packaged release.
Multi-Currency and Crypto: Historical Rates, Not Live
One of the more interesting features is automatic currency conversion using historical exchange rates from the transaction date. This matters for freelancers who deal with foreign clients or crypto payments. The app supports 170+ fiat currencies and 14 cryptocurrencies, including BTC, ETH, LTC, and DOT. The mechanism is that TaxHacker detects the currency in the document, then fetches a rate for that specific date. This is different from using a current rate, which would misstate the value for tax purposes. The README does not specify the exchange rate source, which is a gap for auditing. There is also a 'manual entry' option for when you need more control, which is useful for crypto transactions that might not have a clear paper trail. For tax filing, historical rates are a sensible design choice, but the lack of source transparency could be a concern for rigorous bookkeeping.
Custom Categories, Projects, and Fields: The Excel Analogy
TaxHacker lets you define your own categories, projects, and fields. The README describes custom fields as 'like creating extra columns in Excel.' That is a useful mental model. Each custom field can have its own AI prompt, so you can extract arbitrary information like an invoice number, a purchase order ID, or a client email. You can also modify the built-in system prompt to change how the AI categorizes transactions. This level of customization is rare in commercial accounting tools, which usually lock you into their schema. The trade-off is that you must design your own prompts, which requires trial and error. The README claims 'unlimited' customization, but the practical limit is your ability to write effective prompts. For a small business with industry-specific documents, this could be a major time saver. For a user who just wants a simple expense tracker, the flexibility might be overwhelming.
Export, Import, and Data Portability
The README emphasizes data portability. You can export filtered transactions to CSV, and you can download complete data archives 'to migrate to other services.' This is a strong feature for a self-hosted tool, because it reduces the risk of vendor lock-in. The export includes attached documents, which is important for tax audits where you need the original receipt. The app also supports import, though the README does not detail the import formats. For an accounting tool, the ability to get data out is as important as getting it in. TaxHacker's approach is refreshing: it treats your data as yours, not as a hostage. However, the export is only as good as the structured data that the AI extracted. If the AI misreads a field, that error is baked into your export. You will need to review the extracted data for accuracy, which the app's filtering and search features are designed to help with.
Limitations and Failure Modes
The most obvious limitation is the early-stage warning. The README says 'This project is still in early development. Use at your own risk!' That is a clear signal that you should not rely on it for critical financial records without backups and verification. Another failure mode is the dependence on LLM quality. The README admits that local models may not be good at OCR, and even cloud models can make mistakes on handwritten receipts or poor-quality photos. There is no mention of a human-in-the-loop review step, though the 'unsorted' upload area suggests you can hold documents until you are ready to process them. A third limitation is the lack of a clear installation path in the README. For a self-hosted app, that is a significant hurdle. Finally, the project is not archived and had recent releases as of the last push, which is good, but the release cadence (v0.8.5 in July 2026) suggests it is still pre-1.0. You should expect breaking changes and possibly incomplete features.
Alternatives and Comparisons
The main alternative for self-hosted receipt scanning is Paperless-ngx, which is open source but uses OCR and machine learning for tagging, not LLM-based extraction. Paperless-ngx does not extract line items or amounts into a structured ledger; it focuses on document archiving and search. TaxHacker goes further by creating transactions and categories, which is closer to accounting. Another alternative is a commercial tool like Hubdoc or Dext, which offer automated receipt capture but are cloud-only and do not allow custom prompts or local LLMs. If you need local processing for privacy, TaxHacker is one of the few options that lets you plug in Ollama or LM Studio. However, those commercial tools are more polished and have dedicated support. The choice comes down to how much control you want over the extraction logic versus how much you value a stable, supported product. TaxHacker's open-source MIT license also means you can modify the code, which is not possible with closed SaaS tools.
Maintenance and License Implications
TaxHacker is MIT licensed, which means you can use, modify, and redistribute it freely, even in commercial products, as long as you retain the copyright notice. That is a permissive license with no copyleft obligations. The repository is not archived, and the last push was September 2026, with releases as recent as July 2026. That indicates active maintenance, but the version number (v0.8.x) shows it is still pre-stable. The README includes a donation link, which suggests the project is maintained by an individual, not a company. That has implications for support: you cannot buy a support contract. You are responsible for upgrades and bug fixes if the maintainer moves on. The README also includes a personal note from the author looking for a job, which is not a red flag but does suggest that the project's future depends on the author's availability. Before adopting, check the issue tracker and commit history to see how responsive the maintainer is.
Editorial conclusion
TaxHacker is for freelancers, indie-hackers, and small businesses that want to keep financial document processing in-house and are comfortable running early-stage software. It is not for those needing a production-grade accounting system, because the README warns it is in early development and 'use at your own risk.' Before adopting it, verify that your chosen LLM (cloud or local) can handle OCR on your actual document types, test the custom prompt system against your specific fields, and review the export and import features to ensure you can move data out if needed. The project's MIT license and active release history are positive signs, but the lack of a stable release means you should expect breaking changes.
Community notes