Midday

All-in-one AI-powered business operations platform for freelancers and solo entrepreneurs to manage invoicing, time tracking, banking, and financial intelligence.

14.6Kstars
1.8Kforks
GNU AGPLv3
TypeScript

Midday is an open-source business operations platform purpose-built for freelancers, contractors, consultants, and solo entrepreneurs who need to manage their entire financial workflow in one place. Rather than juggling separate tools for invoicing, time tracking, expense tracking, and file storage, Midday consolidates everything into a single cohesive system powered by AI and real banking integrations.

The platform connects directly to bank accounts via Plaid, GoCardless, and Teller to automatically sync transactions in real time. Its Magic Inbox feature ingests receipts and invoices from Gmail and Outlook, then uses AI-powered document parsing to match them to corresponding bank transactions—eliminating manual reconciliation. A built-in AI assistant can answer natural-language questions about spending, find documents, and surface financial insights.

Midday’s invoicing module lets users create professional, web-based invoices with online payment links, automatic recurring schedules, and multi-currency support. Time tracking integrates directly with projects so billable hours feed into invoices without manual entry. All financial data can be exported as clean, accountant-ready CSV files with categorized transactions.

Built as a TypeScript monorepo using Next.js, Supabase, and Hono, Midday ships with a REST API and a full Model Context Protocol (MCP) server, enabling AI agents and automation tools to interact with financial data programmatically. A Tauri-based desktop app and Expo mobile companion round out the cross-platform story.

What You Get

  • Bank Transaction Sync - Direct connections to bank accounts via Plaid (US/CA), GoCardless (EU), and Teller (US) with automatic real-time transaction ingestion and category enrichment.
  • Magic Inbox - Automatic PDF receipt and invoice extraction from Gmail and Outlook, matched to bank transactions using a deterministic scoring model with team-calibrated thresholds and alias learning.
  • Invoicing Engine - Create, send, and track professional invoices with online payment links via Polar, recurring invoice scheduling, multi-currency support, VAT handling, and PDF template customization.
  • Time Tracker - Live project time tracking with per-project overviews, calendar-based entry splitting, billable hour summaries, and direct export to invoice line items.
  • Vault - Encrypted secure file storage for contracts, agreements, and receipts with full-text search and access controls tied to team membership.
  • AI Financial Assistant - Natural-language interface backed by OpenAI and Gemini models for querying transactions, generating spending reports, identifying cost-cutting opportunities, and locating documents.
  • MCP Server - Full Model Context Protocol server exposing transactions, invoices, customers, time tracking, documents, and reports as callable tools for AI agents and automation workflows.
  • REST API - OpenAPI-documented REST endpoints for every resource—transactions, invoices, customers, bank accounts, tracker projects—with OAuth scoped access and SDK support.

Common Use Cases

  • Reconciling receipts automatically - A freelance consultant connects their Gmail inbox; Midday pulls PDF receipts from software subscriptions and auto-matches them to bank charges, flagging unmatched items for review.
  • Generating invoices from tracked hours - A developer logs hours against client projects throughout the month; at billing time, Midday compiles tracked entries into a formatted invoice with a one-click payment link.
  • Monitoring cash flow without an accountant - A solopreneur asks the AI assistant ‘How much did I spend on SaaS tools this quarter?’ and receives a categorized breakdown pulled live from synced bank data.
  • Exporting records for tax preparation - A freelancer downloads all transactions and matched receipts as a clean CSV to hand directly to their accountant, eliminating manual data entry and spreadsheet reconciliation.
  • Automating business workflows via MCP - A developer connects Claude Desktop to Midday’s MCP server and uses AI-generated prompts to query invoices, create tracker entries, and generate financial reports hands-free.
  • Running a small team’s finances - A two-person agency uses Midday’s team features to share access to bank connections, split project tracking, and send branded invoices to clients across multiple currencies.

Under The Hood

Architecture Midday is structured as a Turborepo monorepo where five distinct application targets—the Next.js dashboard, Hono API server, background worker, marketing website, and Tauri desktop client—share a rich ecosystem of shared packages including database queries, invoice calculations, inbox connectors, AI prompts, and health monitoring. The API layer uses OpenAPIHono to define fully typed, OpenAPI-documented routes, with a separate tRPC layer serving the dashboard for end-to-end type safety across the client-server boundary. Domain concerns are cleanly isolated: the inbox, invoice, connectors, jobs, encryption, and plans packages each own their abstractions with no circular dependencies, making it practical to evolve individual features independently. Background processing is orchestrated through Trigger.dev jobs and a BullMQ worker process, which handle bank syncs, document processing, inbox matching, and notification delivery asynchronously without blocking the API.

Tech Stack The entire codebase is TypeScript with Bun as the runtime and package manager, offering faster installs and a unified toolchain. The dashboard is Next.js 15 with React 19 and Tailwind CSS, while the API uses Hono running on Bun for minimal overhead. PostgreSQL via Supabase serves as the primary database, with pgvector for semantic search and pg_trgm for fast trigram-based transaction matching. The inbox package connects to Gmail and Outlook via OAuth to pull attachments, and three bank connection adapters—Plaid, GoCardless, and Teller—are abstracted behind a unified connector interface. AI capabilities are provided by the Vercel AI SDK wired to OpenAI and Google Gemini models. File storage, auth, and real-time subscriptions all flow through Supabase, while Redis via Upstash handles caching and rate limiting, Polar handles subscription billing, and Sentry provides error monitoring. The desktop client is built with Tauri v2 for native performance on macOS, Windows, and Linux.

Code Quality Midday has comprehensive test coverage across the most critical business logic: invoice calculation utilities, inbox transaction-matching algorithms, accounting export processors, and categorization heuristics are all unit-tested with Bun’s built-in test runner. Tests are structured with descriptive describe/it blocks, explicit fixtures, and clear assertions rather than snapshot sprawl. Error handling is explicit—custom typed error classes like InboxAuthError and InboxSyncError propagate structured failures rather than swallowing exceptions with generic catch blocks. Biome enforces consistent formatting and linting across the entire monorepo in a single pass. Zod schemas validate all API inputs and outputs, and TypeScript strict mode is enforced throughout. CI runs via GitHub Actions on every push.

What Makes It Unique The standout technical innovation is Midday’s embedding-free inbox matching algorithm, which pairs pg_trgm trigram retrieval with a deterministic multi-signal scorer—date proximity, amount matching, name similarity, merchant alias memory, and historical feedback—to auto-match receipts to bank transactions at production scale without relying on vector embeddings or LLM calls per match. The MCP server integration is unusually comprehensive: rather than a thin wrapper, it exposes the full financial data model through namespaced tool groups (transactions_, invoices_, tracker_*) with locale-aware formatting and timezone-contextual date ranges, making Midday a genuine financial data backend for AI agents. The combination of three bank connectivity providers behind a single unified connector interface gives self-hosters regional flexibility that competing open-source tools don’t offer.

Self-Hosting

Midday is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). In practical terms, the AGPL is a strong copyleft license that requires anyone who runs a modified version of Midday as a networked service to release their modifications under the same license. For internal self-hosting—deploying Midday for your own freelance business or small team—this imposes no real obligation, since you are not distributing the software to others. However, if you build a product on top of Midday and offer it to customers as a service, the AGPL requires you to open-source those modifications. The README also explicitly notes that commercial deployments requiring a setup fee require a separate commercial license obtainable by contacting engineer@midday.ai, so evaluate your use case before deploying at commercial scale.

Running Midday yourself is a substantial operational commitment. The platform requires multiple infrastructure services running simultaneously: a Supabase instance for the database, auth, storage, and real-time subscriptions; a Redis instance (Upstash-compatible) for caching; a Trigger.dev account or self-hosted worker for background job orchestration; a BullMQ worker process for inbox and bank sync jobs; and separate deployment targets for the API, dashboard, website, and optionally the desktop app. Bank connections via Plaid and Teller require API keys from those providers and their associated developer agreements. The email inbox integration requires OAuth app registrations with Google and Microsoft. Most of these services have free tiers or self-hostable equivalents, but wiring them together demands meaningful DevOps effort—there is no single-container deployment path today.

Midday’s hosted cloud offering at midday.ai provides Starter and Pro subscription tiers (billed monthly or annually via Polar) that handle all of this infrastructure, plus proactive maintenance, automatic database migrations, and direct support channels. Self-hosters forgo managed upgrades and must manually apply schema migrations, monitor job queues, and handle Supabase connection pool tuning themselves—all of which the documentation covers in the docs/ folder, but which add ongoing operational burden. The cloud version also benefits from shared institution data enrichment and merchant categorization improvements that accumulate across the customer base, while self-hosted instances start fresh.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack

No spam. Unsubscribe anytime.

Join 750+ subscribers
No spam. Unsubscribe anytime.

Search