Vekfinance, end to end
Connect a bank, click Auto-categorize, set a budget, then ignore the app for a week. Everything else builds on those four moves. Skim the headings, jump to what you need.
Quick start (5 minutes)
The only four moves a new user needs.
- 1
Sign up
Username, password (8+ chars), and an email. The email is optional but if you forget your password without one, you're locked out, there's no self-serve recovery.
- 2
Skip what doesn't apply
Onboarding asks for employer + pay frequency, debts, and budget targets. All optional. Fill in what you have, add the rest from Settings later.
- 3
Connect a bank
On the Bank Sync tab (covered next). Or drop a CSV onto /import. Both work. Bank Sync is set-and-forget.
- 4
Open /transactions
The first visit runs the auto-categorizer in the background, most rows get categorized without you doing anything. Then set monthly targets on /budget so the dashboard's pace card means something.
That's the whole flow. Everything below is depth on the same features, plus the advanced stuff (debt payoff planning, investments, AI chat, monthly close).
01
Connecting your bank
The fastest way to get your transactions in.
The fastest way to get your transactions in is to connect your bank directly via the Bank Sync tab in Settings. Vekfinance uses Plaid, a US bank-aggregation service. It supports most major US banks (Chase, Bank of America, Wells Fargo, USAA, Capital One, Citi, Discover, US Bank, PNC, and dozens more).
Connect once. From then on, transactions sync automatically (a daily worker plus webhook-driven updates whenever the bank notifies us). You don't need to upload anything.
Account types
Checking, savings, credit cards
Sync cadence
Daily + webhook push
History depth
USAA ~18mo, Chase ~12mo, varies
Loan support
Not via Bank Sync, manual
Credit card sign convention
Loans aren't supported via Bank Sync
02
CSV import
For banks Plaid doesn't reach, or one-off history loads.
For banks that aren't in Plaid, for accounts older than the Plaid window, or for one-off historical imports, drag CSV files onto /import. Multiple files in one drop.
We auto-detect the column layout for Chase, Bank of America, Wells Fargo, Capital One, and Discover. Anything else falls through to a column-mapping UI where you tell us which columns are date, description, and amount.
A preview shows up before commit: parsed transactions, auto-categorization guesses with confidence scores, and any duplicates already in your database (those get skipped). Dedupe matches on date + payee + amount within the same account.
Identical same-day purchases collapse
03
How categorization works
Three deterministic tiers, in order. The first hit wins.
Vekfinance categorizes transactions in three deterministic tiers, in order. Nothing leaves your encrypted boundary at this step: no transactions are sent to any model. The first tier that hits wins:
- 01
Your learned rules
Every time you confirm or change a category, we save a rule (payee → category). Future transactions from the same payee auto-apply at 100% confidence.
- 02
Bank-side hint
Plaid transactions include the bank's own category ("dining", "groceries", etc). We map those to our seed categories at 95% confidence.
- 03
Built-in merchant dictionary
~150 well-known US merchants are hardcoded (STARBUCKS → Eating Out, NETFLIX → Subscriptions, SHELL → Transportation, KROGER → Groceries, etc). Hits at 95%.
- 04
Review queue
Anything the three deterministic tiers do not resolve lands in a one-tap review queue. Your choice creates a rule for next time, so the system gets sharper without ever sending a transaction off your server.
Anything below 95% goes into the review queue (next section). Anything 95+ applies silently and shows up auto-categorized.
The Auto-categorize button
04
The review queue
Confirm AI guesses in one click each.

Anything below 95% confidence lands in the review queue. They're hidden from the dashboard, donut chart, budget bars, and monthly-close calculations until you confirm a category, so your reports never have AI guesses skewing them.
Open /transactions and click Review Queue at the top. The month filter automatically widens to "All months" because the queue is inherently cross-month.
Three ways to clear queue items:
- Green ✓ checkmark next to each row's yellow category dropdown: one-click "the AI got it right." Creates a category rule for the payee.
- Pick a different category from the yellow dropdown: corrects the AI's guess and creates a rule for the new mapping.
- Bulk "Confirm as-is": tick multiple rows (or hit "Select all on this page"), skim, then confirm every selected row at its current category in one click.
The bulk recategorize dropdown
05
The transactions page
Search, filter, edit, bulk-categorize.
/transactions filters by month, account, category, queue-only, and free-text search. 50 rows per page.
- Mobile-friendly: the filter bar collapses to a single "Filters" sheet on small screens.
- "All months" in the month dropdown shows the entire history; activating Review Queue selects it automatically.
- Click any row to open the detail modal, edit description, date, amount, type, account, category, and notes.
- Closed months are locked. Once you close a month (see Monthly close), transactions in that range can't be edited or deleted until you unlock from the close summary. Use this as a safety rail.
- Source icons: a receipt icon marks a row logged from a receipt (a legacy import; receipt scanning is no longer offered); nothing for CSV / Plaid / manual.
06
The dashboard
Your money at a glance.

Top to bottom:
- Summary strip: income received, spent, unallocated (income − spending), and net worth (= checking + investments − liabilities). The income / spent figures exclude internal transfers and credit-card payments so they reflect real external cashflow.
- Spending pace: how this month tracks against your trailing 3-month average at the same point in the month.
- Runway: how many months your checking would last at the trailing 3-month non-debt spending rate if income stopped.
- Debt cards: every debt account with current balance, projected payoff date under avalanche, and how that date has shifted since last month (better/worse).
- Payoff goals: active user-set goals with status pills and this-month progress bars. Manage on the Debts page.
- Net worth over time: historical line from your closed months plus a projected dashed line (investments compounding at 7%/yr, no new contributions, debts paid at current minimums via avalanche). Needs 2+ closed months before it renders.
- Cash flow forecast: projected daily checking balance for 30/60/90 days. Computed from detected recurring debits plus your paycheck rhythm. Goes red on any projected-negative day.
- Spending donut: this month's expenses by category, sorted largest first.
07
Net worth and trends
See your total net worth move over time

The Net Worth page tracks your assets minus your debts as a single line over time, drawn from a daily snapshot so you can watch the trend instead of guessing at it. Toggle the range between one month, three months, one year, and all time.
Anything Plaid does not see (a house, a car, a private loan) you can add as a manual asset or liability, and it folds into the same total, so the number reflects your whole financial picture and not just your linked accounts.
08
Setting a budget
Monthly targets with trailing-six sparklines.

On /budget, every expense category has: monthly target (editable inline), spent this month, and a six-month trailing sparkline. Click a category to expand the transactions in it.
The 16 default categories cover most household budgets: Housing, Utilities, Transportation, Groceries, Eating Out, Subscriptions, Entertainment, Travel, Personal, Medical, Insurance, Transfers, and Debt Payments (a catch-all for loans and cards), plus W2 Income and Side Income, and Uncategorized. Add your own any time.
Add your own categories at the top of the page or in Settings → Categories. Deleting a default category prompts for a reassignment target so old transactions don't become orphans.
Not zero-based envelope budgeting
09
Savings goals
Set a target and track your pace toward it

Savings goals let you name a target (an emergency fund, a vacation, a down payment), set the amount, and track how much you have saved against it. Each goal shows progress, and if you set a target date it shows the monthly pace you need to get there on time.
Goals are separate from your debt payoff plan, so saving toward something and paying down balances each have their own clear view.
10
Paying off debts
Avalanche vs snowball, with goals.

The /debts page is the serious-payoff cockpit. At the top, toggle between:
Avalanche
Extra cash to highest-APR debt first. Cheapest. Usually wins.
Snowball
Extra cash to smallest-balance debt first. Costlier but motivating.
Below the toggle, each debt has a per-card extra-payment slider. Projected payoff dates and total interest recompute live as you drag. The bottom strip compares avalanche vs snowball total-interest; usually clear which is cheaper, but pick the one you'll stick with.
Set a goal, get the exact payment
11
Personal and business, kept separate
Run your money and your business books in one app

Tag any account as business and it stays out of your personal totals, budget, and net worth, so a business loan never skews your personal payoff plan. The Business Taxes page gives you a profit and loss view, a self-employment tax set-aside on every deposit, and a category-mapped summary you can export.
It is built for freelancers and solo founders whose personal and business money are really the same money, without forcing you to juggle two apps.
12
Tracking investments
Portfolio, performance, projections, and pay-vs-invest.

/investments connects your brokerages and retirement accounts and turns them into an advisory-grade dashboard. Connect via Plaid for automatic holdings, balances, dividends, and transactions, or add positions by hand. Four tabs:
- Portfolio: holdings grouped by account with live value, cost basis, and gains; asset-allocation donut; an AI portfolio analysis (diversification score, concentration warnings, concrete suggestions); a fund-fee breakdown showing what you pay in expense ratios each year; dividend income; and tax-loss harvesting that flags underwater lots in taxable accounts.
- Performance: portfolio value over time against a market-average benchmark, monthly returns, an "assets vs debt" crossover, and a full activity feed of buys, sells, dividends, and fees.
- Projections: a compound-growth simulator with a FIRE target (25x your expenses) that shows your progress and years to financial independence. Toggles for inflation and tax drag.
- Crypto: track coins (BTC, ETH, SOL, and more) with live prices from CoinGecko. Add a coin with an amount and cost basis; it is valued immediately and folded into your net worth alongside cash and investments.
- Compare: simulates "pay debt first" vs "invest now" over a horizon you pick.


The AI analysis is the standout
13
Subscription detection
Monthly + annual recurring charges, auto-flagged.

On /subscriptions we surface payees that look like recurring subscriptions:
Monthly rule
3+ distinct months in last 6, amounts within 10%. Subscriptions/Fitness categories get a usage-variance pass.
Annual rule
2+ occurrences spanning 9+ months in last 13, amount > $40, consistent within 10%.
Categories like Transfers, Credit Card Payment, and Bank Fees are excluded from detection no matter how regular the cadence, those aren't subscriptions you can cancel.
Suppress a false positive
14
Reports + custom charts
10 built-ins plus a custom builder.

/reports ships ten built-in charts (spending trends, income vs expenses, debt paydown rate, savings rate, daily heatmap, top merchants, money flow sankey, year-over-year, recurring vs discretionary, and category trend signals). Each is collapsible, open the ones you care about.
Below the built-ins, the custom report builder lets you compose: pick X-axis (month, category, or account), Y-axis (total spent, total income, net cash flow, transaction count, or debt balance), chart type (bar / line / area / donut), date range, and optional filters. Save up to 10 reports for one-click recall.
The builder is deterministic
15
Privacy and the AI boundary
What the AI sees, what it never sees, and how to verify it.
Vekfinance has exactly one feature that talks to an external AI model: the assistant (it appears as the chat, the monthly close insight, and the portfolio analysis). Everything else, including categorization and the report builder, runs deterministically on your own server inside the encryption boundary.
Before any AI request, your finances are reduced, on our server, to a de-identified summary: coarse money bands (for example "$10k to $25k"), rounded ratios, generic category labels, and relative time periods. That summary, plus the question you type, is the only thing sent to the model. Raw transactions, merchant or payee names, account names or numbers, exact balances, tickers, and images never leave.
Verify it yourself
16
The AI assistant
Direct answers grounded in your numbers.
Click the sparkle icon in the bottom-right (desktop) or the floating button above the bottom nav (mobile) to open the chat panel. On mobile it slides up as a bottom-sheet covering most of the screen.
Each message ships a de-identified summary of your financial picture (coarse money bands, rounded ratios, generic category labels, relative time periods, and trend descriptors) plus your question to Anthropic, and streams the response back. It never sends your raw transactions, merchants, account names, or exact balances. See section 12 for the full boundary.
The assistant is direct on purpose: no filler, no "you should consider", no disclaimers, no em-dashes. It reasons over the bands and trends in your summary rather than making up generic advice. It also refuses off-topic requests (recipes, code help, jailbreak attempts), those bounce with a one-line redirect.
Not a financial advisor
17
Closing the month
Snapshot + lock + PDF report.
From the 25th of each month onward, a Close month button appears on the dashboard. Clicking it opens a summary modal with this month's income, spending, debt payments, budget vs actual by category, and an AI-generated one-paragraph insight (with a deterministic fallback if no API key is configured).
On confirm, we write a monthly snapshot (income, expenses, debt paid, liabilities total, investments total, checking total, AI insight) and lock every transaction in that month so it can't be accidentally edited. A PDF report is generated client-side for download.
Unlock to edit later
18
Settings: email, password, data
Profile, accounts, categories, rules, bank sync.
/settings has five tabs:
Profile
Email, password, two-factor + backup codes, active sessions. All writes require current password.
Accounts
Add / edit / archive checking and debt accounts. Archived retains history but hides from aggregations.
Categories
Add / edit / delete. Delete prompts for a reassignment target so old transactions stay categorized.
Rules
Learned payee → category rules. Delete the ones that mis-categorize and they stop auto-applying.
Bank Sync
Connect / reconnect via Plaid, see last-sync status, trigger manual sync, disconnect.
Outside the tabs:
- Download my data, JSON file with every account, transaction, category, rule, debt, investment position, goal, monthly snapshot, and custom report. Password hash and sessions are excluded.
- Danger zone, Delete account, permanent and immediate. Requires password confirmation. Cascades through every related table.
19
Tips, shortcuts, lesser-known features
The hidden quality-of-life stuff.
- Cmd / Ctrl + K opens the command palette, fastest way to jump between pages or trigger common actions.
- ? tooltips next to most metrics link straight to their guide section so you can learn what a number means without leaving the page.
- One-shot AI re-categorization: visit /transactions on a fresh account and the auto-categorizer fires once automatically. After that, click Auto-categorize any time to re-evaluate everything.
- Confirm AI guesses without picking a category: green ✓ next to each queue row, or the bulk "Confirm as-is" in the selection bar.
- Add a new category anywhere a category dropdown appears (transaction detail modal, budget page, onboarding budget step), saves a round-trip to Settings.
- Custom acquisition links: append ?ref=yourtag or ?utm_source=somewhere to any URL. The tag survives navigation and is attributed at signup.
- The dashboard chart only renders after at least two monthly closes (Performance + Net worth chart). If yours is blank, that's why.
20
What Vekfinance is NOT
Honest expectation-setting.
Setting expectations honestly:
Not a financial advisor
AI assistant makes observations from your data; it doesn't give regulated advice.
Not envelope budgeting
No rollover buckets; monthly targets are aspirational, not literal envelopes.
No live stock prices
You update positions manually. Live prices means trusting another provider, not there yet.
No auto-pay or scheduling
Vekfinance reads your data; it doesn't move money.
No loan support via Bank Sync
Plaid doesn't cover most servicers. Track loans manually.
Households cap at six
A household links up to 6 people, each private and read-only. There is no unlimited-size or fully merged shared account.
21
Troubleshooting
Common issues and the actual fix.
›I forgot my password and didn't set a recovery email.
The administrator has to manually edit your password hash in the database. There's no self-serve flow. Add an email next time, it's the single most important account-recovery setting.
›The dashboard charts are blank.
Net worth over time and Performance need at least two closed months. The cash-flow forecast needs at least one paycheck-source checking account with a detected paycheck pattern.
›A transaction won't let me edit it.
It's in a closed month. Open the close summary for that month and click Unlock, or change the transaction's date to an open month.
›My credit card transactions look backwards.
Should be fixed, purchases display as debit, payments display as credit regardless of issuer. If a specific row looks wrong, edit it from the detail modal.
›Auto-categorize put something in the wrong bucket.
Pick the right category from the dropdown on that row, that both fixes the transaction AND saves a learned rule so future imports of the same merchant land in the new bucket.
›I see "rando stuff" on the subscriptions page.
Should be fixed. If a real subscription is missing, it likely has fewer than 3 distinct months of charges in our 13-month window, or its amount varies more than the threshold allows. Once it's recurring long enough, it'll appear.
›The income number on the dashboard looks too high.
Should also be fixed, we exclude internal transfers and credit-card payments. If you still see something off, check /transactions for a credit miscategorized into a non-Transfers bucket.
›The AI assistant isn't responding.
The instance needs an Anthropic API key configured. If you're self-hosting, set ANTHROPIC_API_KEY in /etc/vekfinance.env. Without it, the assistant returns 503 and the monthly close insight falls back to a deterministic in-boundary summary. Categorization and reports do not use AI and are unaffected.
›Bank Sync says "disconnected."
The bank revoked our access. Most common reason: you changed your bank password recently, or the bank's consent expired. Reconnect from Settings → Bank Sync.
Still stuck? Email [email protected] with the page URL, what you tried, and what happened.