DevCashFlow AI

FinTechIntermediateJan 22, 2026

DevCashFlow AI

Automate project-based cash flow tracking and expense splitting for solo devs.

The Problem

Solo developers and indie hackers often juggle multiple projects, from client work to personal SaaS ventures. A critical pain point is the manual, time-consuming process of accurately tracking income and expenses *per project*. Existing accounting solutions are typically either too complex and expensive for a solo operation, or too generic, lacking the granular project-level categorization and expense-splitting capabilities needed. This leads to hours wasted each month on spreadsheet reconciliation, unclear profit margins for individual projects, difficulty identifying which ventures are truly profitable, and potential missed tax deductions. For small teams sharing resources (e.g., a single hosting bill, shared SaaS subscriptions), the challenge of fairly and accurately splitting these costs across different projects or team members becomes an even larger headache, often resulting in inaccurate financial reporting and frustration.

The Solution

DevCashFlow AI provides an intelligent, automated solution for solo developers and small teams to manage their project-specific finances. Users connect their bank and credit card accounts (read-only), and our AI engine automatically categorizes transactions and allocates them to specific projects. For shared expenses (like a single hosting bill), users can easily define splitting rules, and the system intelligently distributes the cost across relevant projects or team members. The core features include a clean dashboard showing real-time profit and loss for each project, AI-driven categorization with manual override, automated expense splitting, and simple export options for tax preparation. This unique focus on granular, project-level financial visibility and intelligent splitting for developers, coupled with a minimal, intuitive UI, frees up valuable time, provides clear financial insights, and simplifies tax reporting.

Tech Stack

Frontend
Next.js 14ReactTailwind CSS
Backend
Next.js API RoutesNode.js
Database
PostgreSQL (Supabase)
APIs
Stripe (for SaaS payments)Resend (for transactional emails)Plaid or Stripe Financial Connections (for bank linking)OpenAI or Anthropic (for AI categorization)

System Architecture

Database Schema

CREATE TABLE users (
  id uuid PRIMARY KEY REFERENCES auth.users(id) ON DELETE CASCADE,
  email text UNIQUE NOT NULL,
  created_at timestamp with time zone DEFAULT now()
);

CREATE TABLE projects (
  id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id uuid REFERENCES users(id) ON DELETE CASCADE,
  name text NOT NULL,
  description text,
  budget decimal(10, 2),
  created_at timestamp with time zone DEFAULT now(),
  updated_at timestamp with time zone DEFAULT now()
);

CREATE TABLE bank_accounts (
  id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id uuid REFERENCES users(id) ON DELETE CASCADE,
  provider text NOT NULL, -- e.g., 'plaid', 'stripe_fc'
  account_name text NOT NULL,
  account_type text, -- e.g., 'checking', 'credit_card'
  access_token text NOT NULL, -- encrypted token from Plaid/Stripe FC
  item_id text, -- Plaid item_id or similar
  created_at timestamp with time zone DEFAULT now(),
  updated_at timestamp with time zone DEFAULT now()
);
CREATE INDEX idx_bank_accounts_user_id ON bank_accounts(user_id);

CREATE TABLE transactions (
  id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id uuid REFERENCES users(id) ON DELETE CASCADE,
  bank_account_id uuid REFERENCES bank_accounts(id) ON DELETE CASCADE,
  external_id text UNIQUE, -- ID from bank provider
  description text NOT NULL,
  amount decimal(10, 2) NOT NULL, -- Positive for income, negative for expense
  date date NOT NULL,
  raw_data jsonb, -- Store raw transaction data from provider
  created_at timestamp with time zone DEFAULT now()
);
CREATE INDEX idx_transactions_user_id ON transactions(user_id);
CREATE INDEX idx_transactions_bank_account_id ON transactions(bank_account_id);
CREATE INDEX idx_transactions_date ON transactions(date);

CREATE TABLE categories (
  id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id uuid REFERENCES users(id) ON DELETE CASCADE,
  name text NOT NULL,
  type text NOT NULL, -- 'income' or 'expense'
  is_default boolean DEFAULT FALSE,
  created_at timestamp with time zone DEFAULT now()
);
CREATE UNIQUE INDEX idx_categories_user_name ON categories(user_id, name);

CREATE TABLE project_allocations (
  id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  transaction_id uuid REFERENCES transactions(id) ON DELETE CASCADE,
  project_id uuid REFERENCES projects(id) ON DELETE CASCADE,
  user_id uuid REFERENCES users(id) ON DELETE CASCADE, -- Denormalized for easier query
  allocated_amount decimal(10, 2) NOT NULL,
  category_id uuid REFERENCES categories(id) ON DELETE SET NULL,
  notes text,
  ai_confidence decimal(3, 2), -- 0.00 to 1.00
  is_manual_override boolean DEFAULT FALSE,
  created_at timestamp with time zone DEFAULT now(),
  updated_at timestamp with time zone DEFAULT now()
);
CREATE INDEX idx_project_allocations_transaction_id ON project_allocations(transaction_id);
CREATE INDEX idx_project_allocations_project_id ON project_allocations(project_id);
CREATE INDEX idx_project_allocations_user_id ON project_allocations(user_id);

API Endpoints

POST/api/auth/callbackHandles Supabase OAuth callbacks and sets user session.
GET/api/user/profileRetrieves the authenticated user's profile information.
POST/api/bank-accounts/linkInitiates the bank account linking process via Plaid or Stripe Financial Connections.
GET/api/bank-accountsFetches all linked bank accounts for the authenticated user.
GET/api/transactionsRetrieves all transactions, with optional filters for project, category, or date range.
POST/api/transactions/:id/allocateManually allocates a transaction (or part of it) to a project and assigns a category. Can override AI suggestions.
GET/api/projectsFetches all projects created by the user.
POST/api/projectsCreates a new project.
GET/api/projects/:id/summaryCalculates and returns the profit and loss summary for a specific project.
GET/api/categoriesRetrieves all available transaction categories (user-defined and default).
POST/api/categoriesCreates a new custom transaction category for the user.
πŸ€–

Start Building with AI

Copy this prompt for Cursor, v0, Bolt, or any AI coding assistant

πŸ‘·

...

builders copied today

Found this useful? Share it with your builder friends!

BD

BuilderDaily Team

Verified

Indie hackers and full-stack engineers creating validated Micro-SaaS blueprints with production-ready tech stacks.

FinTech
Code TestedSchema ValidatedProduction Ready
Coming Soon in Beta

Gap Alert

Today's gap expires in ~14 hours

Get tomorrow's blueprint delivered to your inbox so you never miss a profitable idea.

(Email delivery launching soon β€” sign up to be first!)

No spam, everβ€’Unsubscribe anytime