Upload your bank statement to get started. Set up Cloud Sync above to access your data from any computer.
⚙ Set up cloud sync first (recommended) →
Your Bank Data
✚
Add or Update Bank Statement
New months added automatically — already-analyzed months keep your edits
Business Notes
Keyword Rules (always override AI)
Categorizing transactions…
Sending to AI…
Financial Summary
Total Income
$0
Total Expenses
$0
Net Profit / Loss
$0
Transactions
0
Income by Category
Expenses by Category
Profit & Loss Statement
All Transactions
Date
Description
Category (click to edit)
Customer
Amount
Type
💡 Click any category to change it — saved instantly & auto-learned for future months.
Performance Analytics
Powered by your AppSheet invoice data
Period:
or
📈
Load your AppSheet CSV to see performance analytics
Upload your invoice export from AppSheet to see revenue trends, job type breakdowns, client performance, and seasonal patterns.
📄 CPA Tax Package
Everything your accountant needs, organized and ready to hand over
📄
Select a tax year to generate your CPA package
Analyze your bank months first, then come back here to generate a complete tax summary.
🧾
Upload AppSheet Invoice CSV
Parsed instantly — new invoices merged without duplicating
Invoice Dashboard
Period:
or
Total Invoiced
$0
Total Collected
$0
Outstanding AR
$0
Collection Rate
0%
Revenue by Job Type
Top Clients by Billed
AR Aging
Unpaid Invoices
Invoice #
Customer
Job Type
Invoice Date
Due Date
Age
Amount
Status
Bank Match
💵 Check Writer
Pre-printed Intuit CheckLock voucher stock — Community Choice CU
Check Details
Adjust until fields land correctly on your stock. Saved per browser.
Preview
50%
Check Register
Check #
Date
Payee
Memo
Amount
Status
💰 Michigan Payroll Calculator
Quick paycheck math — federal, state, FICA, city. Not a payroll system of record.
Employee & Wages
Tax Setup
Pre-Tax / Post-Tax Deductions
Paycheck Breakdown
Enter hours & rate to see breakdown
⚠ Disclaimer: Quick calculator using 2026 federal brackets (Rev. Proc. 2025-32, OBBBA-adjusted) annualized with the standard deduction, MI 4.25% flat
tax with annual exemptions, and standard FICA (6.2% / 1.45%). Approximates Pub 15-T Worksheet 1A but isn’t a payroll system of record — use OnPay for actual 941s,
W-2s, and tax deposits. Tables update annually — verify against the current Pub 15-T each January.
🏛️ Tax Command Center
Federal, state, payroll, and annual deadlines — all in one place
Connect Supabase so your data syncs across every computer. Takes about 5 minutes.
1
Create a free Supabase project
Go to supabase.com → New Project. Free tier is plenty. Copy your Project URL and anon public key from Settings → API.
2
Run this SQL in Supabase SQL Editor
⚠ If upgrading from an older version, also run: ALTER TABLE hvac_settings DROP COLUMN IF EXISTS anthropic_key; — your API key now stays on your device only.
CREATE TABLE IF NOT EXISTS hvac_settings (
id TEXT PRIMARY KEY DEFAULT 'main',
biz_notes TEXT DEFAULT '',
custom_rules JSONB DEFAULT '[]',
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS hvac_cache (
month_key TEXT PRIMARY KEY,
transactions JSONB NOT NULL,
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS hvac_invoices (
id TEXT PRIMARY KEY DEFAULT 'main',
rows JSONB NOT NULL DEFAULT '[]',
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS hvac_checks (
id TEXT PRIMARY KEY DEFAULT 'main',
rows JSONB NOT NULL DEFAULT '[]',
cal JSONB NOT NULL DEFAULT '{}',
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS hvac_tax (
id TEXT PRIMARY KEY DEFAULT 'main',
state JSONB NOT NULL DEFAULT '{}',
updated_at TIMESTAMPTZ DEFAULT NOW()
);
ALTER TABLE hvac_settings ENABLE ROW LEVEL SECURITY;
ALTER TABLE hvac_cache ENABLE ROW LEVEL SECURITY;
ALTER TABLE hvac_invoices ENABLE ROW LEVEL SECURITY;
ALTER TABLE hvac_checks ENABLE ROW LEVEL SECURITY;
ALTER TABLE hvac_tax ENABLE ROW LEVEL SECURITY;
CREATE POLICY "allow_all" ON hvac_settings FOR ALL USING (true);
CREATE POLICY "allow_all" ON hvac_cache FOR ALL USING (true);
CREATE POLICY "allow_all" ON hvac_invoices FOR ALL USING (true);
CREATE POLICY "allow_all" ON hvac_checks FOR ALL USING (true);
CREATE POLICY "allow_all" ON hvac_tax FOR ALL USING (true);
⚠ Heads-up: the allow_all RLS policy means anyone with your project URL + anon key can read/write everything. Don’t commit those to public repos. For real protection, switch to Supabase Auth and scope policies to auth.uid().
3
Enter your Supabase credentials
4
Host on GitHub Pages
Push this HTML file to your private GitHub repo. Go to repo Settings → Pages → Deploy from branch. Your app will be live at yourusername.github.io/repo-name.