The problem
Solo freelancers get told to "buy off the shelf" — and most off-the-shelf tools are priced and shaped for teams. A one-person CRM doesn't need collaborative pipelines and team Kanban; it needs a tight loop between "this lead came in," "this is what I told them," and "this is the next step." Same for project management and ads.
We were paying for four overlapping SaaS tools and using maybe 10% of any of them. Worse, none of them talked to each other — pipeline data lived separately from billing data, which lived separately from ad performance.
The approach
One database, three surfaces. All three internal apps read from the same Postgres (Neon for the CRM and PM, Supabase for the ads dashboard's pixel-event data). Lead → project → invoice → ad-performance is one query, not four exports.
Built only the views that matter. No collaborative features, no task-assignment UI, no Slack integrations. Just the screens a solo operator opens fifteen times a day:
- CRM: an inbox of leads, a single-page client view, a "what did I last send them" history, and a follow-up nudge.
- PM dashboard: projects with phase, blockers, and a single field for "what's the next thing I'd do if I had two hours."
- Meta Ads dashboard: consolidated spend / CTR / CPL across all managed accounts, with the per-account breakdown one click away.
Stack: Next.js App Router with React Server Components doing the heavy data reads, TanStack Query on the client side for the views that need optimistic updates, Neon and Supabase for the two data surfaces, and one shared auth session that gates all three apps behind a single signed cookie.
The outcome
The four off-the-shelf tools are gone. The number of times I switch tabs during a working day dropped roughly 70%. More importantly, when EMB recommends "build the simple version yourself" to a client, it isn't theory — it's the literal stack I run my own business on.
These case studies of EMB on EMB are also what the rest of this page is modeled on. If we wouldn't ship it for ourselves, we don't ship it for a client.
Three internal apps — CRM, project dashboard, and Meta Ads dashboard — sharing one auth session and one data model. Every operational decision EMB makes lives in something we built ourselves, which means we feel every gap before we ask a client to live with one.