How to vibe codeTiller
Your Financial Life In A Spreadsheet, Automatically
tillerhq.com ↗Personal Finance SaaS
The verdict: can you vibe code Tiller?
You can build a personal Tiller clone with Next.js, Plaid, and the Google Sheets API, but bank aggregator fees will likely cost more than paying for the real product.
Building a custom finance sync pipeline is entirely achievable for a solo developer using AI coding agents. The architecture is straightforward: a Next.js app that connects to Plaid via webhooks, processes new transactions through a rule engine, and appends rows directly to a designated Google Sheet using the Google Sheets API. However, the catch is financial: Plaid production access or development volume tiers carry monthly minimums or per-item fees that quickly eclipse Tiller's $79/year subscription price. Furthermore, dealing with OAuth token expirations from banks and Google Workspace API rate limits requires ongoing debugging.
Estimated effort: 2-3 weekends
What you can't replicate
- Proprietary enterprise aggregation pricing agreements with major financial institutions
- Ten years of hardened edge-case handling for broken bank connections
- Official Google Workspace and Microsoft Office store-verified add-on distribution
Founded
2015
Raised
$16.7M
Team
19-50
Cheapest paid tier
$79/yr
What Tiller does
Personal and solo-business finance tracking service that automatically aggregates bank accounts and feeds transactions into private Google Sheets and Excel spreadsheets.
Core features
- Bank institution credential linking via Plaid
- Automated daily transaction and balance ingestion pipeline
- Google Sheets API integration for automated cell appending
- Rule-based automatic transaction categorization engine (AutoCat)
- Daily email digest generation summarizing spending and balances
- Multi-account transaction normalization and deduplication layer
The business
Pricing
- Annual Subscription$79/yr
Funding
$16.7M from Ring Capital, 360 Capital Partners, ADA Ventures, Concept Ventures, Haatch, HV Capital, Soma Capital
Pay vs build, cumulative
No break-even inside 24 months at these numbers.
The hard parts of vibe coding Tiller
- Maintaining robust API error handling and token refresh lifecycles across banking aggregators
- Handling Google Sheets API strict write rate limits and concurrent quota management
- Securing sensitive bank access tokens and encryption-at-rest compliance
- Implementing resilient background cron jobs for daily transaction polling without missing sync windows
How to vibecode Tiller
Prerequisites
Node.jsfree
Runtime environment for the Next.js application and background sync workers.
Plaid Developer Accountfree tier / usage-based
Required to obtain API keys for linking bank accounts and fetching transactions.
Google Cloud Console Projectfree
Needed to configure OAuth credentials and enable the Google Sheets API for automated spreadsheet writes.
GitHubfree
Version control and continuous deployment pipeline integration.
AI coding tools
Recommended stack
| Frontend | Next.js with Tailwind CSS |
|---|---|
| Backend | Next.js API Routes / Server Actions |
| Database | Turso (SQLite at the edge for storing user tokens and sync state) |
| Auth | better-auth |
| Payments | None (personal-use clone) |
| Other | Plaid API for bank aggregation, Google Sheets API for spreadsheet updates, Resend for daily email summaries |
Hosting & infrastructure
| Cloudflare | Hosting the Next.js frontend, API routes, and cron triggers for daily bank syncs. | $0-5/mo |
Build guide
01Project Scaffolding & Database Setup
Initialize the Next.js application with Tailwind CSS, configure Turso SQLite via Drizzle ORM, and set up better-auth for secure single-user access.
Scaffold a new Next.js TypeScript application with Tailwind CSS. Configure Drizzle ORM to connect to a Turso SQLite database. Create schema tables for users, linked_accounts (storing Plaid item IDs, access tokens, and institution names), and auto_cat_rules (pattern, category). Implement better-auth with email/password authentication restricted to a single admin user. Verify the build compiles successfully and migrations run cleanly.02Plaid Link Integration
Integrate Plaid Link SDK on the frontend and exchange public tokens for persistent access tokens on the backend.
Create a dashboard page in Next.js containing a 'Link Bank Account' button using the Plaid Link React SDK. Implement the backend API route `/api/plaid/create-link-token` that communicates with the Plaid API to generate a link token. Create a companion callback route `/api/plaid/exchange-token` that takes the resulting public token, exchanges it for a permanent access token and item ID, and saves them securely in the Turso database linked to the authenticated user.03Transaction Sync Engine & Deduplication
Build the transaction polling and webhook sync loop to pull new transactions from Plaid and prevent duplicate records.
Implement a backend synchronization service that queries Plaid's `/transactions/sync` endpoint for each stored item ID. Write logic to parse incoming transactions (date, amount, merchant name, account ID, pending status) and store them locally while checking for unique transaction IDs to prevent duplicates. Expose a manual 'Sync Now' button on the dashboard that triggers this routine and returns sync statistics.04Google Sheets API Integration
Connect the app to Google Sheets via OAuth to automatically append newly synced transactions into a user-specified Google Spreadsheet.
Implement Google OAuth service account or user-delegated OAuth flow to access Google Sheets. Write a utility function using the Google Sheets API v4 that takes an array of normalized transactions and appends them as new rows into a specific spreadsheet ID and worksheet tab ('Transactions'). Handle Google API rate limits with exponential backoff and log any write failures to the database.05AutoCat Rule Engine
Build a rule-matching engine that automatically tags transactions based on merchant description patterns before writing them to the spreadsheet.
Create an AutoCat settings UI where users can define rules with matching criteria (e.g., if merchant contains 'STARBUCKS', assign category 'Coffee & Dining'). Write a matching processor that runs automatically on every newly fetched transaction batch before it gets written to Google Sheets, updating the category field dynamically.06Daily Email Summaries with Resend
Configure automated cron jobs to compile daily account balances and new spending totals, dispatching a morning summary email via Resend.
Configure a Cloudflare Workers Cron Trigger or Next.js cron route that runs daily at 6:00 AM. The job should fetch updated account balances from Plaid, calculate the previous day's total spending, and format a clean HTML email template using React Email. Send the summary email to the user's verified address using the Resend API.
Cost vs paying for Tiller
What will you build it with?
Starting total with Claude Code$0 one-time
Starting costs (one-time)
- Plaid Development Account / Production TransitionUsage-based (Free sandbox, varies in production)
- Custom Domain (optional)$12 one-time
Total~$32 one-time
Ongoing costs (monthly)
- Cloudflare Workers & Turso DB$0/mo (free tiers)
- Resend Email API$0/mo (within 3k free tier)
- Plaid API itemsVariable ($0-20+/mo depending on active links)
Total~$0-20/mo
Paying for Tiller
$6.58/mo ($79/yr)
Your time to build
16-24 hours
AI tool credits
$20 (one month of Claude Pro / Cursor)
Break-even
Paying for Tiller is cheaper and more reliable unless you enjoy maintaining banking API integrations.
Vibe code Tiller: FAQ
- Can you vibe code Tiller yourself?
- Solid side project — 68/100 vibecodeable. You can build a personal Tiller clone with Next.js, Plaid, and the Google Sheets API, but bank aggregator fees will likely cost more than paying for the real product.
- How long does it take to vibe code Tiller?
- 2-3 weekends — roughly 16-24 hours of hands-on time with an AI coding agent.
- How do you build your own Tiller?
- Scoped to personal use: Next.js with Tailwind CSS on the front, Next.js API Routes / Server Actions behind it, Turso (SQLite at the edge for storing user tokens and sync state) for data. Follow the 6-step build guide on this page — each step has a paste-ready prompt for an AI coding agent.
- How do you code your own Tiller without being an expert?
- Use an AI coding tool (Claude Code or Cursor) and work in small steps: scaffold, data model, core screens, then deploy. Realistic effort: 2-3 weekends. The prompts on this page are written so the AI does the heavy lifting.
- How much does it cost to vibe code Tiller instead of paying?
- About ~$32 one-time to start and ~$0-20/mo to run, versus $6.58/mo ($79/yr) for Tiller. Break-even: Paying for Tiller is cheaper and more reliable unless you enjoy maintaining banking API integrations..
- What stack should you use to vibe code Tiller?
- Next.js with Tailwind CSS; Next.js API Routes / Server Actions; Turso (SQLite at the edge for storing user tokens and sync state); plus Plaid API for bank aggregation, Google Sheets API for spreadsheet updates, Resend for daily email summaries.