Nexa Coverage

A growth CRM with AI assistance inside the pipeline: drafts, call scripts and lead scoring where the rep works.

79
Health score on the example lead
2
AI assistants per lead
1 drawer
To act on a deal

What they came with

Most CRMs are a filing cabinet. They record what already happened and leave the rep to write the follow-up, work out what to say on the call, and guess which open deal deserves the next hour. So the drafting happens in another tab, the lead score is a number nobody can interrogate, and the notes that would have made the message good sit unread further down the deal record. Nexa Coverage puts those three jobs in the record itself: drafts assembled from the deal's own history, scores stored with the reasons behind them, leads routed as they arrive.

What the engagement covered

  • Kanban pipeline with lead health scores
  • AI email drafter and call script generator per deal stage
  • Send and log from the lead drawer, no context switching
  • Stage, score, value and owner in one filterable table
  • Pipeline value and average score totalled live
  • Inactivity flags so leads do not go cold unnoticed

Technical detail

Drafts assembled from deal history

Context for a draft is built server-side from the deal's own timeline — notes, logged calls, stage changes — rather than from whatever the rep pastes into a box. The retrieval is bounded by deal and account id, and the timeline is trimmed oldest-first to fit the token budget, so a long-running deal degrades by losing old context rather than by failing.

Scores stored with their reasons

A score writes its contributing factors and the rule-set version alongside the number in Postgres, so the pipeline can show why a lead ranks where it does and an old score can be read back against the rules that produced it. Changing the scoring rules creates a new version and a re-run rather than overwriting history.

Model calls off the request path

Generation runs as a Celery job on Redis; the pipeline renders a pending draft and polls for the result, so a slow or rate-limited model call never holds a page open. Retries back off on 429s, and a job that exhausts them leaves the deal record untouched instead of writing a half-finished draft.

Routing decided at insert time

Tagging and routing rules are evaluated in a fixed order, first match wins, inside the same transaction that writes the lead. An unassigned lead therefore never exists to be picked up by hand, and a rule change applies to arrivals rather than silently reshuffling the directory.

The stack

Interface

Next.jsReactTypeScriptTailwind CSS

API and data

FastAPIPostgreSQLSQLAlchemyAlembic

Generation and jobs

OpenAICeleryRedis

Run and deploy

DockerDocker ComposeTraefik
Sector
Growth CRM
Audience
Sales teams
Shape
Built, shipped and run by us
Stack
Next.js, FastAPI, OpenAI
Next case studyNexa RecruiterAI-powered hiring: parse CVs, match against the job description, shortlist with the evidence attached.

Something like this to build?

Tell us what runs today and where it hurts. An engineer reads it and replies.