Back to projects

CRM & Sales Platform

WB CRM

A sales system that takes a company from found on Google Maps to a signed recurring contract: pipeline, follow-up cadences, a self-service booking page, calls with recording and transcript, and campaigns in four languages.

Next.jsNestJSTypeScriptPostgreSQLPrismaGoogle APIsAWS S3dnd-kitReact FlowRechartsReact Native

Some details omitted under NDA

WB CRM

The problem it solved

WB's own B2B selling ran on spreadsheets and memory. Finding a company, working out whether it was worth the call, reaching the right person, booking the meeting, remembering what was said and keeping the contract alive were six separate tools and a lot of retyping.

The cost was not untidiness, it was money. Forgotten follow-ups, meetings booked into slots that were already taken, a good call nobody else ever heard, a renewal that lapsed with no warning, and proposals that took half a day to write.

What the CRM does

Find companies

Search Google Maps by trade and area, then check whether the phone, email and WhatsApp actually work and whether the company already advertises.

A pipeline you drag

A kanban funnel with deals, stages and the history of every stage change.

Follow-up that does not rely on memory

Cadences with tasks and reminders for leads, contacts, companies and partners.

A public booking page

Prospects book themselves, and only slots that are genuinely free on the Google calendar are offered, with the meeting link created on the spot.

Calls with recording and transcript

Calls made through GoTo come back onto the company record with the recording and a written transcript attached.

Every call comes back reviewed

Each conversation gets a structured read: situation, pain, impact, deadline and evidence, plus no-show risk and what was committed to.

Proposals written with you

The assistant asks what it still needs to know, takes the answer and returns a numbered version that can be corrected and revised.

Email campaigns in 4 languages

Multi-step sequences with opens, clicks, unsubscribe and a suppression list, plus domain warm-up for cold outreach.

WhatsApp at scale

Broadcasts paced so the number does not get blocked, and a visual chatbot builder you draw instead of code.

Inbox kept in sync

Gmail is read every five minutes, so a client reply lands on the right record with no copy and paste.

Recurring contracts

What renews, what is a pass-through cost and what is courtesy, with hosting and domain renewal warnings.

A field app for the rep

Search businesses nearby, capture GPS, read a business card with the camera, and keep working with no signal, syncing later.

How it turned out

  • One place from "found it on Google Maps" to a signed recurring contract.
  • Nothing is retyped between tools: search, validation, cadence, booking, call, recording, transcript, review and proposal all live on the same record.
  • The diary stops double-booking, because the public booking page reads real Google Calendar availability before offering a slot.
  • Every call is reviewed to the same standard, not only when somebody has time to listen.
  • Renewals and courtesy items stop slipping, because the system warns before they lapse.
  • The AI assistants run in a separate service that the CRM triggers, receives back, stores and displays. The CRM is not tied to one model vendor.

In numbers

71

screens in the system

7

AI assistants

4

languages for outreach

12

scheduled routines

For technical visitors

The rest of this page is written for whoever decides the purchase. This block is for whoever has to maintain the system.

  • Domain-driven NestJS backend: 117 Prisma models, 45 migrations, 47 bounded contexts, 49 modules, 62 controllers and 439 REST endpoints. 71 pages on the frontend.
  • 343 test files, roughly 3,344 cases. A test count does not prove quality, so the next line matters more.
  • An architecture test fails the build if Prisma leaks into the business layer or a controller injects a repository directly.
  • GoTo telephony means call logging, recording retrieval from S3 and transcription. There is no click-to-call and no softphone inside the CRM.
  • WhatsApp goes through a self-hosted Evolution API bridge, not the official WhatsApp Business Cloud API.
  • The 7 AI agents (call review, meeting review, gatekeeper review single and batch, call-transfer review, proposal writer and deep lead research) live in a separate service. The CRM triggers them, ingests webhooks, stores and presents.
  • 12 cron services for cadences, email sync, domain warm-up and renewal warnings. Swagger documentation served inside the app.
  • React Native field app: Google Places search, GPS capture, an offline write queue and business-card OCR on the device itself.
  • There is no payment or billing integration in this system, and we do not claim one.

Ready to build your project?

Let's turn your idea into a tailored digital solution.

Get in touch