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.
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.
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.
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.
- Talking to the AI workspace instead of typing A proof of concept for click-to-talk voice input: a WebRTC room, a silence-segmenting voice worker, and speech-to-text turn a spoken request into a chat message, which the agent then acts on, updating the workspace itself, calendar, inbox, and more, all from voice prompts alone.
- Spreadsheet supercharge with AI Import an Excel file into a real Google Sheet, ask it questions in plain language and get grounded answers and charts back, then let an agent write to it automatically from inbound messages.
- Inbound email to qualified lead An IMAP connector pulls a mailbox, a deterministic parser decides if a message qualifies as a lead, and an agent tool appends it to Google Sheets, live.
- Teaching an agent with corrections One agent assigned across IMAP and WhatsApp, corrected on a real message or drilled on a mocked one, turns a person's feedback into a rule it checks on every future message, on either channel.
- Searching the open web for market signals A topic gets expanded into several queries, searched across government, news, web, X, and Threads sources at once, and collapsed into a handful of scored, evidence-backed signals.
- Turning an idea into an implementation-ready plan A rough idea or a detected capability gap goes through a design conversation that confirms one requirement at a time, updating a live feature plan, until it's approved and only then built.
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