SpendifiAI is an AI personal finance app that pulls in your bank transactions through Plaid or an uploaded PDF or CSV statement, has Claude categorize every one of them, and only asks you about the ones it is unsure of. From that categorized ledger it finds recurring subscriptions, suggests where to cut, and builds a tax package for your accountant: a five-tab Excel workbook, a PDF summary and a CSV, with deductible spending mapped to IRS Schedule C lines.
We built SpendifiAI at Parkk Technology on Laravel 12, React 19 and PostgreSQL. This article covers what the app does, how each part works in the code, and where its limits are. Most AI budgeting apps give you a chatbot on top of a spreadsheet. The work here went into the plumbing underneath: getting clean data in, deciding when the AI can be trusted on its own, and producing files an accountant can use as they are.
What Is an AI Personal Finance App?
An AI personal finance app reads your transactions and does the sorting you would otherwise do by hand: what category a charge belongs to, whether it is business or personal, whether it repeats, and whether it matters at tax time. Older budgeting tools do this with fixed rules and merchant lists, so they file every Amazon order under “Shopping” and every Venmo payment under “Transfer.” A language model can read the merchant name, the amount, the account it came from and any matching order email, and reason about what the charge probably was.
The catch is that a language model is also confidently wrong some of the time. A useful AI finance app needs a policy for that. SpendifiAI’s policy is a confidence score on every decision, with fixed thresholds that decide whether the answer is saved, flagged, or turned into a question for you.
What SpendifiAI covers
| Area | What it does | Key figure |
|---|---|---|
| Getting data in | Plaid bank connection, PDF or CSV statement upload, or both | 2 paths |
| Categorization | Claude assigns a category, business or personal, deductibility and a confidence score | 0.85 to auto-save |
| Subscriptions | Detects recurring charges and notices when billing stops | 4 billing cycles |
| Savings | Suggests what to cancel, reduce or keep | 90 days analyzed |
| Dashboard | Budget waterfall, monthly bills, home affordability, “Where to Cut” | 4 views |
| Taxes | Schedule C mapping, export, email to your accountant, a vault for tax forms | 5-tab workbook |
| Security | Encryption at rest, TOTP two-factor login, reCAPTCHA v3, rate limits | AES-256-CBC |
How Does SpendifiAI Get Your Bank Transactions?
There are two ways in, and both feed the same categorization engine. A user can pick either one or use both at once.
Plaid connection
automatic
- Setup
- Log in to your bank through Plaid Link
- Updates
- Daily scheduled sync plus Plaid webhooks
- Coverage
- US institutions Plaid supports
- Stored credentials
- Plaid access token, encrypted with AES-256-CBC
Statement upload
manual
- Setup
- Drop in a PDF or CSV statement
- Updates
- Whenever you upload the next statement
- Coverage
- Any bank that issues a statement
- Stored credentials
- None, no bank login is shared
How does Plaid work with a finance app?
Plaid sits between the app and your bank. You sign in to the bank inside Plaid’s own window, and SpendifiAI receives an access token rather than your bank password. SpendifiAI requests Plaid’s transactions and statements products for US accounts. It stores the token encrypted, runs a scheduled sync every night, and accepts Plaid webhooks at /api/v1/webhooks/plaid so new transactions can arrive between syncs.
Importing PDF and CSV bank statements
Some people can’t use Plaid because their credit union isn’t supported, and some just don’t want to link a bank. For them, the upload wizard turns a statement into transactions: the statement text (extracted with pdftotext, or the PDF itself) goes to Claude, which pulls out each dated transaction, and the result joins the same queue as Plaid data. The upload pipeline also spots gaps between statements and warns you when a month is missing. That pipeline gets its own write-up in how SpendifiAI imports bank statements.
How Does AI Categorize Transactions?
Transactions go to Claude in batches of 25, with a short pause between calls to stay under rate limits. Each transaction carries its merchant, amount, date, description, payment channel, Plaid’s own category guess, the name of the account, and that account’s purpose: personal, business, mixed or investment. If an order-confirmation email has been matched to the charge, the items from that order go along too.
Claude sends back a category, a normalized merchant name, business or personal, whether the charge is tax deductible and on which tax line, whether it looks like a subscription, and a confidence score from 0 to 1. What happens next depends only on that score.

config/spendifiai.php.Confidence scoring: when the AI asks you
At 0.85 or above, the category is saved and marked auto-categorized. You never see it unless you go looking. Below 0.85 the transaction is saved with its best guess and flagged for review. Below 0.60 the prompt requires Claude to write a question with answer options. The question can be about the category, business or personal, a split, or a plain confirm. You answer it in the app, as a multiple-choice pick or in free text, and SpendifiAI interprets the reply.
The prompt also changes confidence based on account purpose. A charge on an account marked business gets +0.15 toward a business category, and a charge on a personal account gets +0.15 toward a personal one. A mixed-use account gets 0.10 taken off, so it produces more questions, which is what you want when a card pays for both groceries and client lunches. If an order email is matched to the charge, Claude is told to score it 0.95 or higher, because it can see exactly what was bought.
When you answer a question, SpendifiAI copies your category, expense type and deductibility to every other transaction from the same merchant that you haven’t already confirmed, and closes any pending questions about them. You answer “Is this Costco run business or personal?” once, not every month.
The 55 categories behind the model
Claude doesn’t make up category names. It chooses from a seeded list of 55 categories in 13 groups, from Housing and Transportation to a Business Expenses group whose six categories exist mainly for tax purposes. Twelve categories are flagged as typically deductible and carry a tax line, such as Schedule C Line 24b for business meals or Line 18 for office expenses. Because the list is fixed, the tax export can map each category to a line in code instead of asking the model.

ExpenseCategorySeeder. The business expenses group is the one the Schedule C export leans on most.Finding Subscriptions and Money to Save
Once transactions are categorized, a nightly job scans them for recurring charges on weekly, monthly, quarterly and annual cycles. It checks against known merchants such as streaming services, utilities and insurers, and also detects repeat patterns from unknown merchants by frequency. It watches for the opposite as well: a charge that used to recur and has stopped arriving. That can mean a cancellation went through or a card was declined, and either one is worth knowing. Each subscription is marked essential or non-essential and tracked as active, unused or cancelled.
The subscription view has been rebuilt several times since launch: a Cancelled tab, an upcoming-payments carousel, and an April 2026 overhaul of detection, de-duplication and cancellation. The details are in how SpendifiAI tracks and cancels subscriptions.
Savings recommendations you can act on
The savings analyzer reads the last 90 days of categorized spending and returns specific suggestions: this subscription, this category, this cheaper alternative. It suggests up to four alternatives per item and caches them for seven days. Every recommendation has three answers, cancel, reduce or keep, and SpendifiAI records projected savings and keeps a monthly history of what you acted on. Savings goals work the same way. You set a target, and the planner builds an action plan from your actual spending, not a generic percentage of income.
The dashboard: “Where to Cut” and the budget waterfall
The dashboard answers four questions. The budget waterfall shows income flowing down through each spending category. Monthly Bills splits recurring charges into essential and non-essential. Home Affordability works out a housing budget from your real income and debts. Where to Cut shows the savings recommendations, one action per card. In late April 2026 the cost-of-living math was reworked. Loan payments are now detected as recurring fixed transfers instead of disappearing as “transfers,” and the category you or Claude chose now takes priority over Plaid’s category when bucketing essentials. That feeds a “Can you live on your paycheck?” comparison of core expenses against detected income. Charitable giving has its own dashboard block, covered in tracking charitable donations in SpendifiAI.
Can AI Find Tax Deductions?
It can find likely ones, which is where most of the value is, because deductions are usually lost by never being noticed. Each categorized transaction carries a deductible flag and a tax category. The export collects those, maps them to Schedule C (and Schedule A for items like mortgage interest and property tax), and splits business spending from personal.
What the Schedule C export contains
- Tax Summary totals for the year, with the estimated tax bracket
- Income & Tax Documents W-2 and 1099 income pulled from uploaded forms
- Schedule C Mapping deductible spending grouped by Schedule C line
- Deductions by Category the same spending grouped by SpendifiAI category
- All Deductible Transactions the line-by-line detail an accountant will ask for
Next to the workbook, the export produces a PDF summary and a transactions CSV, and it can also write TXF, OFX and a QuickBooks-format CSV. The full package can be emailed to your accountant from inside the app. The March 2026 overhaul added a self-employment tax estimate (15.3% on 92.35% of net self-employment income) and a bracket estimate based on 2025 IRS brackets and filing status.
The Tax Vault and accountant access
Version 2.0 added a Tax Document Vault. You upload W-2s, 1099s (NEC, INT, DIV, B, R, K and others), 1098s, K-1s and receipts. Claude classifies each document and extracts its fields, but only when the classification scores at least 0.70. Below that, the document is flagged for manual review instead of being guessed at. Extracted fields get a green or amber badge at 0.85 and 0.60. Multi-document PDFs are split at the boundaries Claude detects, and duplicates are caught by file hash and by content (EIN, SSN, form and year).
Accountants get their own account type. A firm can invite clients by link, request specific documents, and leave comments on a document in an annotation thread. Households are supported too: members join by invitation, dependents are stored with tax-relevant fields, and the export combines the whole household’s data.
SpendifiAI flags transactions as typically deductible and estimates bracket and self-employment tax. Whether a specific expense qualifies is still your accountant’s call. The export is built to make that review quick, with every deductible transaction listed and traceable, not to replace it.
Is an AI Budgeting App Safe to Connect to Your Bank?
This is the right question to ask of any finance app, AI or not. The answer depends on what it stores and how it’s protected. SpendifiAI never sees your bank password when you use Plaid. The Plaid access token, OAuth credentials for connected email and business identifiers such as EINs are encrypted with AES-256-CBC before they reach the database.
- Two-factor login with a TOTP authenticator app (6 digits, 30-second window, 8 recovery codes)
- reCAPTCHA v3 on registration and login
- Rate limiting on every authentication and sensitive endpoint
- Account deletion that satisfies GDPR and CCPA requests
- Authorization policies on transactions, accounts, questions and subscriptions, updated in v2.0 for households
The AI only sees transaction data. Claude receives merchant, amount, date and description to categorize a charge. It never receives your bank credentials or tokens.
Receipts from Your Inbox
SpendifiAI can connect to Gmail through Google OAuth, to Outlook through Microsoft Graph, or to any mailbox over IMAP. It reads order-confirmation emails and matches them to bank charges. A matched receipt tells Claude what an Amazon or big-box charge actually bought instead of leaving it as “Shopping,” which is why those transactions score 0.95 or higher. The three-phase search behind it, including a fallback for Outlook when search doesn’t index amounts inside HTML tables, is covered in matching email receipts to bank transactions.
The Tech Stack Behind SpendifiAI
| Layer | Technology | Version |
|---|---|---|
| Backend | Laravel, PHP | 12, 8.3 |
| Frontend | React, Inertia.js, TypeScript | 19, 2 |
| Styling | Tailwind CSS | v4 |
| Database | PostgreSQL | 15+ |
| Cache and queues | Redis | 7+ |
| AI | Anthropic Claude API | Sonnet |
| Banking | Plaid API, PDF/CSV statement parsing | US |
| Auth | Laravel Sanctum, Fortify, Socialite | first-party |
| Tests | Pest PHP | 3 |
Laravel’s queues run all the slow work: categorization, statement parsing, email matching, subscription scans. Your dashboard never waits on an AI call. Inertia lets the React front end behave like a single-page app without a separate API just to serve its own screens. Scheduled jobs are defined in routes/console.php: bank sync daily, subscription detection at 02:00, expiry of stale AI questions (after 7 days) at 03:00, and failed-email retries at 04:00.
How it was built
The first commit landed on February 10, 2026. By May 18, the release/v2.0.0 branch had 226 commits. Most of the build happened in the first seven weeks: 138 commits in February covered the core app, and 81 in March covered the Tax Vault, accountant portal and households. The README from early in the build lists 131 tests and 459 assertions.

release/v2.0.0 of parkktech/spendifiai, from git log.SpendifiAI
Source code for SpendifiAI, the AI-powered personal finance platform.
Frequently Asked Questions
What is the best AI personal finance app?
It depends on what you need it for. If most of your pain is tax time as a freelancer or small business owner, look for an app that separates business from personal spending, maps expenses to Schedule C, and exports something your accountant can use. That is the gap SpendifiAI was built to fill.
How does AI categorize bank transactions?
SpendifiAI sends each transaction’s merchant, amount, date, description and account purpose to Claude, which returns a category, business or personal, deductibility and a confidence score. At 0.85 or higher the category is saved automatically. Below that it is flagged, and below 0.60 you get a question to answer.
Is it safe to link your bank account to a budgeting app?
It can be, if the app uses a provider like Plaid so it never sees your bank password, and encrypts what it does store. SpendifiAI encrypts Plaid tokens and OAuth credentials with AES-256-CBC, supports TOTP two-factor login, and never sends credentials to the AI.
How does Plaid work?
Plaid is a service that connects apps to bank accounts. You log in to your bank inside Plaid’s window, and the app receives an access token instead of your password. The app uses that token to fetch transactions and statements.
Can I use an AI budgeting app without connecting my bank?
Yes. SpendifiAI accepts PDF and CSV bank statements as an alternative to Plaid. Uploaded statements go through the same categorization, subscription detection and tax export as linked accounts.
Can AI find tax deductions for me?
It can flag likely ones. SpendifiAI marks transactions as typically deductible, maps them to Schedule C or Schedule A lines, and lists each one in the export. Whether an expense qualifies is still a judgment your accountant should make.
What does the SpendifiAI tax export include?
An Excel workbook with five tabs (Tax Summary, Income & Tax Documents, Schedule C Mapping, Deductions by Category, All Deductible Transactions), a PDF summary and a transactions CSV. TXF, OFX and QuickBooks CSV formats are also available, and the package can be emailed to your accountant from the app.
Need an AI product built like this?
SpendifiAI is the kind of work Parkk Technology does: real integrations, AI with a policy for when it is wrong, and output people can use. If you have a product like this in mind, tell us about it.