Bookkeeping that remembers what you were doing.

Plain-text books with mileage logs, project notes, and receipts feeding the same ledger. A hardware store charge from a Saturday afternoon knows it belongs to the home improvement project.

docker run -d -p 8080:8080 -v lamella-data:/data ghcr.io/lamella-ai/lamella:latest
Apache 2.0 Self-hosted No telemetry

A worked example

Context turns transactions into something you can read.

The same Tuesday, from your phone and from your bank. Lamella matches them up.

What you wrote
Mileage Log · Tue, Mar 12

Lunch with Sara at Bistro 21 (Acme Pitch). Stopped at Staples for presentation board, post office for the contract, back to the office. 24 mi.

Project · Acme Pitch

Q2 proposal for Acme Corp. Presentation due Mar 15. Expected vendors: Staples, Bistro 21.

Receipt · Staples #4892
Foam board, 30x40    $18.99
Markers, set of 4    $13.16
Tax                   $1.85
Total                $33.00
What ended up in your books
Mar 12 Bistro 21 $48.20 Meals: Client Lunch · Acme Pitch · billable
Mar 12 Staples #4892 $33.00 Office Supplies · Acme Pitch · receipt linked
Mar 12 USPS $0.71 Postage
Mar 12 Mileage (24 mi) $16.08 Vehicle: Business Mileage · IRS standard rate

Same data Lamella saw: a mileage log entry, a project, and a Staples receipt. The transactions classified themselves.

What it looks like

The whole UI in five screenshots.

Self-hosted Beancount with the rough edges sanded off. Personal and business entities live side by side. Vehicles, properties, and projects each get a real surface.

Lamella dashboard showing net activity and the next thing to triage
Dashboard — the next thing to triage, today's activity, and a 30-day net.
Personal entity dashboard
Personal entity — Schedule A flavor.
Business entity dashboard
Business entity — P&L, COGS, Schedule C.
Transactions list with filters
Transactions — search, filter, drill in.
Vehicle mileage and standard deduction
Vehicles — mileage log + standard deduction.

Context

Five places your books learn from.

01

Mileage logs

Write down where you went and why, in plain English. Lamella turns it into both a deductible mileage entry and context for the day's other transactions.

02

Notes

A line or two about what you worked on today. The grocery run during a kitchen remodel reads differently than the grocery run on a normal Tuesday.

03

Projects

Long-lived context. A home improvement project, a client engagement, a side hustle. Define expected vendors and timeline once; relevant transactions get attached automatically.

04

Memos

A note left on a specific transaction. Useful when you want a second opinion. Ask "is this a charitable deduction?" and your AI can answer with a recommendation.

05

Receipts

Connect Lamella to Paperless-ngx. Receipts go from photographs to line items the ledger can actually reason about.

The ledger underneath

Beancount underneath, plain English on top.

Lamella stores every transaction in Beancount, the plain-text accounting format that's been quietly running serious finances for over a decade. Your data is text files. They survive Lamella. They version in git. They open in any text editor.

What Lamella adds is the part Beancount asks you to do yourself: friendly category names mapped to IRS Schedule A, C, and F lines; double-entry transfers automatically linked across accounts; a database with a vector index for fast search and similarity matching; and a UI that doesn't require you to memorize the syntax.

If Lamella turns out not to be a fit, export your .beancount files any time and walk away. The ledger goes with you.

; simplefin_transactions.bean

2024-03-12 * "Staples #4892" "Foam board for Acme pitch"
  lamella-simplefin-id: "ACT-1J8h_4892"
  lamella-ai-classified: TRUE
  lamella-ai-decision-id: "1428"
  Liabilities:CreditCard:Chase    -33.00 USD
  Expenses:Acme:Supplies           33.00 USD

; connector_links.bean

2024-03-12 custom "receipt-link" "8f3a4d2e"
  lamella-paperless-id: 4892
  lamella-match-method: "ai-suggested"
  lamella-match-confidence: 0.94
  lamella-txn-date: 2024-03-12
  lamella-txn-amount: 33.00 USD
This is what Lamella writes. You never have to.

AI

Steady context in. Classified books out.

Lamella doesn't race to label every transaction the moment it imports. It works alongside you. Drop in a mileage log when you remember the trip. Forward a receipt to Paperless when you get one. Leave a note about what the day was about. The transactions classify themselves as the context catches up.

The system learns from what you've already done. Classify a few similar charges by hand and it picks up the pattern. The vector database keeps a running index of your own decisions so the next ambiguous charge has somewhere to look.

When you want a second opinion, point Lamella at any model on OpenRouter. Ask for a category suggestion. Ask whether a charge is deductible. Ask the model to summarize your day.

A few things we believe:

  • Bring your own model. OpenRouter API key, your account, your bill. We don't proxy anything.
  • Restraint by default. Background classification is paced, not aggressive. It prefers waiting for context to arrive over guessing now. Your API budget is yours.
  • Learns from you. Classify a handful of charges manually and the system uses those as examples. Patterns surface from your own history before any model is consulted.
  • Local first. The vector index, the ledger, the receipts. All on your machine. When the model is consulted, Lamella sends the current transaction along with the context it needs to answer well: similar past transactions pulled from your vector index, the relevant project, the day's notes, the linked receipt. Nothing leaves your machine unless it's part of that bundle.
  • Receipts get a hand too. If receipt OCR comes in messy or under-classified, the model can clean it up and slot it into the right category. The first few might miss; once it has seen how you handle a vendor, it gets reliable.

Imports

Get your data in.

Banks

SimpleFIN bring-your-own-token.

SimpleFIN is a $1.50/month service that gives you read-only access to your bank data. You sign up, you pay them, you paste a token into Lamella. Your bank credentials never touch us.

Files

Or skip the bank entirely.

CSVOFXQIFQBXSimpleFIN

Or paste statement text directly from your bank's website. Lamella's importer asks a few clarifying questions and figures out the rest. Built-in importers for PayPal, eBay, Amazon, and more.

Duplicate detection runs across all sources. Pull the same Chase transactions in from a CSV and a SimpleFIN feed; they merge cleanly. Because the ledger is double-entry, transfers between your own accounts find both sides and link up automatically.

In the box

What else is in the box.

Calendar view

See every day's transactions, mileage, notes, and project activity in one place.

Loans & amortization

Mortgages, auto loans, student loans. Live amortization tables and "what if I pay extra" projections.

Vehicle tracking

Per-vehicle mileage, fuel, maintenance, and total cost of ownership.

Budgeting

Set targets per category. See variance over time without leaving the ledger.

Audit reports

Find untagged transactions, missing receipts, and inconsistencies before tax time.

Schedule-aware

Categories map to IRS Schedule A, C, and F line items. Year-end exports do most of the work.

Fit

Is this for you?

+Probably yes

  • Freelancers and contractors who want their books to make sense in April
  • Side-hustle operators juggling personal and business
  • Small business owners who don't need payroll for fifty
  • Multi-business operators who lose track of which expense belongs where
  • Plain-text accounting users who want context without leaving their format
  • US filers (Schedule A, C, F)

Probably not

  • Payroll for more than a handful of employees. Lamella doesn't do this
  • Full ERP, inventory management, or POS integration
  • Non-US tax structures (yet)
  • People who want a fully managed, hosted SaaS. That's not what this is

Open source

Yours. All of it.

Apache 2.0 licensed. The repository is on GitHub. Issues, discussions, and pull requests are welcome.

Lamella runs on your hardware. There is no telemetry, no analytics, no "anonymous usage data." We don't know you installed it. The only network traffic Lamella initiates is to the services you connect: your bank's SimpleFIN endpoint, your Paperless instance, your chosen OpenRouter model. Everything else stays on the box.

Install

Get started.

1

Pull the image.

docker run -d -p 8080:8080 -v lamella-data:/data ghcr.io/lamella-ai/lamella:latest
2

Open the app.

Visit http://localhost:8080. Create your first ledger. Pick your business types so Lamella knows which IRS schedules to wire up.

3

Bring your data.

Paste a CSV, paste a SimpleFIN token, or paste raw text from your bank's website. The importer takes it from there.