Salesight scores every sales call against your own script

Salesight is AI software that scores recorded sales calls against your team's own script. Managers get coaching points for each sales representative (rep) without listening to the recordings.

Coaching and education programmes, agencies, business-to-business services

CreditBuilt with Ante Digital (Canada). Our founder is the lead developer.

The product

What a manager sees in Salesight

Salesight overview dashboard: average score 78 out of 100, a rising quality trend, sentiment, and the latest call score for each rep.
A Salesight call review: overall score 87, two objections detected, and two coaching tips.
Salesight team overview for the week: average score 81 across 70 calls, a score per rep, and the top objection.

About Salesight

Managers rely on sales calls to win business, but can listen to very few of them.

Salesight serves coaching programmes, agencies and business-to-business service firms that sell higher-priced offers on calls. Reps use Fathom or Fireflies, tools that record calls and turn speech into written transcripts. Each team supplies its own playbook: the script and guidance reps should follow.

Product
SalesightAI call review for teams selling higher-priced offers
Industry
Coaching and education programmes, agencies, business-to-business services
How they sell
Sales calls for higher-priced offers, 3 to 50 sales representatives
Build time
About 3 weeks to a first working version, then 9 months of further building

The problem

Managers cannot review most sales calls

  • Most calls go unheard

    A manager can listen to a handful of calls a week. Hiring someone just to review calls costs too much for a small team.

  • Feedback feels random

    Feedback is based on whichever call the manager happened to pick, so it feels random to the rep.

  • Repeated objections go unnoticed

    Reps hear the same objections, like “it's too expensive” or “I need to think”, and nobody sees the pattern.

  • Problems show up too late

    Managers may only notice a rep's falling performance after the month ends, when it is too late to help that month.

What we built

Salesight reviews calls using the team's own script

  • Your playbook becomes the scorecard

    The manager adds the script and offer details. Salesight turns them into sections and criteria, then scores every call against them, offer by offer.

  • Calls arrive on their own

    Each rep connects Fathom or Fireflies, or uses a personal link to send call transcripts from any other tool. Past calls can be imported.

  • Each call gets scores and coaching points

    Each call gets a 0–100 score and a score for each section. The review lists objections and the rep’s answers. Each missed requirement links to the moment in the call and a way to improve.

  • Managers can track each rep's progress

    Managers see how scores change and which sections each rep keeps missing. The view also shows streaks and badges.

  • Managers get summaries in Slack, Discord or email

    Slack, Discord or email receives a daily or instant summary of calls reviewed, average scores, coaching needs and common objections. Weekly reports show the patterns.

Control and safety

The manager decides what “good” means.

The scorecard comes from the team's own playbook. Every change is saved as a new version, so old calls keep the scorecard they were scored against.

  • People see only what they should. Reps see their own calls. Managers see the companies they are assigned to. Admins see everything.
  • The AI does not decide what happens next. Coaching actions (rolling out) are created only when the manager asks, using four fixed rules.
  • Each team has its own spending cap. Every team has a separate workspace and a monthly limit on AI spending. One team's usage does not reduce another team's budget.
  • Failures are recorded and retried. Each failure is logged with a reference number, and a failed review is tried again. Internal meetings excluded from scoring stay visible; this feature is rolling out.

For technical readers

How the system works

A call transcript (the written text of the call) arrives from a recorder or a personal link. The server removes duplicates and queues a review that finds relevant playbook passages and scores each call section using AI. It saves the review and sends a summary to Slack, Discord or email.

Fathom, Fireflies or a personal linkTranscript arrives
IntakeChecks and removes duplicates
Billing and spending limits
Error and usage tracking
Job queueUp to 3 attempts
Meeting checkSales call or internal? Rolling out
Playbook searchFinds the passages that apply
AI modelScores each section
DatabaseReviews, scores, objections
Manager and rep dashboards
Slack, Discord or email summary

Dashed lines show supporting connections, or parts that are paused or not yet built.

In more detail

Technology used (11 parts)Each part of the system, and why it was chosen.
LayerTechnologyWhy it was chosen
ScreensNext.js 16 (App Router), React 19, Tailwind CSS 4, shadcn/Radix, English and GermanDashboards are rendered on the server so they load fast, and shared components keep screens consistent.
Software connections (API)Hono with oRPC, Zod validationData types are checked from screen to database, and the API documentation is generated automatically.
DatabasePostgreSQL on Supabase, Prisma 7, pgvectorOne database holds the app data and the playbook search index. 80 data models, 72 migrations.
AI modelsGemini 3 Flash via OpenRouter for scoring, OpenAI text-embedding-3-small for playbook searchFlash is cheap enough to score every call. Structured output keeps scores readable by software.
Background jobsTrigger.dev v4Reviews, hourly checks, summaries and history imports run outside the web request, with retries.
IntegrationsNango (account connections through OAuth) for Fathom, Fireflies and Slack; Discord webhooks (automatic messages); Resend emailEach rep connects their own account. Stored connection credentials are encrypted.
BillingStripe: tiers, extra seats, credit packs, a credit ledger, 7-day trialsPlans include user seats, monthly analysis hours and playbooks. A usage record tracks every credit spent.
Sign-inBetter Auth: organisations, roles, email-link and social sign-in, required email verificationRep, manager and admin roles decide what each person can see.
HostingVercel for the app, Trigger.dev cloud for jobsManaged hosting keeps day-to-day running light for a small team.
MonitoringSentry (errors), Axiom (logs), PostHog (product analytics)One request number links an error, its logs and the user's steps.
TestingVitest, Playwright, MSW, PGlite, GitHub ActionsTests check individual functions, recorder connections in the browser, and simultaneous writes to a real database.
5 engineering decisions that matteredThe problem, what was done, and what it changed.
  1. Generic scoring does not fit every offer

    The playbook is split into passages of about 1,000 characters, each stored with a numeric representation of its meaning (a 1,536-dimension vector in pgvector). For each call, the 7 closest passages are retrieved.

    ResultEach team is judged on its own script. Scorecard changes are versioned, so old calls keep the version they were scored against.

  2. One shared AI key hides who spends what

    Every team gets its own AI key with a monthly cap. The key is created at sign-up and switched off when the subscription ends. If the key service is down at sign-up, the account is still created and the key is added later. Users see only a plain “monthly limit reached” message.

    ResultEach team has a separate cost limit, which helps control the margin on each plan.

  3. Reviews must not depend on one queue

    A review job gets 3 attempts, with longer waits between them, and a 5-minute limit stops stuck jobs. Where the queue is not set up, the same review runs straight away. A final-failure step records the failure and raises an alert, and an hourly check fetches Fathom meetings that never arrived.

    ResultA missed message from Fathom is picked up by the hourly check.

  4. AI should not invent corrections (rolling out)

    A rep's answer is checked only against an approved answer from the team's own library. The check has a 20-second timeout and a 64 KiB limit on the prompt sent to the model. When the match or the speaker is unclear, no correction is given.

    ResultCoaching uses the team's approved guidance.

  5. Internal meetings waste credits (rolling out)

    A two-step check looks at the invite list (every attendee from the same company) and asks the model how sure it is, needing at least 80 out of 100. Held meetings stay visible and cost nothing, and the manager can click “Analyze anyway”.

    ResultInternal team meetings do not affect sales-call scores.

Testing and build recordHow it was tested, and the build by the numbers.

Quality and reliability

  • 323 automated test files with more than 2,400 test cases across unit and integration suites (Vitest), 57 Playwright browser specs, and stand-ins (MSW) for outside services.
  • Stand-in recorder servers replace Fathom, Fireflies and Nango, so browser tests click “Import history” against a real backend and catch stuck imports.
  • Integration tests run every database migration in an in-process Postgres (PGlite). A separate GitHub Actions job checks simultaneous writes against a throwaway PostgreSQL database.
  • One release command (verify:release) runs formatting, lint, type checks, unit, integration, build and end-to-end tests. Biome checks every pull request. Before a pricing change ships, a script compares the Stripe prices with the pricing table.
  • Duplicates are blocked: transcripts are matched by source ID, a setup link works only once, and a second click does not repeat a coaching action.
  • Teams are kept apart: every query is limited to one team, the browser cannot reach the database directly, and connection secrets are encrypted at rest.

By the numbers (build)

  • 1,669 commits across 124 working days, 7 January to 30 September 2026.
  • About 3 weeks from first commit to Fathom and Fireflies intake.
  • 13 packages in a Turborepo monorepo, plus the web app, with more than 25 background job files.
  • 80 database models, 72 migrations, 34 enums.
  • 3 transcript sources, 3 delivery channels, plus jobs that update customer records in a CRM (customer management system).

Is it a fit?

Could this work for your team?

  • You sell higher-priced offers on recorded calls, and your reps use Fathom or Fireflies. This includes coaching, education, agencies and business-to-business services.
  • You have 3 to 50 reps and cannot listen to most of their calls.
  • You already have a script or offer outline that says what a good call sounds like. Salesight turns it into your scorecard.
  • You run an agency and want call review for your own clients. We can build a version you sell under your own name.

Discuss call review for your sales team

Conducted by Apurva · Not a sales call