Learn from OSS
Midday

Introduction to Midday

Understand Midday, an AI-powered business assistant for freelancers and solopreneurs

Introduction to Midday

TL;DR for Product Managers

Midday is an open-source financial operations tool for freelancers and small businesses. It connects to your bank, auto-categorizes transactions, matches receipts with AI, generates invoices, tracks time, and gives AI-powered financial insights — essentially replacing your spreadsheet, receipt folder, and bookkeeper with one app.

What is Midday?

Midday is an AI-powered business assistant that centralizes the financial operations of freelancers, contractors, consultants, and solo entrepreneurs. It's a monorepo containing 5 applications and 27 shared packages that together deliver bank connectivity (20,000+ institutions), invoicing, time tracking, receipt management, accounting sync, and an AI financial assistant.

The Product at a Glance

DimensionDetails
What it doesFinancial ops — bank sync, invoicing, time tracking, receipt matching, AI insights
Who uses itFreelancers, contractors, consultants, solopreneurs
How it's differentOpen-source, AI-native, connects banks + accounting in one place
Core techNext.js 16 + Hono + Supabase (PostgreSQL) + Drizzle ORM
Repo structureBun monorepo with Turborepo (5 apps + 27 packages)
LicenseAGPL-3.0 (commercial license available)
DeploymentRailway (dashboard/API/worker), Vercel (website), Cloudflare

Core Concepts

Midday organizes around a Team (the billing/tenancy unit) containing members, bank accounts, and all financial data:

Team (your business entity)
  ├── Bank Accounts          (connected via Plaid / GoCardless / Teller)
  │     └── Transactions     (auto-imported, categorized, enriched)
  │           ├── Tags        (custom labels)
  │           ├── Attachments  (receipts, files)
  │           └── Categories   (auto-classified by AI)
  ├── Invoices               (create, send, track payments via Stripe)
  │     ├── Products          (line items)
  │     ├── Recurring         (scheduled re-send)
  │     └── Comments          (team collaboration)
  ├── Customers              (client directory, portal access)
  ├── Tracker Projects       (time tracking)
  │     └── Tracker Entries   (time logs per project)
  ├── Inbox                  (email receipts from Gmail / Outlook)
  ├── Documents (Vault)      (contracts, agreements)
  ├── Insights               (AI-generated financial analysis)
  └── Reports                (expense reports, custom exports)

Key Insight

Transactions are the central entity. Bank connections auto-import them; the AI categorizes them; receipts from the inbox get matched to them; invoices track payments against them; and the financial assistant queries across them. Understanding the transaction model is the key to understanding Midday.

The Tech Stack — Why Each Piece Exists

LayerTechnologyWhy It's Used
DashboardNext.js 16.1.6 (React 19)Full-stack framework with server actions and SSR
APIHono 4.11.4 + tRPC 11.10.0Lightweight, edge-ready API with type-safe RPC
RuntimeBun 1.3.10Fast JavaScript runtime, native TypeScript, built-in test runner
DatabaseSupabase (PostgreSQL) + Drizzle ORM 0.45.0Managed Postgres with auth, storage, and real-time; Drizzle for type-safe queries
AuthSupabase Auth (JWT + JWKS)Built-in email/password, OAuth, MFA
StateZustand 5.0.11 + TanStack Query 5.90.21Minimal global state + server-state caching
UIRadix UI + Tailwind CSS + shadcn-styleAccessible primitives + utility-first styling
BankingPlaid + GoCardless + Teller + EnableBankingMulti-provider bank connectivity (20,000+ institutions)
PaymentsStripe ConnectInvoice payments processed through connected accounts
SubscriptionsPolarBilling for Midday's own subscription plans
AIVercel AI SDK 5.0 (OpenAI, Anthropic, Google)Financial assistant, transaction categorization, document processing
Background JobsTrigger.dev 4.1.2 + BullMQScheduled tasks (bank sync, invoice reminders) + job queues
EmailResend + React EmailTransactional emails (invoices, notifications, onboarding)
File StorageSupabase Storage + Cloudflare R2Document vault, receipt uploads, institution logos
SearchTypesenseFull-text search across transactions and documents
AnalyticsOpenPanelProduct analytics and event tracking
MonitoringSentryError tracking across dashboard, API, and worker
DesktopTauri 2Native desktop app with deep links and file system access
AccountingXero + QuickBooks + Fortnox integrationsTwo-way sync with accounting software
MonorepoTurborepo 2.8.12 + Bun workspacesBuild orchestration with caching

For PMs: Why So Many Banking Providers?

Banking APIs are region-locked. Plaid covers the US and Canada, GoCardless covers Europe and the UK, Teller is a US alternative, and EnableBanking covers additional European banks. By integrating all four, Midday can serve freelancers worldwide — connecting to 20,000+ financial institutions. Each provider has its own authentication flow, data format, and rate limits, which is why @midday/banking abstracts them behind a unified interface.

Key Statistics

MetricValue
Applications5 (dashboard, API, worker, website, desktop)
Shared packages27
Database tables45+
Database migrations36
Banking providers4 (Plaid, GoCardless, Teller, EnableBanking)
Accounting integrations3 (Xero, QuickBooks, Fortnox)
AI tools (assistant)8+ (expenses, cash flow, burn rate, forecast, etc.)
Email templates18 (React Email)
Test files51
Dockerfiles3 (dashboard, API, worker)

Core Features

Financial Operations

  • Bank Connections — Connect to 20,000+ banks; transactions auto-imported and enriched
  • Transaction Management — Auto-categorized by AI, tagging, attachments, bulk actions
  • Invoicing — Create/send invoices, Stripe payments, recurring schedules, customer portal
  • Time Tracking — Project-based timer and manual entries, billable hours
  • Magic Inbox — Gmail/Outlook sync; AI matches receipts to transactions
  • Vault — Secure document storage (contracts, agreements)
  • Reports — Expense reports, CSV export for accountants
  • Accounting Sync — Two-way sync with Xero, QuickBooks, Fortnox

AI-Powered

  • Financial Assistant — Chat with your finances: ask about spending, burn rate, runway, forecasts
  • Transaction Categorization — AI classifies transactions using embeddings
  • Receipt Matching — AI matches inbox documents to transactions
  • Document Processing — Extract data from PDFs and images
  • MCP Integration — Use Midday as a tool in Claude, Cursor, and ChatGPT

Platform

  • Customer Management — Client directory with enrichment (Exa) and portal access
  • App Store — Integrations: Slack, WhatsApp, Xero, QuickBooks, Fortnox
  • Desktop App — Tauri-based native app (macOS)
  • Notifications — Email notifications with granular settings
  • OAuth/API — OAuth applications, API keys for programmatic access

What Makes Midday Different

  1. AI-native financial assistant — Not a bolt-on; AI is core to categorization, matching, and insights
  2. Multi-provider banking — 20,000+ institutions across US, EU, UK, Canada
  3. Open-source — Full source code, self-hostable (AGPL-3.0)
  4. All-in-one — Bank sync + invoicing + time tracking + accounting in a single tool
  5. Modern stack — Next.js 16, React 19, Bun, tRPC, Drizzle — bleeding-edge TypeScript

What's Next

Resources