Relay
Scheduled Sep 19, 2026A CRM whose database you can query directly.
Replaces
- Salesforce Sales Cloud · Salesforce, Inc. — $195 per seat per month (Core), about $936,000/yr at 400 seats
- HubSpot Sales Hub · HubSpot, Inc. — $90 per seat per month (Professional), about $432,000/yr at 400 seats
Rented, per year
$936,000
Salesforce Sales Cloud list price at 400 seats.
Owned, per year
$14,880
AWS infrastructure only. Azure is $15,720.
Build
12 weeks
3 engineers. To parity on the core features above, including migration of accounts, contacts, opportunities, activity history and closed-won history from Salesforce or HubSpot.
Difficulty
4/5
Substantial. Compliance or realtime depth involved.
Reference organisation: 400 sellers plus 600 free read-only seats, 2.5M accounts and contacts, 40M captured activities a year, single region, prod + non-prod. 3-year Compute Savings Plan on Fargate / 3-year reservation on Container Apps. Aurora minimum 1 ACU in prod, 0.5 in non-prod. One read replica. S3 Intelligent-Tiering on message payloads. Excludes LLM gateway token cost, vendor support plans and egress above 1 TB/month. Figures are infrastructure only and exclude the build.
What it is
Relay is a CRM: accounts, contacts, opportunities, pipeline stages, forecasting and automatic activity capture from mail and calendar, on a Postgres schema you can query with psql. It is aimed at revenue organisations past roughly 150 sellers, where the CRM has become the most expensive seat in the company and simultaneously the least trusted dataset in it. Relay does not try to be a platform. It is a well-shaped sales database with a fast interface, honest forecasting, and no charge for the finance, marketing and support people who need to read it.
Why this one stops making sense
- Salesforce lists Sales Cloud Core at $195 per user per month, billed annually. Four hundred sellers is $936,000 a year, before Sandboxes, before Data Cloud, before the integration user licences.
- The seats that make a CRM useful — finance checking bookings, support checking entitlement, marketing checking source — are the seats you ration, because every one of them costs the same as a seller.
- Your pipeline history is the single best forecasting dataset you own, and getting a clean copy of it out means Bulk API jobs, governor limits and a data engineer's week.
- Every custom object, validation rule and Flow you add is unpaid work that increases your switching cost. That asymmetry is the business model, not an accident.
- Admin cost is the hidden line. A 400-seat Salesforce org typically carries two to four certified administrators whose entire job is keeping the rented system tidy.
What ships
- Accounts, contacts, leads and opportunities with a configurable field model per object
- Pipeline board and table views with stage gating, required fields and rot detection
- Forecasting by rep, team and territory, with committed, best-case and weighted roll-ups
- Forecast snapshots taken nightly so you can replay what the number looked like in week two
- Automatic activity capture from Microsoft 365 and Google Workspace mail and calendar
- Contact-role and buying-group modelling with relationship strength derived from activity
- Quotas, territories and comp-plan attainment views
- Duplicate detection and merge with a full, reversible audit trail
- Unlimited free read-only seats for finance, support and marketing
- Direct SQL and BI access to a documented, stable read replica
Data model
Stack
- frontend
- Next.js 15 App Router + Tailwind + TanStack Query + virtualised tables
- backend
- NestJS on Node 22 — REST plus a webhook ingress service for change notifications
- database
- PostgreSQL 16 with Row Level Security per territory and per record owner
- cache
- Redis 7 for list-view caches, activity timelines and rate limiting
- queue
- BullMQ for activity ingestion, enrichment, dedupe and forecast snapshots
- auth
- OIDC against the customer IdP; SCIM 2.0 for provisioning and deactivation
- search
- PostgreSQL tsvector with pg_trgm for fuzzy account and contact matching
- ai
- Optional call and thread summarisation, next-step suggestion, through an LLM gateway
Parity, honestly
What we match, and what we do not.
The rows marked No are the important ones. If one of them is the reason you bought Salesforce Sales Cloud, keep buying it — and we will tell you that on the first call rather than the fifth month.
| Capability | Salesforce Sales Cloud | Ours | Note |
|---|---|---|---|
| Accounts, contacts, opportunities, custom fields | Yes | Yes | — |
| Pipeline and forecast roll-ups | Yes | Yes | Relay keeps nightly forecast snapshots by default, which Salesforce charges for as a feature. |
| Automatic email and calendar capture | Yes | Yes | Microsoft Graph and Gmail change notifications, not a mailbox scraper. |
| Territory and quota management | Yes | Yes | — |
| Free read-only seats for the wider business | No | Yes | The largest single cost difference at any size. |
| Direct SQL access to your own CRM data | No | Yes | A read replica with a documented schema. No API limits, no export jobs. |
| AppExchange — thousands of installable applications | Yes | No | This is a genuine gap and the honest reason many organisations stay. We integrate the four or five systems you actually use, natively. We do not rebuild a marketplace, and if your revenue stack depends on six AppExchange packages, replacing Salesforce is the wrong project. |
| A deep labour market of certified administrators | Yes | No | You can hire a Salesforce admin next week. Relay is maintained by your own engineers or under a Conseiltek Run agreement. That is a real operational difference and you should price it. |
| CPQ, revenue recognition and billing | Yes | No | Quoting, approvals and complex discounting are a separate product and a separate engagement. Relay stops at the closed-won boundary. |
| Vendor-run SOC 2 and FedRAMP authorisations | Yes | No | Relay inherits your cloud compliance posture. FedRAMP in particular is a reason to keep buying. |
| Native iOS and Android apps | Yes | Partial | Installable PWA with offline read and queued writes. A store-listed native app is a separate engagement. |
| Sandbox and metadata deployment tooling | Yes | Yes | Relay's configuration is code in your repository, so a sandbox is a branch and a deploy is a pipeline run. |
| AI call summaries and next-step suggestions | Partial | Yes | Through your own LLM gateway, against your own data, with no training on your content. |
| 24/7 vendor support with named CSM | Yes | Partial | Covered under a Conseiltek Run agreement, or by your own team after handover. |
Reference architecture
Built twice, on purpose.
Every application in Techtons ships with a production architecture for AWS and one for Azure, using the same diagram grammar so you can read them side by side. Your cloud, your account, your bill.
Amazon Web Services
- Compute
- ECS Fargate services (api, ingress, worker) behind an ALB
- Data
- Aurora Serverless v2 PostgreSQL with a dedicated read replica for BI, ElastiCache Redis
- Storage and edge
- S3 for raw message payloads and attachments, CloudFront for the front end
- Identity
- Cognito federated to the customer IdP via OIDC/SAML
- Observability
- OpenTelemetry to CloudWatch and X-Ray, with ingestion lag as a first-class metric
- Infrastructure as code
- Terraform, one module per environment, remote state in S3 with a DynamoDB lock
Services
The decision worth arguing about
Activity capture is the part that decides whether the deployment is cheap or expensive, and the non-obvious decision is that raw messages never enter Postgres. Microsoft Graph and Gmail push change notifications at a public ingress service, which does nothing but validate, write the full payload to S3, and drop a pointer on SQS; a worker then extracts only the relationship rows — who mailed whom, when, about which opportunity — into Aurora. A 400-seller org generates on the order of 40 million messages a year, and putting those bodies in Aurora would triple the storage bill and ruin the vacuum behaviour on the tables you actually query. The trade-off is a second hop when a rep opens a full email in the timeline, so we keep the last 200 activities per account in Redis and accept a 150ms cold read on anything older. The other thing you own once you do this yourself: Graph subscriptions expire every three days, so subscription renewal becomes a scheduled job you must monitor, and a silent renewal failure looks exactly like a quiet week in the pipeline.
Microsoft Azure
- Compute
- Azure Container Apps (api, ingress, worker) with KEDA scaling on Service Bus depth
- Data
- PostgreSQL Flexible Server with a read replica for BI, Azure Cache for Redis
- Storage and edge
- Blob Storage for raw payloads and attachments, Front Door Standard for edge and WAF
- Identity
- Microsoft Entra ID directly — no broker layer
- Observability
- Azure Monitor and Application Insights, OpenTelemetry-native
- Infrastructure as code
- Bicep, azd-compatible layout
Services
The decision worth arguing about
On Azure we delete the public webhook entirely. Microsoft Graph delivers change notifications into an Event Grid partner topic, which means the ingress service has no internet-facing endpoint to defend, no notification-validation handshake to get wrong, and no shared secret to rotate — Event Grid authenticates with managed identity inside the tenancy. That is a real advantage over the AWS shape and it is why the Azure diagram has one fewer box. The trade-off is that you inherit Event Grid's delivery semantics rather than HTTP's: at-least-once and not ordered, so the worker must be idempotent on the Graph resource identifier plus changeKey, and a mailbox that generates a burst of edits will hand you the same message three times out of order. Graph subscriptions still expire on the same three-day clock, so the renewal job — and the alert on it — exists on both clouds.
Sources
Every price on this page, with the page we read it from and the date we read it.
| Product | Plan | List price | Checked | Source |
|---|---|---|---|---|
| Salesforce Sales Cloud | Core | $195 / seat/month | 2026-09-05 | www.salesforce.com/sales/pricing/ |
| HubSpot Sales Hub | Professional | $90 / seat/month | 2026-09-05 | www.hubspot.com/pricing/sales Professional also carries a one-time $1,500 onboarding fee; Enterprise lists at $150 per seat per month with a $3,500 onboarding fee. |
Should you still be paying for Salesforce Sales Cloud?
Two weeks, fixed price. We audit what you actually use, map it against Relay, cost the replacement on your own AWS or Azure account, and give you a delivery plan. If the honest answer is to keep the licence, that is what the report will say.