Repository navigation
Config Reference
brookie edited this page Nov 6, 2026
·
3 revisions
Every section and field of a plan's config. All amounts are per month unless noted. Fields with a default can be left out. Unknown fields are reported as errors. See Plan Folder for how the files are organized.
- Sections at a glance
- plan
- household.partners
- household.children
- other_income_monthly
- savings
- investments
- assumptions.retirement
- assumptions.college
- sources
- categories
- rules
- default_category and default_credit_category
- Complete example
| Section | Usually in | What |
|---|---|---|
plan |
config.yaml | Titles and time window |
household |
config.yaml | Partners and children |
other_income_monthly |
config.yaml | Other take-home income |
savings |
config.yaml | Monthly savings transfers |
investments |
config.yaml | Brokerage / stock accounts |
assumptions |
config.yaml | Retirement and college assumptions |
sources |
sources.yaml | CSV layouts |
categories |
categories.yaml | Categories |
rules |
rules.yaml | Categorization rules |
default_category, default_credit_category
|
config.yaml | Fallback categories |
| Field | Default | Meaning |
|---|---|---|
title |
Household Budget |
Page title. |
subtitle |
generated | Line under the title. Empty: generated from your data, e.g. "Built from Visa card and Checking (1,204 transactions, Jan 25 – Dec 25). Take-home pay: Partner A (pay stub)." |
months |
12 |
Average over N months of transactions (1–120). |
last_month |
month of the newest transaction | Last month of the averaging window, YYYY-MM. Set it to leave out a partial month at the end of an export. |
today |
month after the window | The plan's "now", YYYY-MM. Drives ages, graduation timing and projections. |
currency_symbol |
$ |
Shown before amounts. |
One or more. The first is the primary partner: the retirement slider is their age, and everyone retires in the same calendar year.
| Field | Default | Meaning |
|---|---|---|
name |
(required) | Display name. Prefer generic (Partner A). |
id |
slug of name | Stable key used by saved state; set it if you'll rename people. |
age |
(required) | Age today. |
take_home_monthly |
0 |
Net pay per month. |
take_home_note |
'' |
Shown next to the planner input. |
raise_pct |
0 |
Yearly raise above inflation, until retirement. |
social_security |
See below. | |
pensions |
[] |
See below. |
accounts |
[] |
See below. |
| Field | Default | Meaning |
|---|---|---|
at_67 |
0 |
Monthly benefit at full retirement age, today's dollars. |
claim_age |
none | 62–70. Empty = claim when retiring, not before 62. |
| Field | Default | Meaning |
|---|---|---|
name |
Pension |
Label. |
estimates |
{} |
Monthly benefit by retirement age, e.g. {55: 900, 60: 2800, 65: 5800}. |
monthly |
none | A flat monthly amount instead of estimates. |
service_years_now |
none | Years of service today; after the last estimate age the benefit grows in proportion to service. Without it, it stays flat. |
grows_with_raises |
true |
Scale with the partner's real raises (final-pay formulas). |
| Field | Default | Meaning |
|---|---|---|
name |
Retirement account |
Label. |
balance |
0 |
Balance today. |
monthly |
0 |
Added each month until retirement. |
household:
partners:
- name: Partner A
age: 46
take_home_monthly: 7200
take_home_note: pay stub
social_security: {at_67: 3100}
pensions:
- {name: Pension, estimates: {55: 800, 60: 1900, 65: 3400}, service_years_now: 9}
accounts:
- {name: Old 401(k), balance: 148000}
- name: Partner B
age: 44
take_home_monthly: 4100
social_security: {at_67: 2400, claim_age: 67}
accounts:
- {name: 403(b), balance: 61000, monthly: 600}| Field | Default | Meaning |
|---|---|---|
name |
(required) | Prefer generic (Child 1). |
id |
slug of name | Stable key. |
age |
(required) | Age today. |
hs_graduation |
estimated | High-school graduation YYYY-MM. If empty: June of the year they reach graduation_age (counting from plan.today). |
college_529 |
{balance: 0, monthly: 0} |
Balance today and contribution per month. |
school |
public |
A key in assumptions.college.schools. |
note |
'' |
Extra text on the 529 card. |
children:
- {name: Child 1, age: 12, college_529: {balance: 38500, monthly: 500}, school: public}A number (default 0): other take-home income per month.
| Field | Default | Meaning |
|---|---|---|
name |
(required) | Label in the planner. |
id |
slug of name | Stable key. |
monthly |
0 |
Per month. |
stops_at_retirement |
true |
Stop contributions at retirement. |
| Field | Default | Meaning |
|---|---|---|
name |
Investments |
Label. |
id |
slug of name | Stable key. |
balance |
0 |
Balance today. |
return_pct |
0 |
Its own yearly return; 0 = off until you choose one. |
monthly |
0 |
Added each month until retirement (shown in the planner's Savings). |
| Field | Default | Meaning |
|---|---|---|
return_pct |
5.5 |
Yearly investment return. |
inflation_pct |
3 |
Yearly inflation. |
withdrawal_pct |
4 |
Yearly withdrawal rate in retirement. |
tax_pct |
12 |
Overall income tax rate in retirement. |
health_insurance_monthly |
0 |
Health insurance after retiring. |
default_age |
65 |
Starting retirement age of the primary partner (40–80). |
presets |
see below | Named return / inflation pairs. |
Default presets:
presets:
pessimistic: {name: Pessimistic, return_pct: 4.5, inflation_pct: 3.5}
mid: {name: Mid, return_pct: 5.5, inflation_pct: 3}
optimistic: {name: Optimistic, return_pct: 7, inflation_pct: 2.5}| Field | Default | Meaning |
|---|---|---|
schools |
see below | School types and yearly cost of attendance today. |
presets |
see below | Return / college-cost-growth pairs. |
default_preset |
mid |
Preset each child starts on. |
graduation_age |
18 |
Used when hs_graduation is empty. |
years |
4 |
Years of college (1–8). |
schools:
public: {name: Public in-state, cost: 30000}
flagship: {name: Flagship in-state, cost: 45000}
private: {name: Private, cost: 65000}
presets:
pessimistic: {name: Pessimistic, return_pct: 4, inflation_pct: 5}
mid: {name: Mid, return_pct: 6, inflation_pct: 4}
optimistic: {name: Optimistic, return_pct: 8, inflation_pct: 3}For college presets, inflation_pct means college-cost growth.
| Field | Default | Meaning |
|---|---|---|
name |
(required) | Label. |
files |
(required) | File name(s) or glob(s), relative to the plan folder. String or list. |
date.column |
(required) | Date column. |
date.format |
detected |
strptime format, e.g. '%m/%d/%Y'. |
description |
(required) | Column or list of columns (joined with a space). |
amount.column |
A single signed amount column… | |
amount.outflow |
negative |
…where money out is negative or positive. |
amount.debit / amount.credit
|
…or separate money-out / money-in columns. | |
category_column |
none | The bank's own category column. |
category_map |
{} |
Bank category → plan category, used when no rule matches. |
skip_rows |
0 |
Lines before the header row. |
encoding |
utf-8-sig |
File encoding. |
delimiter |
, |
Field separator. |
Details and examples: Data Sources.
| Field | Default | Meaning |
|---|---|---|
name |
(required) | Unique. |
kind |
spending |
spending, one_time, credit or ignore. |
group |
Other |
Planner heading. |
flexible |
false |
Trimmed by "Try 10% less". |
kids_gone_pct |
0 |
% change once all children are out. |
retired_pct |
0 |
% change after retiring. |
default_on |
false |
One-time / credit: counted by default. |
in_retirement |
false |
One-time / credit: continues after retiring. |
tax |
false |
One-time: part of the tax set-aside. |
offsets |
none | Credit only: a spending or one-time category it reduces. |
label |
none | Toggle text. |
note |
none | Small print. |
Details: Categories.
Exactly one of:
| Field | Meaning |
|---|---|
row |
A transaction id: "this transaction is X". |
equals |
Field equals the text. |
contains |
Field contains the text. |
matches |
Field matches the regular expression. |
similar_to |
Field is similar to the text. |
Plus:
| Field | Default | Meaning |
|---|---|---|
category |
(required) | Category to assign. |
field |
description |
description, category, source, date, amount, any CSV column, or *. |
threshold |
0.85 |
For similar_to (0–1). |
case_sensitive |
false |
|
source |
none | Only rows from this source. |
direction |
none |
debit (money out) or credit (money in). |
min_amount / max_amount
|
none | Absolute amount limits. |
note |
none | Free text. |
Details: Categorizing and Rules.
| Field | Default | Meaning |
|---|---|---|
default_category |
Other |
Category for money out that nothing matched. |
default_credit_category |
Other credits |
Category for money in that nothing matched (a credit). |
The demo plan in the repository is a complete, working example: examples/demo/config.
Getting started
Using the app
- Tour of the App
- Monthly Planner
- Explore Spending
- College 529s
- Retirement
- Spending Over Time
- Scenarios and Sharing
Setting up your plan
- Plan Folder
- Settings Editor
- Data Sources (CSVs)
- Categories
- Categorizing and Rules
- Setup with an AI Assistant
Reference