Back to website landing
Case study

Automated prospecting platform

Internal tool that orchestrates outbound prospecting (multi-channel sequences, lead scoring, contextualized replies) using CRM and scraping data.

Internal tool / AI & sales automation

At a glance

Multi-channel sequences
Auto scoring
Contextualized replies
Meeting booking
Project under active development — screenshots and outcomes coming soon.

Context

The need came from our own commercial operation. Prospecting quality was diluted by lack of industrialization, and market tools were either too generic (flat templates) or too costly to integrate for internal use.

The need

Industrialize prospecting without degrading contact quality. Market SaaS tools (Lemlist, Apollo, Instantly) handle sequences but don't really tie scoring, client context and CRM history together. We needed a system that consumes our own signals.

The built response

Platform that orchestrates sequences from the CRM, generates messages tuned to each lead's context via LLM, triggers automatic actions based on replies, and proposes meetings directly inside the conversation.

What this project shows in practice

Proves that the internal building blocks (CRM, scraping, AI agent) can form a coherent system that reduces human time to final qualification only — not the whole chain.

Key features

Configurable prospecting sequences (mail, LinkedIn, voice)
Auto-scoring of leads based on behavioral signals
Generation of contextualized replies (CRM + scraping data as input)
Multi-thread conversation tracking per lead
Meeting booking from within the conversation (Calendly-like integrated)
Full logging and traceability of automatic actions

Interconnections

The CRM provides commercial context (history, pipeline stage, ICP)
Scraping enriches external data (company, role, recent signals)
Generated replies use this cross-context to personalize
Actions flow back into the CRM (status updates, meetings, auto notes)
Performance feeds the scoring model (learning loop)

What this changes

Industrialized prospecting without losing personalization
Reduced human time on early stages (qualification, follow-up)
Full visibility on what works, what doesn't
Continuous learning on effective reply patterns
Under the hood

What was hard, what we settled

Technical stakes

  • Generate replies that don't feel bot-like — deep context, on-brand voice, conversational fluidity
  • Orchestrate multiple channels without sending 3 identical messages to the same lead 5 minutes apart
  • Score in near-real-time without flooding the CRM with updates
  • Strict compliance: CAN-SPAM, GDPR, opt-out handling, consolidated blocklist
  • Detect when the agent must hand off to a human (buying signal, complex objection, frustration)

Stack choices

  • Next.js + TypeScript (full-stack)

    Consistent with the CRM and scraping, unified deployment, shared types between client and server.

  • Postgres + Redis

    Postgres for conversations, leads and logs (clean relations). Redis for locks and short caches (anti double-send).

  • BullMQ for sequences

    Delayed queues, exponential retry, time-zone aware sending windows. Essential for multi-channel orchestration over time.

  • LLM API (with specific prompts)

    For reply generation. We keep business logic (who to contact, when, on which channel) in deterministic code; the LLM only handles language.

  • Webhooks back to the CRM

    Every agent action (reply sent, meeting booked, prospect blocklisted) flows into the CRM in real time. No separate screen, no double entry.

Difficulties faced

The auto / human balance

Too much auto and the prospect feels it. Too much human and industrialization collapses. We defined clear criteria (keywords, sentiment, stage) that trigger an automatic handover to the rep.

Holding the brand voice

Standard LLMs sound generic. We combine detailed prompts, few-shot examples from real past conversations, and the option to manually override per template.

Detecting bounces and blocks

SMTP, LinkedIn API, email providers — each has its own failure signals. We normalize everything into a unified status and adapt the sequence accordingly (pause, retry, kill).

Unstable scoring at the start

Early on, the scoring model has no data. We started with simple business rules, then progressively recalibrated with a model that learns from real conversions.

What we learned

  • AI helps but doesn't replace input data quality. Bad lead, bad context = bad message, no matter the model.
  • Logging and traceability from day one. Without it, impossible to debug behaviors or explain a drift to a sales rep.
  • Strict limits (volumes, frequencies, forbidden keywords) > trust in the agent. Better a cautious system than a reputation hit.
  • Test on your own prospects before offering as a product. We dogfood internally, learn, then industrialize.

Discuss your project

If your need is similar, we can frame a showcase site, a landing page or a more specific tool depending on your context.