Truffle
Your finances, unearthed.
Talk to your money. Truffle listens, understands, and surfaces what's hiding beneath the surface of your financial life — without the dread.
Features
- 🎙️ Voice first — hold to speak, get a spoken answer back
- 🗣️ Choose Truffle's voice — pick a named persona (Sophie 🇬🇧, Niamh 🇮🇪, Isla 🏴) with in-app preview during onboarding or from Settings; preference persists to your account
- 🔇 Voice mute toggle — mute/unmute AI speech from the chat toolbar; preference persists across sessions
- 🧠 Conversational reasoning — ask anything about your finances in plain language
- 🔍 Anomaly detection — spots unusual charges automatically
- 📈 Spending forecast — projects your end-of-month balance with daily spend rate
- 😌 Emotionally aware — calm, warm tone always. Never a lecture
- 🧾 Receipt & statement scanning — photograph a receipt or upload a PDF bank statement; extracted by Gemini 3.7 Flash (vision-capable, handles images and PDFs)
- 📂 CSV import — drag-and-drop with column auto-detection and category guessing
- ✏️ Transaction edit & delete — inline edit form and confirm-before-delete directly in the transaction list; changes sync immediately via TanStack Query cache invalidation
- 🔄 Subscription tracker — automatically detects recurring charges from your history
- 🎯 Savings goals — set goals manually or let Truffle propose one mid-conversation; confirm with one tap, track progress and deposits in Insights
- 💬 Log transactions from chat — say "I just paid €45 at Lidl" and Truffle shows a confirmation card before logging it to your history
- 🔁 Saving habits — set up a recurring weekly or monthly saving habit in chat ("save €50 every week"); Truffle tracks your streak, logs contributions, and reminds you when a period is due
- 📊 Monthly budgets — set per-category spending limits in Insights; colour-coded progress bars (green → amber at 80% → red at 100%); Truffle fires a proactive nudge when you hit 80% of a budget; budget context is injected into every chat for AI-aware answers
- 🔔 Proactive nudges — Truffle messages you in chat when it spots something worth flagging (anomalous charge, goal milestone, at-risk deadline, budget warning, habit streak celebration, habit check-in reminder) without you having to ask; unread badge on the Chat tab
- 📅 Monthly AI finance report — on visiting Insights at the start of a new month, Truffle generates a prose summary of the previous month (income, expenses, top categories, goal and habit progress) and delivers it as a chat message; generated once per month per user
- 🔊 Weekly audio summary — spoken recap of your week, once per week
- 💱 Multi-currency — EUR, GBP, USD converted to EUR for consistent totals
- 🌗 Dark / light theme — system-aware with manual override from the top bar on every page
- 📱 PWA — installs on iOS and Android
- 🚀 Onboarding tour — new users are walked through the three core features (chat, tracking, nudges) immediately after sign-up
- 📦 Data export — download all your transactions, goals, budgets, and habits as a single JSON file from the Settings sheet
- 🗑️ Account deletion — self-serve data wipe from the Settings sheet; requires typing
DELETE to confirm; cascades to all data via Supabase FK constraints
Try it
Live demo: truffle-ivory.vercel.app
On the sign-in screen, tap Explore the demo → to drop straight into a
furnished account — eight months of transactions (slid forward to end today),
savings goals, budgets, a saving habit, and detected anomalies. No sign-up, no
password needed. The button mints a one-time token server-side
(/api/auth/demo) and exchanges it
for a session. A nightly GitHub Action
(demo-reset.yml) rebuilds it so it looks
the same for the next visitor.
This is the beginning of the README. Read the rest at the original. Read the full README ↗