← all play-ground
Live implementation

Prospect Intelligence Platform

An AI-assisted CRM for B2B sales teams. It connects to a company's email and WhatsApp traffic, uses an agent to spot and score possible leads out of that traffic automatically, and gives reps a working record of contacts, companies, and call-ready briefs, instead of prospecting starting from a blank list. A backend stays the sole source of truth and scorer, and a workspace renders every stage live.

What it does

A salesperson gives the AI agent one request in plain language and gets back a live, ranked, evidence-backed call list with briefs, watching the whole research run happen in the UI as it goes rather than waiting on a report.

Company discovery

The AI agent kicks off a discovery run; queued jobs find and enrich candidate companies against a targeting profile.

Decision-maker and signal search

Contacts and buying signals are found per company and attached with source evidence, not asserted without a trail back to where they came from.

Deterministic scoring

The backend computes the opportunity score from a fixed formula. The agent can propose, but never sets, the final number.

Live progress

Every stage of a run (companies appearing, status changing, scores landing) streams to the workspace as it happens.

Selection & call briefs

A salesperson selects rows in the UI, then asks the agent to prepare briefs for exactly that selection.

Evidence, not assertions

Every material claim carries an OBSERVED / INFERRED / ESTIMATED / USER_PROVIDED / MOCK classification back to its source.

Opportunity score breakdown page showing positive factors, deductions, and evidence for a scored prospect
Click to enlarge · a full opportunity score breakdown

Design

Three parts, each with one job: an AI agent reasons and decides what to do next, a backend owns the data and the score and is the only thing allowed to change either, and the workspace shows whatever the backend broadcasts. The agent never touches the database or the UI directly, it only ever acts through connectors and tools.

AI agent Connectors & tools Backend sole source of truth Data & evidence Scoring engine Live updates Workspace · updates live, no reload

Connectors

Inbound channels an agent can watch: email over IMAP today, alongside webhook-based messaging, each normalised into the same event shape so what happens next doesn't depend on where a message came from.

Tools

Outbound actions an agent can take, each scoped to what an organisation has actually configured: appending a qualified lead to a spreadsheet is one, more slot into the same pattern.

Scoring engine

The opportunity score is always computed by the backend from a fixed formula. The agent can propose a read, never set the number itself.

Multi-tenant by design

Every research run, company, and channel is scoped to an organisation at the access-control layer, not just filtered in a query, and that isolation is checked, not assumed.

Live by default

Every stage of a run (companies appearing, status changing, scores landing) shows up in the workspace as it happens, not on refresh.

Demoable offline

Discovery and enrichment run against deterministic mock data behind the same interface a live provider would use, so the full flow works end to end without any live external calls.

The agent that rewrites its own playbook

The interesting part isn't the LLM call, it's what happens after a human disagrees with it.

Playbook-driven analysis

Each agent's decisions are shaped by a set of playbooks: accumulated guidance retrieved per task and combined with live context (an inbound message, a connector event) into one LLM call.

No manual playbook editing

Playbooks aren't an admin-editable settings screen. The only way they change is when an admin gives feedback or corrects the agent in chat: a job asks the LLM itself to decide whether to create, update, or archive its own playbooks, and applies that decision without a human sign-off step.

Versioned, not silent

Every playbook change is stored as a new version, so the autonomous edits are inspectable and reversible, even though nothing blocks them from happening.

Provenance tracking

Each playbook is linked back to the specific event, an email, a feedback note, that caused it to be retrieved or changed, so a decision can be traced to what prompted it.

Per-module agents

Agents are bound to specific modules, like lead ingestion, so different parts of the product can run their own tuned agent behind the same execution engine.

Live

Use cases

Concrete, real workflows the platform runs end to end, each with its own diagram and detail on its own page rather than piled up here.

Live

Every LLM call is traced, not just logged

Every one of the agent's calls, across every workflow above, is instrumented with Langfuse for LLMOps: tagged by workflow name, environment, and which agent made the call, with full latency and cost accounting per call rather than per request.

Every generation traced

Each distinct workflow type, from lead scoring to feature design, lands in one queryable trace history.

Per-call latency

Measured per call, not per request, so a slow step inside a multi-call workflow is visible on its own rather than hidden in a total.

Multiple models in rotation

Different model tiers swapped per workflow rather than one model for everything.

What building this actually involved

A Laravel backend with a domain layer (agents, integrations, analysis, scoring, observability) kept separate from HTTP controllers and Eloquent models, queued work handled by Horizon workers instead of running inline, and a React admin UI covering agents, leads, contacts, connectors, teams, and research runs. Multi-tenant from the ground up: every record is scoped to an organisation at the access-control layer, and that isolation is checked, not assumed.

Key properties
Multi-tenant SaaS Self-tuning playbooks Pluggable connectors Deterministic scoring Live sync Tenant isolation