How it works

A call gets handled the same way every time;
that's the whole product.

Assay is not a chatbot strapped to a phone. It is six discrete layers in a defined order — telephony, script, conversation, scoring, decision, dispatch — with the output of each one inspectable. Same pipeline for an inbound new-patient call as for an outbound contractor at 7pm.

Start with the layers. Then watch one real call walk through them.

The pipeline

Six layers. One call.
A conversation that books a meeting.

Every call to or from Assay walks the same six stages, in order, with audit trails at every hop. Tap a layer to read what happens inside it.

01
Detect
Telephony · 30–80ms
Inbound ring, scheduled outbound, or campaign trigger. Assay picks up or dials with a US/Canadian caller ID matched to area code.
RingRouted

What happens inside

  • Twilio voice infrastructure with carrier-grade SLAs
  • Local-presence dialing matches the recipient's area code
  • Forwards to a human if the script triggers an escalation rule
  • Records and timestamps from the first millisecond

Sample I/O

in  inbound +1-415-555-0148
out route → script:NewPatientIntake · region:US-CA
02
Connect
Script load · 80ms
The right script loads for the right list: dental, lead-gen, real estate. Each carries vertical-specific qualifying questions and disqualifying filters.
RoutedConnected

What happens inside

  • Scripts are authored once and versioned, not generated on the fly
  • Personalized to the list source (campaign, vertical, lead source)
  • Branches per response — no chatbot decision trees the caller can sense
  • Voice tuned per script: neutral, warm, brisk

Sample I/O

in  script:NewPatientIntake v3
out voice:Calm-F · greeting loaded
03
Converse
STT + LLM · 240ms turn
Two-way conversation, full duplex. Assay listens, asks follow-ups, handles objections, and never gets defensive. The whole transcript is captured live.
Audio inTranscript + intent

What happens inside

  • Streaming speech-to-text with named-entity extraction live
  • Interrupts gracefully when the caller starts speaking
  • Detects sentiment shifts every turn — frustration, urgency, hesitation
  • Handles transfers to a human if the caller asks for one

Sample I/O

in  "…we're looking at maybe Thursday or Friday"
out intent:book · preferred:Thu|Fri · urgency:medium
04
Score
Assay Score · 420ms
Every conversation gets a single number, 0–100, with the reasoning behind it. Score is a weighted blend of fit, intent, capacity, and verified facts.
Transcript + intentScore + reasons

What happens inside

  • Weighted across fit, intent, urgency, budget, decision authority
  • Verifiable facts (insurance, address, list match) are checked, not assumed
  • Reasons stored alongside the number — every score is auditable
  • Score is the API contract — downstream systems consume the number

Sample I/O

in  transcript:2m13s · features:11
out 81/100 · HOT · top reason: budget verified, timeline ≤14d
05
Decide
Branch logic · 60ms
Score crosses a threshold and the right action fires. Hot leads get a calendar slot now. Warm leads enter a nurture sequence. Cold leads exit cleanly without burning the relationship.
ScoreAction plan

What happens inside

  • Configurable thresholds per campaign — Hot ≥ 80, Warm 50–79, Cold < 50
  • Override rules respect business hours, calendar capacity, do-not-call lists
  • Hot leads can be hand-raised to a human in under 30 seconds
  • Decision is deterministic — same inputs always produce the same plan

Sample I/O

in  score:81 · capacity:available · DNC:false
out plan: [book.calendar, sms.intake, crm.upsert]
06
Dispatch
Side-effects · 800ms
Booking lands on your calendar. SMS goes out. CRM record updates. Slack pings the right channel. Everything that has to happen happens — automatically, in parallel.
Action planBooked + logged

What happens inside

  • Native integrations: Google/Outlook, HubSpot, Salesforce, Slack, Twilio SMS
  • Idempotent — re-running the plan never double-books or double-texts
  • Full audit trail of every side-effect, with retry on transient failure
  • Webhook out to your stack for anything not natively integrated

Sample I/O

in  plan executing…
out ✓ booked Thu 9:30 · ✓ SMS sent · ✓ CRM updated

That's the diagram. Here it is running.

Watch a call

From ring to booked.
In four point eight seconds.

One real call walks the six layers. Same as every other call. Score is computed from what's actually said, not from a lookup.

+1 (415) 555-0148 · InboundPacific Heights, San Francisco · Tuesday 11:18 AM
0.0s
01
Detect
+1-415-555-0148
02
Connect
script:NewPatient
03
Converse
2m 13s · 11 turns
04
Score
81 / 100 · HOT
05
Decide
plan: book + sms + crm
06
Dispatch
✓ booked Thu 9:30

Duration

0.0s

Assay Score

0/100

Disposition

Booked

ready

The pipeline is one call. Your list has hundreds. The same four point eight seconds, in parallel.

At the list level

What it looks like to run an entire list through this.

01

Upload your list

CSV, CRM export, or live feed from your campaigns. List health is checked before the first call goes out.

02

We run the pipeline against every record

Six stages per call. Three to five parallel lines, depending on tier. Days, not weeks, to work a full list.

03

Scores stream into your dashboard live

You see hot leads land in real time. Filter by score, vertical, sentiment, or campaign.

04

Booked meetings land on your calendar

No CSV exports. No CRM exports. Slack pings you when something needs a human.

See the pipeline
run on your list.

Free 7-day trial. We work 500 records of your list while you watch.

Start your free 7-day trial →

or call our demo agent now: +1 (844) 216-8485

or book a 30-minute demo: calendly.com/getassay/30min

US & Canada · CCPA compliantLive in 48 hoursBring your existing number

Is my data secure?

All data is stored on US servers. CCPA compliant; 90-day retention policy. Nothing leaves your region.

Can I keep my number?

Yes. Bring any existing business number, or we provision a new dedicated number at setup. US and Canada covered.

How fast is setup?

Live in 48 hours. We configure your agent, script, and integrations; you upload your list and press go.