Home · Insights

The AI stack we run Viacala on, and why

We get asked what's actually behind Viacala's own systems more than almost anything else. Fair question. If we're going to build revenue systems for other businesses, ours should be running on something real. Here's the exact stack, tool by tool, and why each piece is there instead of an alternative.

Why we run our own stack instead of one all-in-one platform

The easy path is a single platform that bundles CRM, automation, and AI into one subscription. We don't use one, for the same reason we don't recommend one to clients past a certain size: bundled platforms optimise for keeping you inside them, not for the specific job each piece needs to do. Every tool below was picked on its own merits, and every piece can be swapped out without rebuilding the rest. That's not a purity test. It's what keeps the total monthly cost low and keeps us from being one pricing-page change away from a forced migration.

The infrastructure layer

Everything runs on a self-hosted VPS with OVHcloud, managed through Coolify, an open-source alternative to Heroku-style platforms. This is the layer most agencies skip and just rent from a US cloud provider instead. We host in the EU deliberately: customer and prospect data never has to leave European jurisdiction, which simplifies the GDPR conversation considerably (see our data privacy guide for why that matters). Coolify handles deployments, SSL certificates, and service management from one dashboard, which means adding a new service is a few clicks, not a new server to provision.

The workflow engine: n8n

n8n is the layer that actually fires when something happens: a form submission, a new lead, a booking. Self-hosted, so there's no per-execution fee regardless of volume, which matters once a system is running thousands of workflow executions a month. It's also the piece that talks to every other tool in this stack: n8n is what reads a new record in the CRM, calls the AI layer to draft a reply, and writes the result back. If there's one tool that makes the rest of this stack behave like a single system instead of five disconnected apps, it's this one.

The AI layer: Claude

For anything that needs to read, reason about, or draft language (replying to enquiries, summarising a call, drafting a report) we use Claude via API, on enterprise terms with an explicit no-training clause. We chose it over building on a consumer chat interface for the same reason covered in our privacy guide: enterprise API terms mean customer data isn't used to train future models, which matters when the data belongs to someone else's business. The AI layer is intentionally the smallest piece of the stack by design: it drafts and reasons, it doesn't hold state or own data. n8n and the CRM handle that.

The CRM: Attio

Attio holds the acquisition pipeline, account records, and everything that needs a human to see it in one place. We picked it over the older generation of CRMs because its data model is fully flexible and its API is built for exactly the kind of automation we're wiring around it. n8n reads and writes to Attio directly, so a new lead landing in the CRM can trigger a workflow within seconds, and a workflow completing can update a record without anyone touching the CRM by hand.

Booking: Cal.com

Cal.com handles every call booking end to end: availability, time zones, confirmations, reminders. It's open source, has a generous free tier, and its API means a booking event can trigger the same n8n workflows as everything else. When someone books a call from an automated reply, that booking already carries the context of how they arrived, because it's the same pipeline.

Analytics: Umami

Self-hosted, GDPR-clean, no cookie banner required because it doesn't use cookies to track visitors. We chose it over the heavier open-source alternatives (which typically need a dedicated analytics database) because it runs comfortably on the same small VPS as everything else, and because a cookie banner on every page would work against the calm, direct experience we want a visitor to have.

Signatures: DocuSeal

For anything that needs a signed agreement (a data processing agreement, a service contract) we use DocuSeal on its hosted free plan rather than a self-hosted deployment, since signature volume is low enough that it isn't worth the server overhead yet. Small detail, but it's an example of the underlying rule: self-host what runs constantly and matters at scale, use a hosted free tier for what doesn't.

Observability: Phoenix

Once you have AI agents doing real work (drafting replies, deciding what to escalate) you need to actually see what they're doing, not just trust that they're doing it correctly. Phoenix, self-hosted, records and traces every agent run so we can review exactly what an agent saw, what it decided, and why. We looked at Langfuse first and found it heavier than the VPS needed to carry for what we actually use it for; Phoenix does the job without the extra weight.

What this actually costs, roughly

The infrastructure side (the VPS, Coolify, and everything self-hosted on it) runs at a small fraction of what a comparable bundle of SaaS subscriptions would cost, because most of the stack has no per-seat or per-execution fee once it's running. The variable cost is the AI API usage, which scales with actual volume rather than a flat subscription. For a small business's actual enquiry volume, that's typically a few cents per interaction, not a meaningful monthly line item.

What we'd change for a client

This exact stack isn't the only correct answer. It's the one that fits our own scale and technical comfort with self-hosting. For a client without the appetite to manage a VPS, we'd typically keep n8n and the AI layer the same (they're the parts doing the actual work) and swap the self-hosted pieces for their hosted equivalents, trading a small monthly fee for zero maintenance burden. The architecture stays the same either way. What changes is who's responsible for keeping the lights on.

The tools matter less than most agencies make them sound. What matters is whether the pieces actually talk to each other, and whether you own the data in between.

The honest summary

Nothing in this stack is exotic. It's mostly open-source or usage-based tools, wired together by n8n, hosted on European infrastructure we control. The result is a system that costs little to run, that we can extend without asking anyone's permission, and that never puts a client's data somewhere we can't account for. That's the actual reason it looks like this: not because every piece is the newest or most talked-about tool, but because every piece earns its place.

Want to see what this looks like for your business?