# How to Vibe Code Your Own Tiller (and Stop Paying for It)

> Your Financial Life In A Spreadsheet, Automatically

- Site: https://tillerhq.com
- Category: Personal Finance SaaS
- Verdict: **Solid side project** (68/100 vibecodeable)
- Estimated effort: 2-3 weekends

## Verdict

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.

### 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

## What it 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 — Full access to Tiller Money Feeds, AutoCat, and financial spreadsheet templates with a 30-day trial.

### Funding

$16.7M raised.
- Seed Round (2016)
- Series B ($13.9M, June 2018)
- Seed Extensions ($430K Jan 2024, $420K June 2024)
Investors: Ring Capital, 360 Capital Partners, ADA Ventures, Concept Ventures, Haatch, HV Capital, Soma Capital

Founded 2015.
Team size: 19-50.

## The hard parts

- 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 vibe code Tiller

### Prerequisites

- Node.js (free): Runtime environment for the Next.js application and background sync workers.
- Plaid Developer Account (free tier / usage-based): Required to obtain API keys for linking bank accounts and fetching transactions.
- Google Cloud Console Project (free): Needed to configure OAuth credentials and enable the Google Sheets API for automated spreadsheet writes.
- GitHub (free): Version control and continuous deployment pipeline integration.

### Recommended AI tools

- Claude Code: Best-in-class agentic coding tool for scaffolding the Next.js backend, Plaid webhooks, and Google Sheets integration loops.
- Cursor: Ideal for fine-tuning UI components, dashboard charts, and AutoCat rule configuration screens.

### 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

- Cloudflare (Hosting the Next.js frontend, API routes, and cron triggers for daily bank syncs.): $0-5/mo

### Build guide

1. **Project 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.
```

2. **Plaid 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.
```

3. **Transaction 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.
```

4. **Google 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.
```

5. **AutoCat 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.
```

6. **Daily 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

**Starting costs (one-time):**

- Plaid Development Account / Production Transition: Usage-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 items: Variable ($0-20+/mo depending on active links)
- Total: ~$0-20/mo

- Paying for the SaaS instead: $6.58/mo ($79/yr)
- Build time: 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.

## Sources

- [Tiller Official Website](https://tillerhq.com)
- [The College Investor - Tiller Money Review 2026](https://tillerhq.com)
- [Startup Intros - Tiller Funding & Investors Profile](https://tillerhq.com)