Learn from OSS
Midday

What Is Midday?

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

What Is 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.

Midday is an AI-powered financial operations product for freelancers and small businesses that combines bank sync, invoicing, time tracking, receipt capture, and accounting workflows in one system. This explainer shows what Midday does, how the product is structured, and how its engineering choices support a finance-heavy user experience.

Midday at a Glance

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