myMeans: Double-Entry Accounting#
myMeans automates a plain-text, double-entry accounting workflow built on top of ledger-cli.
It imports downloaded bank .csv statements or stages read-only Plaid changes, keeps remote source and local Ledger mutation behind separate review boundaries, categorizes transactions, and generates tabular reports.
It is especially useful if you want:
a read-only provider sync whose fetched source, immutable plan, and generated sidecar remain separate and recoverable;
a visible manual fallback for accounts that Plaid does not cover;
regex templates, routes, and interactive tools for uncategorized transactions;
exact-cent conditional planning from explicit cashflow and debt assumptions, without reading or mutating a Ledger;
an optional, explicitly remote LLM template suggester whose proposals still require local confirmation; or
typed, validated accounting primitives for accounts, posts, balanced transactions, and ledgers.
Install#
Install ledger-cli through your operating system, then install the published Python package:
ledger --version
uv tool install my-means
means-bank --help
Python API users can run uv add my-means instead.
The hosted LLM path is an optional extra:
uv tool install 'my-means[llms]'
First workflow#
Every data command accepts one configured means directory. Status is read-only and is the safest first probe:
export MY_MEANS=/path/to/your/means-directory
means-bank --directory "$MY_MEANS" status --json
From there, the provider workflow is fetch → inspect accounts → bind → plan → reviewed apply.
The deterministic categorizer stays local; the optional LLM command sends unknown memos, templates, and the account tree to Anthropic and writes only after confirmation:
categorize --directory "$MY_MEANS" --auto
export ANTHROPIC_API_KEY=your-api-key
suggest --directory "$MY_MEANS" --dry-run
--dry-run prevents a local write but still makes the remote request.
See the command-line guide for the complete security and recovery contract.
The documentation separates user workflows from the Python API and shared infrastructure:
- 1. Conditional Planning
- 2. Scenario Lab
- 3. Interactive Interfaces
- 4. Bank Synchronization
AccountBindingAccountKeyApplyPhaseApplyResultApplyRunBankSyncStoreChangeKindConnectionConfigConnectionSyncStatusFetchRevisionPlanActionPlanActionKindPlanBlockerProjectedTransactionProviderLedgerSnapshotReadOnlyLedgerViewReconciliationPlanReconcilerRemoteAccountRemoteBalanceRemoteTransactionSidecarApplierSourceChangeSourceKeyTransactionStatusTransactionsUpdateStatusrender_sidecar()sidecar_body_hash()
- 5. Command-Line Tools
Iload— Parse Configured LedgersIIgrow— Regenerate the Account TreeIIIingest— Import Bank StatementsIVcategorize— Resolve Unknown TransactionsVsuggest— LLM-Assisted TemplatesVImeans-plan— Conditional Cashflow and Debt PlanningVIIreport— Tabular Finance ReportsVIIImeans-bank— Stage Read-Only Provider Changes
- 6. Core Data Model
AcctType: Account ClassificationTransType: Transaction ClassificationAccount: Hierarchical Account PathUser: Registered ParticipantBank: Financial InstitutionBankAccount: A Single Bank AccountRoute: Transaction Transform RulePost: A Posting LineTransaction: A Balanced EntryLedger: A Parsed Ledger File
- 7. Shared Infrastructure