// the find
MicroPyramid/Django-CRM
Open Source CRM for Startups — Django REST + SvelteKit · Self-hosted · Multi-tenant · Free forever
BottleCRM is a self-hosted CRM for small businesses and startups, built on Django REST Framework with a SvelteKit frontend. It covers the standard CRM surface area — leads, contacts, accounts, opportunities, cases, invoices — and adds multi-tenancy via PostgreSQL Row-Level Security. The MCP server integration is a genuinely modern touch that lets AI agents operate inside the CRM as an authenticated user.
PostgreSQL RLS for multi-tenancy is the right call — pushing isolation into the database rather than relying on application-level WHERE clauses means you can't accidentally leak tenant data with a missing filter. The test suite is serious: cases alone has 20+ test files covering escalation, SLA pause, inbound email, merge/unmerge, and CSAT, which signals maintainers who've been burned by regressions. The `uv`-based backend setup is fast and reproducible, and the `devlogin` management command (JWT minting without OAuth for local dev, DEBUG-only) is a practical quality-of-life detail most projects skip. The MCP server letting AI agents inherit your RLS scope and role permissions is a reasonable security model — the agent can't see data you can't.
AWS is hard-wired into the critical path: SES for email and S3 for file storage. Self-hosting without AWS means rewiring these yourself before the system is functional. The cases module has metastasized to 23 migrations covering escalation, approval workflows, inbound email parsing, case merging, SLA pausing, CSAT surveys, time tracking, and parent/child relationships — it's doing too many jobs and the blast radius of a bug there is enormous. Redis is a hard dependency for both Celery and caching with no documented fallback, so a Redis outage silently degrades core functionality rather than degrading gracefully. The MCP server uses stdio transport only, which works fine for local Cursor/Claude but doesn't extend to multi-user or server-side deployments.