Skip to content

Releases: davidfowl/tally

Development Build (0.1.324-dev)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 18 May 05:16
2dc309c

Latest build from main branch

Version: 0.1.324-dev
Commit: 2dc309c

Install

Update existing installation:

tally update --prerelease

Linux / macOS:

curl -fsSL https://tallyai.money/install.sh | bash -s -- --prerelease

Windows PowerShell:

iex "& { $(irm https://tallyai.money/install.ps1) } -Prerelease"

Or download the zip for your platform below.

Tally v0.1.321

Choose a tag to compare

@github-actions github-actions released this 17 Jan 03:53

What's Changed

Better Parsing Error Diagnostics (Issue #79)

When CSV parsing silently fails, it's frustrating to debug. A small typo in your date format (%Y vs %y) would give you "0 transactions" with no hint what went wrong.

Now tally tells you exactly what's happening:

  • tally up - Shows skip count with hint to use -v for details
  • tally up -v - Breakdown by error type (date parsing, missing fields, etc.)
  • tally up -vv - Individual file:line errors so you can inspect the problematic rows
  • tally diag - New PARSING HEALTH section shows skip statistics

Also fixed: 2-digit year detection in tally inspect now correctly suggests %y vs %Y.

Bug Fixes

  • Fixed Windows test compatibility (temp file handling)

Install

Linux / macOS:

curl -fsSL https://tallyai.money/install.sh | bash

Windows PowerShell:

irm https://tallyai.money/install.ps1 | iex

Or download the zip for your platform below.

See https://tallyai.money for more info.

Tally v0.1.319

Choose a tag to compare

@github-actions github-actions released this 14 Jan 15:57

What's Changed

CSV Export (Issue #30)

Export transactions to CSV for spreadsheets and data analysis:

tally up --format csv > transactions.csv
tally up --format csv --category Food > food.csv

CSV columns: date, description, amount, merchant, category, subcategory, source, tags, plus any extra fields from supplemental sources.

Transform Directive

Override transaction descriptions dynamically in your rules:

[Apple Purchases - Enriched]
match: source("apple_purchases")
transform: " + ".join([r.title for r in m])
category: Entertainment
subcategory: Apple

Before: APPLE.COM/BILL ONE APPLE PARK WAY CA
After: Endel: Focus & Sleep Sounds + Overcast

Original description shown in UI with ✎ indicator on hover.

Supplemental Sources Improvements

Supplemental data sources now only require {date} field - amount is optional:

supplemental:
  - name: apple_purchases
    file: apple_purchases.csv
    format: "{date},{order_id},{title},{price}"

Bug Fixes

  • Fixed CSV header detection for semicolon-delimited files (#77)
  • Improved error messages for let binding and field accessor failures

Install

Linux / macOS:

curl -fsSL https://tallyai.money/install.sh | bash

Windows PowerShell:

irm https://tallyai.money/install.ps1 | iex

Or download the zip for your platform below.

See https://tallyai.money for more info.

Tally v0.1.311

Choose a tag to compare

@github-actions github-actions released this 10 Jan 04:30

Folder and Glob CSV Sources (#76)

Drop CSV files in a folder without merging - tally now supports directory and glob patterns in data sources:

data_sources:
  - name: bank
    file: data/bank/*.csv           # All CSVs in folder
    format: "{date},{description},{amount}"

  - name: credit
    file: data/statements/**/*.csv  # Recursive glob
    format: "{date},{description},{amount}"

Works with all commands: run, explain, discover, and diag.

Thanks to @criemen for the suggestion!

European CSV Support (#70, #72, #77)

The inspect command now correctly handles European-style CSVs with semicolon delimiters and quoted fields:

"Date";"Description";"Amount"
"15/01/2025";"GROCERY STORE";"123.45"

Auto-detection now shows the detected delimiter in suggested config:

Suggested format string:
  format: "{date}, {description}, {amount}"
  delimiter: ";"

Thanks to @FabienDehopre for reporting this issue!

Currency Symbol Detection

tally inspect now detects currency symbols in amount columns and shows them in the analysis.

Tag Collection Fix (#67)

Breaking Change: Tags are now only collected from:

  • Tag-only rules (rules without a category)
  • The winning categorization rule

Previously tags from ALL matching categorization rules were included, which could cause unexpected behavior (e.g., income tag from a non-winning rule).

Thanks to @criemen for identifying this surprising behavior!

Field Transforms for Fees

Support field.amount transforms to handle fee columns:

field.amount = field.amount + field.fee

Other Improvements

  • Smart warnings for expensive glob patterns
  • location is now a regular custom field (not special-cased)
  • Documentation updates for transforms and experimental features

Install

Linux / macOS:

curl -fsSL https://tallyai.money/install.sh | bash

Windows PowerShell:

irm https://tallyai.money/install.ps1 | iex

Or download the zip for your platform below.

See https://tallyai.money for more info.

Tally v0.1.292

Choose a tag to compare

@github-actions github-actions released this 06 Jan 06:45

What's Changed

tally up Replaces tally run

The primary command is now tally up - shorter and clearer. tally run still works but shows a deprecation warning.

# New
tally up --config config/

# Old (deprecated)
tally run config/

Report Diff Feature

See what changed each time you run tally up. Helps catch rule changes, understand version upgrade impacts, and debug "why did my totals change?"

tally up

# Output includes:
# Changes since last run:
#   Totals: spending $45,231 → $46,892 (+$1,661)
#   Merchants: +3 new, 1 removed, 2 tag changes
#   Use --diff for details.

tally up --diff   # Show detailed changes

Consistent Config Resolution

All commands now use the same config detection logic: auto-detect ./config or ./tally/config, with --config flag to override. No more inconsistent positional arguments across commands.

tally up                        # Auto-detect config
tally up --config ~/budget/     # Override location
tally explain Netflix -c config/

Supplemental Data Sources (Experimental)

Enrich transactions with data from other CSV files using Python list comprehensions. Match Amazon transactions to order details, PayPal payments to merchant names, or any cross-reference scenario.

Note: This feature is experimental and will evolve based on feedback.

# settings.yaml
data_sources:
  - name: amazon_orders
    file: data/orders.csv
    format: "{date},{item},{amount}"
    supplemental: true  # Query-only, won't generate transactions
# merchants.rules
[Amazon - Verified]
let: orders = [r for r in amazon_orders if r.amount == txn.amount]
match: contains("AMAZON") and len(orders) > 0
category: Shopping
subcategory: Online
field: items = [r.item for r in orders]  # Add to transaction details

New rule directives:

  • let: - Cache expensive queries in named variables
  • field: - Add computed fields to transactions (visible in HTML report)

Rule Mode Setting

Control how rules are matched when multiple patterns match:

# settings.yaml
rule_mode: first_match    # Default - first matching rule wins
rule_mode: most_specific  # Most specific pattern wins

Subcategory Grouping in HTML Report

Toggle between merchant view and subcategory view in the HTML report. Click the grouping toggle to see spending aggregated by subcategory instead of merchant.

Custom Report Title

Replace year: with title: for custom report headers:

# settings.yaml
title: "2025 Household Budget"  # New
# year: 2025                    # Deprecated

Bug Fixes

  • Fix category percentage calculation when filtering by subcategory
  • Fix popup click propagation in HTML report
  • Fix tally update not offering stable release when on prerelease
  • Fix JSON export crash accessing missing data
  • Fix single-character delimiter handling
  • Fix currency formatting throughout HTML report and CLI

Improvements

  • Cash Flow Summary in CLI output
  • Investment category in monthly trend charts
  • Transactions sorted by date descending within merchant view
  • Quiet mode implied for --format json and --format markdown

Install

Linux / macOS:

curl -fsSL https://tallyai.money/install.sh | bash

Windows PowerShell:

irm https://tallyai.money/install.ps1 | iex

Or download the zip for your platform below.

See https://tallyai.money for more info.

Tally v0.1.244

Choose a tag to compare

@github-actions github-actions released this 02 Jan 01:47
9b3cbda

What's Changed

Enhanced tally inspect Command

The inspect command now sniffs data and provides column analysis:

  • Detects column types: dates (US, ISO, European), currency, numbers, categorical, ticker symbols
  • Shows samples for both positive and negative transactions to understand sign conventions
  • Identifies currency symbols, parentheses notation, mixed decimal formats
  • Handles CSVs without headers by generating synthetic column names
tally inspect transactions.csv

Combined Filters for tally explain

Filter explanations by multiple criteria simultaneously:

tally explain --month Jan --category Food config/
tally explain --month 2024-01 --location "New York" config/

{*} Alias for Skip Columns (#61)

Format strings now accept {*} as an alias for {_} to skip columns. This improves compatibility with AI-generated configurations.

Enhanced CLI Output

  • Cash flow section (income, transfers, net)
  • Credits/refunds section for negative totals
  • Monthly breakdown table
  • Category percentages against gross spending
  • Enhanced JSON/markdown exports with by_month, by_category, credits

Improvements

  • Tag badge colors: Tags now get unique colors assigned by frequency
  • Autocomplete clarity: Categories and subcategories are now visually distinguished in the HTML report filter

Bug Fixes

  • Fix chart aggregations incorrectly including negative amounts (credits/refunds)
  • Fix cash flow calculation to properly exclude transfers
  • Fix negative sign display on transfers in Cash Flow card (#57)
  • Fix Windows install script failure with 8.3 short paths (#59)

Breaking Changes

  • Removed home_locations/travel_locations: The automatic travel detection feature has been removed. A deprecation warning will appear if your config uses these settings. Track travel via user-defined categories in merchant rules instead.

Install

Linux / macOS:

curl -fsSL https://tallyai.money/install.sh | bash

Windows PowerShell:

irm https://tallyai.money/install.ps1 | iex

Or download the zip for your platform below.

See https://tallyai.money for more info.

Tally v0.1.226

Choose a tag to compare

@github-actions github-actions released this 01 Jan 18:07

What's Changed

New Feature: Weekday Filter

Filter transactions by day of week using the new weekday variable (0=Monday through 6=Sunday):

[Starbucks - Work]
match: contains("STARBUCKS") and weekday < 5
category: Food
subcategory: Coffee
tags: work

[Starbucks - Weekend]
match: contains("STARBUCKS") and weekday >= 5
category: Food
subcategory: Coffee
tags: personal

Bug Fix: Tag Filtering Now Works at Transaction Level

Fixed a bug where filtering by tag (e.g., t:david) showed all transactions from a merchant if any transaction had that tag. Now it correctly filters to show only transactions with the matching tag.

This enables per-cardholder spending views and similar use cases where different transactions from the same merchant have different tags.

Documentation

  • Documentation moved from README to tallyai.money
  • Added quickstart guide, reference docs, and format examples
  • Improved install UX and mobile navigation

Install

Linux / macOS:

curl -fsSL https://tallyai.money/install.sh | bash

Windows PowerShell:

irm https://tallyai.money/install.ps1 | iex

Or download the zip for your platform below.

See https://tallyai.money for more info.

Tally v0.1.219

Choose a tag to compare

@github-actions github-actions released this 01 Jan 10:10
c06b6b1

Tally is Now Fully Customizable

This release removes all built-in classification assumptions. Previously, tally had hardcoded rules for what counts as "monthly" vs "variable" spending, which categories to exclude, and how to calculate averages. That's all gone.

Now, you and your LLM define everything. Tally provides the engine; you write the rules that match how you think about your money.

merchants.rules — Extract, Clean, Match, Tag

One file to control how transactions are processed:

[Netflix]
match: normalized("NETFLIX")
category: Subscriptions
subcategory: Streaming
tags: entertainment, recurring

[Amazon Large Purchase]
match: anyof("AMAZON", "AMZN") and amount > 500
category: Shopping
subcategory: Large
tags: big-purchase

[Uber Rides]
match: regex("UBER\\s(?!EATS)")
category: Transport
subcategory: Rideshare
tags: business

Match functions: normalized() (ignores spaces/punctuation), anyof(), startswith(), fuzzy(), contains(), regex()

views.rules — Visualize Your Way

Define views that make sense to you:

[Monthly Bills]
description: Consistent recurring expenses
filter: months >= 6 and cv < 0.3   # cv = amount consistency (lower = more consistent)

[Business Expenses]
description: Expenses to submit for reimbursement
filter: tags has "business"

[Big Purchases]
description: Major one-time expenses
filter: total > 1000 and months <= 2

⚠️ Breaking Changes

Transactions may need re-categorization. Built-in classification rules have been removed—merchants that were previously auto-categorized may now appear as "Unknown" until you add rules for them.

Old rule formats will warn or fail when unsupported features are used. If you see warnings:

  1. Use your LLM to migrate — paste the warning and your old config, ask it to update
  2. Run tally discover to find merchants that need rules
  3. tally reference shows the complete new syntax

UI Improvements

  • Text search, sortable columns, category color dots
  • Credits/refunds shown separately
  • Match info popups show which rule matched

Install

Linux / macOS:

curl -fsSL https://tallyai.money/install.sh | bash

Windows PowerShell:

irm https://tallyai.money/install.ps1 | iex

Or download the zip for your platform below.

See https://tallyai.money for more info.

Tally v0.1.140

Choose a tag to compare

@github-actions github-actions released this 30 Dec 05:21

What's Changed

  • tally workflow command - context-aware instructions based on your budget state
  • Simplified setup (removed AGENTS.md, CLAUDE.md, README.md generation)
  • Terminal demo added to website
  • Fixed macOS arm64 detection and prerelease update mechanism
  • Improved Windows Unicode support

Install

Linux / macOS:

curl -fsSL https://tallyai.money/install.sh | bash

Windows PowerShell:

irm https://tallyai.money/install.ps1 | iex

Or download the zip for your platform below.

See https://tallyai.money for more info.

Tally v0.1.125

Choose a tag to compare

@github-actions github-actions released this 30 Dec 02:52

What's Changed

Improved tally init Experience

The init command now provides a much better first-run experience:

Colored Output

  • Green checkmarks for created files, yellow arrows for existing files
  • Syntax highlighting for paths and commands
  • Clickable hyperlinks for agent install URLs (in supported terminals)

Smart Guidance

  • Fresh init: Full guide with data sources + agent setup steps
  • Config exists without data: Prompts to add CSVs and configure yaml
  • Fully configured: Just shows tally run or tally discover

Agent Detection

Shows which AI coding agents are already installed on your system:

  3. Open this folder in an AI agent:
     claude      Claude Code      ✓ installed
     copilot     GitHub Copilot   ✓ installed
     opencode    OpenCode         https://opencode.ai
     codex       OpenAI Codex     ✓ installed

Bug Fixes

  • Fixed macOS arm64 detection: Self-update now correctly downloads the arm64 binary on Apple Silicon Macs instead of always downloading amd64

Install

Linux / macOS:

curl -fsSL https://tallyai.money/install.sh | bash

Windows PowerShell:

irm https://tallyai.money/install.ps1 | iex

Or download the zip for your platform below.

See https://tallyai.money for more info.