Upload screenshot or PDF — AI reads & categorizes everything
›
or log manually
💼 MOR Pay
🪚 Side Job
🌿 Jess Pay
📋 Jess EI
🏠 Room & Board
💵 Other
$
Reading Statement...
Claude is analyzing your statement
⚙️
Reading your statement...
Claude is identifying merchants, amounts, and categorizing everything. This takes about 15-30 seconds.
😞
Couldn't read that file
Try a clearer screenshot or a different file.
Change Category
New Goal
Edit Monthly Budgets
Log Contribution
Add Account
Google Sheet
Step 1: sheets.google.com → New sheet → Name it Duhamel Budget
Step 2: Sheet menu → Extensions → Apps Script → delete all → paste code below → save
function doPost(e){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sh=ss.getSheetByName("Entries")||ss.insertSheet("Entries");
if(sh.getLastRow()===0)sh.appendRow(["Timestamp","User","Type","Category","Amount","Note"]);
var d=JSON.parse(e.postData.contents);
sh.appendRow([new Date().toLocaleString(),d.user,d.type,d.category,d.amount,d.note||""]);
return ContentService.createTextOutput(JSON.stringify({ok:true})).setMimeType(ContentService.MimeType.JSON);
}
function doGet(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sh=ss.getSheetByName("Entries");
if(!sh||sh.getLastRow()<2)return ContentService.createTextOutput(JSON.stringify([])).setMimeType(ContentService.MimeType.JSON);
var rows=sh.getRange(2,1,sh.getLastRow()-1,6).getValues();
return ContentService.createTextOutput(JSON.stringify(rows.map(function(r){return{timestamp:r[0],user:r[1],type:r[2],category:r[3],amount:r[4],note:r[5]};}))).setMimeType(ContentService.MimeType.JSON);
}
Step 3: Deploy → New deployment → Web app → Anyone → Deploy → copy URL
Fixed Bills
Tap any bill to adjust this month's amount or update the default. Gold = adjusted this month.
Monthly Fixed Total
$0
Edit Bill
$
$
Updating the default saves it permanently for future months.