Skip to content

Instantly share code, notes, and snippets.

@alexw24
Last active August 4, 2026 03:35
Show Gist options
  • Select an option

  • Save alexw24/15165a7199048f747fdb7007b08874e1 to your computer and use it in GitHub Desktop.

Select an option

Save alexw24/15165a7199048f747fdb7007b08874e1 to your computer and use it in GitHub Desktop.
AI prompt for installing and configuring Beancount, an open source accounting software

USER NOTE: You should read the entire prompt and customize it to your needs. Beancount is a highly capable open source accounting software. Highly customizable, and very suitable for AI agents, as it runs locally and is plain-text based.

Objective

We are setting up a new plain-text double-entry accounting system with Beancount V3 for my business — a small plumbing shop. I have SWE experience. Help me plan and scaffold the initial setup. Here's my situation.

Environment

  • This will run on this machine, my home server which has some other stuff running on it. Port 5000 for Fava will already be taken. (I want fava installed.) I use tailscale to access this machine, so we should bind it to the tailnet. Lets not let this near the system Python, install with uv. I cloned the official Beancount Github repo into our directory here myself.
  • My accounting should live in a git repo, back up to a private github (use gh cli to create a private repo) and ignore secrets for bank credentials etc. I think this is a standard practice for beancount, they mention being able to version with git. Just want to go with the best practice.

Accounting

  • I use cash-basis bookkeeping straight off bank and credit card transactions. No invoicing, no AR/AP. I handle that in a separate tool.
  • I'll start fresh from 01/01 this year. I am NOT importing prior history. Set up opening balances as of 01/01 against an Equity:Opening-Balances account — I'll get the real 01/01 balances from my bank and card statements.
  • Accounts to track: Business checking, a few business credit card accounts, owner draws/contributions.
  • Vehicles: I take the standard mileage deduction, vehicles are not on the books as depreciating assets. Set up expense categories so that actual vehicle operating costs (fuel, repairs, insurance) are tracked but clearly separated/flagged, since under the mileage method they aren't separately deductible — I don't want them accidentally landing in deductible expenses.
  • Payroll: We are an LLC that elects to file as an S-corp. I have myself on payroll with Surepayroll (sometimes their fees and refunds show up as paychex). Set up the account structure so SurePayroll's debits are split correctly between wage expense, employer payroll tax expense, and any distributions, rather than dumping the whole payroll draft into one expense bucket.
  • Subcontractors/vendors: I have subcontractors that I pay through a variety of means, usually zelle. Hand verification for these is going to be necessary as often times its unclear. Set this up so that querying for 1099's is easy. Write a saved beanquery report. We don't need an account for each, we can just indicate payee.

What I want from you in plan mode

In addition to what you think I need and how you think this should be set up based on your knowledge and my instructions, I want:

  • A starter chart of accounts shaped for my small plumbing and contracting business with sensible expense categories
  • the installation of beancount and fava and any plugins you strongly recommend. I want this set up as a persistent service bound to the Tailscale interface, so that if my machine restarts everything starts back up again.
  • A plan to import CSV's from my bank transactions with v3's script based beangulp system. I put a CSV of my business checking account from 01/01. I also put a CSV of my main business credit card account (two card numbers. The CSV says which card number the transaction belongs to on each line. I'd like sub accounts for each of these two numbers for easy querying purposes.) The importer is a beangulp.Importer subclass with identify(), account(), and extract() methods, run via a script-based import.py, and the old bean-extract/bean-identify commands were removed from core in V3. Set up beangulp's golden-file tests for the importer.
  • Smart importing rules to put transactions in the right category. Recommend something, but I'm imagining having Claude Haiku or Sonnet look at my CSV's and create rules and ask me questions for transactions that aren't obvious. Here's a tip/example: for gas stations (shell, circle-k etc) Transactions <$10 should be categorized as meals/entertainment (probably coffee and snacks, which needs its own account, as its deducted differently) and >$10 should be fuel.
  • a CLAUDE.md about this project and instructions for a future claude code that will help me manage this.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment