Powered by HappyRobot

Conversational AI for
Freight Sales Intelligence

Voice AI agents that handle inbound carrier calls end-to-end — verifying carriers, matching loads, and closing deals through intelligent multi-round negotiation.

1000+

Loads Available

85%

Conversion Rate

3

Negotiation Rounds

24/7

Availability

How It Works

From carrier call to booked load in minutes, fully automated.

1. Inbound Call

Carrier calls in looking for loads

2. FMCSA Verify

Real-time carrier authorization check

3. Match Loads

Smart search with fuzzy matching

4. Negotiate

Up to 3 rounds of price negotiation

5. Book & Transfer

Close deal, transfer to sales rep

System Architecture

Built on modern, scalable infrastructure.

flowchart TB subgraph Carrier["Carrier"] A[Phone Call] end subgraph HappyRobot["HappyRobot Platform"] B[AI Voice Agent] C[Conversation Engine] D[Tool Orchestration] end subgraph API["FastAPI Backend"] E[Load Search API] F[FMCSA Verification] G[Negotiation Engine] H[Call Management] I[Metrics API] end subgraph Database["Supabase PostgreSQL"] J[(Loads)] K[(Calls)] M[SQL Functions] end subgraph Dashboard["Analytics Dashboard"] N[Real-time Metrics] O[Charts] end A --> B B --> C C --> D D --> E & F & G & H E --> J F -.->|FMCSA SAFER| P[External API] G --> K H --> K I --> M M --> J & K N --> I O --> I style Carrier fill:#f3f4f6,stroke:#9ca3af style HappyRobot fill:#dbeafe,stroke:#3b82f6 style API fill:#dcfce7,stroke:#22c55e style Database fill:#fef3c7,stroke:#f59e0b style Dashboard fill:#f3e8ff,stroke:#a855f7

Call Flow

Complete conversation lifecycle from greeting to deal closure.

%%{init: {'theme': 'dark'}}%% sequenceDiagram participant C as Carrier participant AI as AI Agent participant API as API participant DB as Database C->>AI: "Hi, my MC is 133655" AI->>API: GET /carriers/verify/133655 API-->>AI: SCHNEIDER - AUTHORIZED AI->>C: "Welcome! What loads are you looking for?" C->>AI: "Houston to anywhere, dry van" AI->>API: POST /loads/search API-->>AI: Found 5 matching loads API-->>AI: quoted_price per load (markup applied) AI->>C: "I have Houston to Dallas, quoted at $2,875" C->>AI: "I'll do it for $2,500" AI->>API: POST /negotiations/evaluate API-->>AI: Rejected — suggested counter $2,706 AI->>C: "Best we can do is $2,706" C->>AI: "Deal" AI->>API: PUT /calls/{id}/agreement API->>DB: Book load, update status AI->>C: "Great! Transferring to sales..."

Key Features

Everything you need to automate carrier sales.

Smart Load Search

Fuzzy city matching, multi-origin support, equipment filtering, and distance constraints.

FMCSA Verification

Real-time carrier authorization checks via SAFER system. No fake carriers.

Smart Negotiation

Agent quotes a marked-up price, then negotiates down — never below the internal loadboard rate. Up to 3 rounds, fully configurable via HappyRobot variables.

Real-time Dashboard

Live metrics, margin analysis, sentiment tracking, and call analytics.

SQL Analytics

PostgreSQL functions for scalable metrics computation, not in-memory processing.

Docker + Railway

Containerized deployment, auto-scaling, and zero-downtime updates.

Database Design

Optimized schema with strategic indexes for fast queries.

erDiagram LOADS { uuid id PK string load_id UK string origin string destination string equipment_type decimal loadboard_rate string status string assigned_mc_number timestamp booked_at } CALLS { uuid id PK string call_id UK string mc_number string carrier_name decimal agreed_rate string outcome string sentiment uuid load_id FK decimal opening_quote int negotiation_rounds int round_closed } CALLS ||--o| LOADS : books

Loads Indexes

  • • idx_loads_origin
  • • idx_loads_destination
  • • idx_loads_status
  • • idx_loads_pickup

Calls Indexes

  • • idx_calls_outcome
  • • idx_calls_start_time

SQL Functions

  • • get_call_metrics()
  • • get_load_metrics()
  • • get_top_lanes()
  • • get_pricing_analysis()

Smart Negotiation Strategy

The agent quotes carriers a low opening price (below loadboard), then negotiates up. The loadboard rate is the hard ceiling — the broker never pays above cost.

// Pricing formula

quoted_price = loadboard_rate × (1 − markup_percentage) // low opening offer

max_acceptable = loadboard_rate × (1 − round_flexibility) // ceiling rises each round

loadboard_rate = absolute ceiling — broker never pays above this

HappyRobot Variables

Set in Workflow Settings → Variables

Variable Value
markup_percentage 0.15
round1_flexibility 0.08
round2_flexibility 0.05
round3_flexibility 0.00

Example: $3,000 Load

Agent opens at: $2,550 (−15%) · all values rounded to nearest $50

Round Ceiling
Round 1 (−8%) $2,750
Round 2 (−5%) $2,850
Round 3 (0%) $3,000

Hard ceiling: $3,000 (loadboard rate)

How to Configure in HappyRobot

  1. 1. Go to Workflow Settings → Variables
  2. 2. Create: markup_percentage, round1_flexibility, round2_flexibility, round3_flexibility
  3. 3. In the search_loads and evaluate_offer tools, map these as body parameters
  4. 4. The API enforces the loadboard ceiling automatically — broker never pays above cost

Single API Call Per Negotiation

The evaluate_offer endpoint returns all 3 round thresholds in one response. Store them as workflow variables on round 1 — no additional API calls needed for rounds 2 and 3.

Agent Northstars

Behavioral guidelines that govern the AI agent's actions.

Agent MUST

  • Ask MC first — "Could you give me your MC number?"
  • Friendly professional tone — Warm, efficient, knowledgeable
  • Complete negotiation — All rounds before agreement
  • Record agreement — Before transferring to sales
  • Confirm deal details — Route, rate, pickup date
  • Only agree to approved rates — Via evaluate_offer

Agent must NEVER

  • Disclose loadboard_rate — No exact numbers, ranges, or hints about internal pricing
  • Agree without evaluate_offer — Must call tool first
  • Agree to rejected rates — Only approved offers
  • Skip negotiation rounds — Must complete flow
  • Transfer before agreement — Record first

A/B Testing Ready

Negotiation thresholds are configurable via HappyRobot workflow variables, enabling experiments without code changes

Current

Live
Markup15%
Round 15% off quoted
Round 27% off quoted
Round 38% off quoted
Balanced margin + bookings

High Margin

Markup20%
Round 15% off quoted
Round 210% off quoted
Round 315% off quoted
Maximize margin

Max Bookings

Markup10%
Round 110% off quoted
Round 212% off quoted
Round 315% off quoted
Fill loads fast

How to Run A/B Tests

1
Create Workflow Versions
In HappyRobot UI
2
Set Variables
round1/2/3_discount
3
Route Traffic
Split % per version
4
Compare Metrics
Dashboard analytics

Tech Stack

Py
Python / FastAPI
PG
PostgreSQL
SB
Supabase
D
Docker
R
Railway
HR
HappyRobot

Ready to automate your carrier sales?

Check out the live dashboard and explore the code.