Open Source

Self-Hosted Personal Finance for Global Citizens

AI-powered transaction classification, real-time portfolio tracking, and event-driven analytics. Secured by AES-256 encryption. Built for self-hosting. Designed for global finances.

Bliss capybara mascot in a turtleneck, seated in a mid-century chair beside currency coins

Production-Grade Infrastructure

Three services. Nine workers. Sixty endpoints. One configuration file.

A monorepo architecture designed for privacy-first self-hosting.

architecture.sh
[ ENTRYPOINT: Nginx :8080 (Docker) ]
│
├──► /     [ FRONTEND SPA ]
│           ├── React 18, Vite 6, shadcn/ui
│           └── Communicates via REST (JWT in HttpOnly Cookie)
│
├──► /api/ [ API LAYER ]
│           ├── Next.js 15 (Pages Router), NextAuth
│           ├── >60 Endpoints (Transactions, Reports, Users)
│           └── Communicates via Internal REST (API Key Auth)
│
└──► /svc/ [ EXPRESS BACKEND :3001 ]
            ├── Event-Driven Architecture
            ├── 9 Asynchronous BullMQ Workers
            │
            ├─► Redis 7 (Cache + Job Queues)
            │
            ├─► Database: PostgreSQL 16 + pgvector
            │   ├── Secure Store: AES-256-GCM Encryption
            │   └── AI Embeddings: 768-dim Vectors
            │
            └─► 3rd Party Integrations:
                ├─► AI: LLM provider abstraction (Gemini / OpenAI / Anthropic)
                ├─► Banks: Plaid (Sync + Tokens)
                ├─► Prices: TwelveData (Real-time Stocks)
                ├─► FX: TwelveData (Historical Rates; CurrencyLayer optional/legacy)
                └─► Ops: Sentry (Observability)

Multi-Currency Wealth, Unified.

Built from the ground up for cross-border portfolios. Backend asynchronous workers calculate historical exchange rates, ensuring your frontend dashboard never has to perform currency math on the fly.

Portfolio holdings with area chart showing net worth growth across stocks, ETFs, bonds, and private equity
Expense tracking with category breakdown and monthly totals

The Unified Financial Engine

Automatically normalizes income and expenses across borders using historical FX rates to give you a single base-currency view of your entire financial life.

Real-Time Portfolio Tracking

Asynchronous workers track FIFO lots and integrate directly with the Twelve Data API for live stock/ETF prices. Historical cost-basis calculations happen in the background, never blocking your dashboard.

Equity Analysis

Break down your portfolio by asset class, sector, industry, and country, with ETFs looked through to their underlying holdings. Weighted fundamental metrics — P/E ratio, dividend yield, EPS — surface concentration risk and income opportunities at a glance.

Expenses & Subscriptions

Category breakdowns, monthly totals, and tag-based budgets across currencies and countries. Recurring charges are detected automatically from your history, with no LLM involved.

Passive Income Projection

See what your dividends, interest, and rent could pay over the next twelve months, built from your actual holdings and income streams.

View specifications

Quiet Intelligence, Built In.

AI that works in the background so you don't have to. Transactions classify themselves, bank data syncs overnight, imports map automatically, and financial insights surface without you asking.

4-Tier Classification Engine

A deterministic AI waterfall that gets smarter with every correction. Transactions cascade through an in-memory exact-match cache, pgvector similarity search across your own and cross-tenant embeddings, and an LLM fallback (Gemini, OpenAI, or Anthropic). Each user override updates the cache and generates a new embedding — the same merchant is auto-classified on the next sight.

Read the classification guide
Transaction review showing AI classification with confidence scoring
Plaid

Secure Institution Sync

Robust Plaid webhook ingestion handles encrypted payload staging, optimistic account linking, and automated token rotation.

Plaid setup guide
Plaid
Plaid
AES-256
bliss
Bliss

Extensible File Ingestion

A streaming engine detects CSV/XLSX schemas and executes SHA-256 row deduplication. Easily write custom TypeScript adapters to ingest data from unsupported regional banks or legacy systems.

Import guide
Smart Import adapter creation modal showing column mapping configuration

AI Financial Insights

Actionable reports on four cadences — monthly, quarterly, annual, and weekly portfolio intelligence.

Insights guide
Quarterly savings insight card with warning severity
Portfolio holdings concentration insight card

Works with Claude

Your finances, in plain language.

Connect Claude to your own Bliss and talk to your money instead of clicking through it.

Ask anything

“What did I spend on travel this year?” “Which subscriptions can I cancel?” Claude reads your real data and answers with numbers.

Onboarding by conversation

Claude interviews you about what you own, builds an import plan, and guides you through each file, so you never have to reshape a spreadsheet yourself.

You stay in control

Connections use revocable tokens or OAuth, can be read-only, and never get admin rights. Imports are reviewed with you before anything is saved.

Claude + Bliss
You  Which subscriptions are costing me
     the most, and what is my passive
     income outlook?

Claude  list_subscriptions · get_passive_income

Your active subscriptions come to
about 4 percent of monthly spending,
led by streaming and cloud storage.
Dividends and interest project to
steady growth over the next year.
Want me to flag the ones you have
not used lately?

Built for the Homelab. Enterprise-Grade Architecture.

A decoupled architecture ensuring absolute privacy, rock-solid stability, and the ability to host multiple users from a single deployment.

Multi-Tenant, Multi-User

Host completely isolated financial environments for family, friends, or a partner from a single deployment. Strict query-level tenant isolation with view-only access for shared visibility.

AES-256-GCM Encryption

Your sensitive data — including Plaid access tokens and raw bank payloads — is encrypted at rest, ensuring your financial footprint remains strictly yours.

CI pipeline with all test jobs passing across the monorepo

Bulletproof Reliability

Orchestrated by 9 independent BullMQ workers and protected by over 4,000 automated tests.

Developer Experience

Engineered for AI Coding Agents.

Bliss is built with strict Spec-Driven Development. Every repository includes embedded context files, allowing tools like Claude Code or GitHub Copilot to onboard instantly and start shipping features safely.

CLAUDE.md Primed

Five layered context files detailing architecture, module systems, testing rules, and state management conventions. AI agents load the right context automatically based on working directory.

Spec-Driven Architecture

Every system — from the Plaid webhook engine to the pgvector classification pipeline — was documented in isolated markdown specs before a line of code was written. 56 specification files across 3 layers.

Type-Safe Boundaries

Strict Prisma schemas and validated API contracts ensure AI-generated code won't break the data model. 65+ migrations maintain schema integrity across every change.

OpenAPI-Documented Endpoints

Every API surface is documented in OpenAPI 3.0 YAML specs — 24 files covering authentication, transactions, portfolios, imports, and more. Browse them interactively in the API Reference.

~/bliss
$ claude

> Loading project context...

  ✓ CLAUDE.md (root)        — architecture, critical rules
  ✓ apps/api/CLAUDE.md      — route patterns, auth flow
  ✓ apps/backend/CLAUDE.md  — worker patterns, services
  ✓ apps/web/CLAUDE.md      — design tokens, components
  ✓ apps/docs/CLAUDE.md     — sync script, Nextra

> Context loaded. 5 files, 56 specs, 4,504 tests

$ How can I help with Bliss?