How It Works
Every data point in Dialed comes from a real AI phone call placed to a real business. Here's exactly how the pipeline works — from scheduler to published data.
Step 1 of 4
A cron-based scheduler determines when each business category gets called. Gas stations run 3× daily at 6am, 12pm, and 6pm. Medical offices run once at 9am. Farmers markets run weekly. Every schedule is configurable per market and category.
The scheduler maintains a priority queue of all tracked businesses. It accounts for business hours, call-back windows, and category-specific cadences. Businesses that frequently go unanswered are deprioritized automatically.
// Scheduler config (simplified)
{
"category": "gas_station",
"city": "honolulu",
"schedule": "0 6,12,18 * * *",
"batch_size": 50,
"timeout_seconds": 45,
"retry_policy": {
"max_attempts": 2,
"backoff_minutes": 30
}
}Step 2 of 4
A conversational AI agent dials the business using a category-specific script. The agent handles hold music, IVR menus, and transfers. It extracts structured data points from the response — prices, wait times, availability slots — all in real time.
The voice agent uses a fine-tuned LLM backbone with a retrieval layer for local context. It can handle complex multi-turn conversations, clarify ambiguous answers, and gracefully exit when a business declines to share data.
// Call transcript (abbreviated)
{
"call_id": "c_8f2a9b3c",
"business": "Costco Honolulu",
"duration_seconds": 23,
"transcript": [
{"role": "agent", "text": "Hi, I'm calling to check your current regular unleaded price for our price comparison service."},
{"role": "staff", "text": "It's four twenty-nine a gallon."},
{"role": "agent", "text": "Great, and premium?"},
{"role": "staff", "text": "Four sixty-nine."}
],
"extraction_status": "success"
}Step 3 of 4
Every AI response is passed through an extraction pipeline that normalizes units, validates ranges, and flags anomalies. A price of $1.29/gal gets flagged. A wait time of 400 minutes gets held for review. Clean data only.
The validation layer uses a combination of rule-based checks and statistical models trained on historical data. Outliers are quarantined and routed to a review queue. Businesses with consistent extraction failures are escalated.
// Extraction result
{
"call_id": "c_8f2a9b3c",
"category": "gas_station",
"extracted": {
"regular": 4.29,
"premium": 4.69,
"diesel": null
},
"validation": {
"passed": true,
"flags": [],
"anomaly_score": 0.02,
"confidence": 0.97
},
"normalized_at": "2026-04-11T06:04:12Z"
}Step 4 of 4
Validated data is written to the database and immediately available via the REST API, consumer pages, and webhook subscribers. Historical records accumulate forever. Every data point is permanently timestamped to its call.
The pipeline from call completion to API availability averages 8 seconds. Webhook subscribers receive push notifications within 2 seconds of validation. All historical data is retained indefinitely — no rolling window.
// GET /v1/gas-prices?city=honolulu
{
"business": "Costco Honolulu",
"called_at": "2026-04-11T06:02Z",
"payload": {
"regular": 4.29,
"premium": 4.69,
"diesel": 4.89
},
"verified": true,
"call_id": "c_8f2a9b3c",
"history_available": true
}
// 94% accuracy · Updated 3× dailyData Schema
All Dialed records share a common envelope. The payload varies by category.
idstringUnique record identifier (uuid v4)
business_idstringStable business identifier across calls
categoryenumgas_station | urgent_care | restaurant | …
citystringISO 3166-2 city slug (e.g. honolulu)
called_atISO 8601Timestamp of call completion (UTC)
payloadobjectCategory-specific extracted data points
verifiedbooleanPassed anomaly detection and validation
confidencefloatModel confidence score (0–1)
call_idstringLink to raw call record and transcript
Ready to Build?
Full REST API access with webhook push, 90-day history, and enterprise SLA.