10 min read - Running a Consultancy on Open-Source Business Tools: Our Operations Playbook
Business Operations & Automation
Most consultancies run their business on a patchwork of SaaS: a CRM here, an email tool there, a scheduling widget, a blog platform, a social scheduler, and Zapier duct-taping it all together. We used to do the same thing. Then we added up the invoices.
At Exceev, we replaced that entire stack with six self-hosted open-source tools, running on two modest cloud servers, fully integrated so data moves between them without anyone manually copying things between browser tabs. This is how we actually operate — not which tools we picked, but how they chain together.
The six: Twenty (CRM), Cal.com (scheduling), ZeroMail (transactional email), Ghost (content publishing), Postiz (social distribution), and n8n (the automation layer connecting everything). Part 1 covered our engineering framework stack. Part 2 covered the infrastructure underneath. This post is the business layer.
How Data Flows Through the Stack
Two main pipelines run our operations. Here's how data actually moves:
Lead pipeline: Website form → n8n → Twenty (CRM contact created, pipeline assigned) → Cal.com (discovery call booked) → n8n → Twenty (stage updated) → ZeroMail (proposal follow-up sent)
Content pipeline: Ghost (post published) → n8n → Postiz (social posts across platforms) + ZeroMail (newsletter) → reader clicks through → n8n → Twenty (attribution stored)
n8n sits in the middle of everything. It's the reason these six tools feel like one system instead of six browser tabs.
From Stranger to Signed Client
The pipeline that turns an inbound lead into a paying client is the most important workflow in any consultancy. Ours runs through three tools — Twenty, Cal.com, ZeroMail — connected by n8n, with zero manual data entry between stages.
Twenty is our CRM. It's often described as an open-source HubSpot, but that undersells it. Twenty sits on PostgreSQL with a GraphQL API, which means every piece of CRM data is queryable and programmable from day one. When we needed a custom lead scoring model weighted by engagement signals from our analytics, we wrote a SQL function and plugged it into Twenty's data layer directly. Try that with HubSpot without an enterprise license.
When someone fills out our contact form, an n8n workflow catches the webhook, creates the contact in Twenty, tags them with source and page, and routes them to the right pipeline — AI consulting, Angular work, architecture review, whatever they indicated. Under two seconds, no human involved. The person who needs to follow up sees it in their dashboard immediately.
Cal.com handles scheduling. Instead of "does Tuesday work?" email chains, every follow-up includes a booking link. Timezone detection, availability rules, buffer times, Google Calendar sync — the basics. But the real value: when someone books, Cal.com fires a webhook, n8n catches it, and their Twenty contact automatically moves to "Discovery Call Scheduled." Nobody has to remember to update the CRM.
ZeroMail handles transactional email — our self-hosted SendGrid. After the discovery call, when we move a contact to "Proposal Sent" in Twenty, n8n picks up the stage change, pulls their details and the proposal link, and sends a personalized follow-up through ZeroMail. Subject line references their project, body pulls from discovery call notes, CTA links to a Cal.com booking for the proposal review. Templated but dynamic.
The whole pipeline — form submission to proposal follow-up — involves a human only at the decision points: qualifying the lead, doing the discovery call, writing the proposal. Everything between those steps runs itself.
The Content Engine
Content keeps a consultancy visible. For us that means writing technical articles, distributing them across social platforms, and feeding engagement data back into the pipeline. Ghost, Postiz, and n8n handle this.
Ghost replaced a WordPress setup we'd been limping along with. The difference was immediate — Ghost is built for publishing, not for being a plugin marketplace that happens to have a blog. Clean editor, fast, rich content without fighting a page builder. And crucially, a first-class API where every post, tag, and author is accessible via REST. That matters because our workflow isn't "write a post, hit publish." It's "write a post, trigger a distribution chain."
When a post goes live in Ghost, a webhook fires. n8n catches it, extracts title, excerpt, featured image, tags, URL, and sends everything to Postiz — our self-hosted Buffer alternative. Postiz manages LinkedIn, X, and other platforms from one interface.
The important bit: the n8n workflow doesn't just blast the same text everywhere. LinkedIn gets a longer excerpt with professional hashtags. X gets a concise hook with a link. AI-tagged articles get AI-specific hashtags and relevant mentions. All of this is logic in the n8n workflow, not manual work, and it runs within minutes of publishing.
The feedback loop closes in Twenty. When someone arrives at our site from a social post and fills out the contact form, the n8n workflow that creates their CRM record also captures the referral source. Over time, we see which topics drive qualified leads — not just traffic. That kind of attribution usually requires enterprise marketing tools. We built it with a webhook, two API calls, and an afternoon.
Ghost also powers the newsletter. Subscribers sync to ZeroMail via n8n, so publishing automatically sends a formatted email version through our own infrastructure. No Mailchimp fees, no third party deciding which emails get delivered.
n8n Ties Everything Together
If the lead pipeline and content engine are the two main workflows, n8n is the nervous system connecting them.
A concrete example: blog post publishes on Ghost. n8n catches the webhook, creates social posts via Postiz, sends the newsletter via ZeroMail, logs the publication in a tracking sheet. Three downstream actions from one event, all parallel, all done before the author closes the Ghost tab.
Another: prospect books a discovery call on Cal.com. n8n catches it, updates their stage in Twenty, sends a confirmation email with prep questions via ZeroMail, and schedules a reminder 24 hours before the meeting with the agenda attached. One calendar booking, three automated actions, no human touching anything.
We run about 30 active workflows. Some are trivial — Ghost publish triggers Postiz post. Some are complex — multi-step nurturing sequences that branch on engagement signals. All replaced manual work that someone used to do by switching between browser tabs.
The workflows are visual, versionable, and self-hosted. We can see exactly what fires when, duplicate a workflow and modify it for a different scenario in minutes. And because n8n runs on our infrastructure, the workflow data — client names, email addresses, business logic — never leaves our network.
Maintenance is real but manageable. Webhooks fail sometimes. API schemas change when tools update. We run a meta-workflow that health-checks the other workflows daily and alerts via ZeroMail if anything is in an error state. Automation monitoring automation sounds recursive, but it works.
What We're Not Paying For
The SaaS equivalent, roughly:
- HubSpot CRM (Starter): ~$150/month for a team of three with the features we actually use
- Calendly (Teams): ~$48/month for three seats
- SendGrid/Postmark: $25-80/month depending on volume
- Ghost Pro: $25-75/month
- Buffer/Hootsuite: $36-120/month
- Zapier (Professional): $50-75/month
Total: $334-548/month, or $4,000-6,500/year. And that's conservative — HubSpot alone climbs fast once you need custom properties, workflow automation, or reporting.
Our cost: two cloud servers at ~$60/month. Plus about four hours a month in maintenance.
But the savings aren't really the point. The point is control. When we needed a custom CRM field that calculated project value from engagement signals, we built it in an afternoon. When we wanted custom UTM structures in social distribution, we modified an n8n workflow in twenty minutes. When ZeroMail's delivery rate dipped, we fixed the DKIM config ourselves instead of opening a support ticket and waiting three days.
That compounds. Every month we're building on a system we fully understand and can modify. SaaS users are building on a system that can change its pricing, deprecate features, or get acquired — and their only option is migration.
The Honest Parts
Twenty is still maturing. The UI lags behind HubSpot in polish. Some reporting requires direct database queries instead of built-in dashboards. We accept that because the data model is excellent, the API is comprehensive, and development moves fast. But if your team needs something that "just works" out of the box, Twenty asks for more patience.
You need someone who knows infrastructure. Docker, reverse proxies, SSL, basic Linux admin — this isn't optional. We're a tech consultancy, so it's home territory. For a marketing agency or law firm, self-hosting six tools would probably cost more in overhead than the SaaS savings. A hybrid approach — self-host what you can, pay for managed versions of the rest (Ghost Pro, Cal.com Cloud, n8n Cloud all exist) — is a reasonable middle ground.
Debugging automation chains is annoying. When a five-step n8n workflow breaks at step three, the error sometimes surfaces at step five. Tracing data through webhook payloads, API responses, and conditional branches takes patience. We've added logging to critical workflows, but it's still harder than debugging a two-step Zapier automation.
Self-hosted email requires ongoing attention. SPF, DKIM, DMARC, IP warmup, bounce handling — none of this is set-and-forget. We check deliverability metrics weekly and have had to adjust sending patterns twice to maintain inbox placement. If email deliverability is critical and you don't want to think about it, Postmark is worth the money.
Postiz is the newest link. It handles LinkedIn and X well, but the feature set is still growing. Advanced analytics, team approval workflows, deep integrations beyond major networks — gaps exist. We manually review high-stakes content like client announcements.
Despite all that, we'd make the same choices again. Six SaaS products that don't talk to each other without a seventh SaaS product to glue them together is both more expensive and less flexible than what we have now.
If You Want to Try This
Start with the workflow that causes the most friction. For most teams, that's the lead pipeline.
Our recommended order: Cal.com first (easiest to self-host, immediate ROI), then n8n (the multiplier that makes every other tool more valuable), then Twenty or Ghost depending on whether your bottleneck is CRM or content. ZeroMail and Postiz come last — they need the other pieces in place before the automation chains make sense.
Our process documents how we set this up, and we've helped other consultancies build similar stacks. If you're evaluating whether this approach fits your team, reach out. We'll share what worked, what didn't, and what we'd do differently next time.
We should talk.
Exceev works with startups and SMEs on consulting, open-source tooling, and production-ready software.