Lead Line 自动 Lead Outreach 队列

一、产品定义

Lead Line 是门店的新 Lead 自动外呼行动队列。

它解决的问题不是“提醒员工有一条新 Lead”,而是:

新 Lead 进入系统后,系统按照 outreach cadence 自动拨打门店前台,让员工及时接起并处理客户;如果本次未完成联系,则按照员工操作和策略安排下一次重试。

Lead Line 的辅助说明为:

Automated calls for faster lead outreach.

为什么叫 Lead Line

  • Lead 明确对象是新潜在客户;
  • Line 同时表达电话线路和等待处理的队列;
  • 相比 Call Queue,它不会被误解为客服中心的 inbound caller queue;
  • 相比 Latest Leads,它能表达系统正在安排自动外呼,而不只是通知流。

品牌显示统一使用两个单词:Lead Line


二、用户场景

2.1 新 Lead 进入

  1. 新 Lead 通过 Email Lead 或其他受支持的 intake channel 进入系统;
  2. 系统创建或解析对应的 Lead Outreach Task;
  3. Lead 立即进入 Lead Line;
  4. 系统以原始 Lead 到达时间为锚点,计算 first_call_at = lead_arrived_at + 15 minutes
  5. 拨号服务在计划时间呼叫门店前台;
  6. 员工接听后,系统将员工与该 Lead 的电话连接;
  7. 员工可按 1 立即接通并处理 Lead;
  8. 如果正处于 check-in 等无法立即处理的场景,可按 2 确认已收到提醒,并把下一次门店提醒电话改到 20 分钟后;
  9. 系统记录员工的 acknowledgement,并根据操作结果和 cadence 计算 deferred_untilnext_retry_at

Lead 进入系统与 Task、Contact projection、Lead Line 卡片生成之间可能相隔几分钟,但处理耗时不能向后移动第一通电话。固定拨打时间必须使用 first_call_at = lead_arrived_at + 15 minutes:例如 Lead 在 1:00 PM 到达,无论系统处理 2 分钟还是 3 分钟,卡片都显示 First call at 1:15 PM。如果处理完成时已经超过 first_call_at,系统应尽快拨打,不能从处理完成时间重新计算 15 分钟。

在第一通电话发生前必须显示 First call…,不能显示 Retry…,因为尚未发生过拨号尝试。

2.2 电话接通瞬间

门店电话接通后,员工需要立刻知道正在处理哪位 Lead。Lead Line 将对应卡片置顶,并显示:

  • Lead 姓名;
  • Lead 电话;
  • Lead 进入时间;
  • Connected · 01:25 形式的实时通话时长。

这里的 Connected 表示当前电话已经接通且仍在进行,不表示历史上曾经联系成功。数据 contract 中应使用明确的 live session state,避免与 Lead lifecycle status connected 混淆。

2.3 未完成联系

如果一次外呼没有形成可完成 outreach 的连接:

  • 系统记录该 attempt;
  • 门店员工直接挂断、未按键或没有接听时,视为本次没有 acknowledgement,直接进入 retry policy;
  • 根据员工输入、provider result 和 cadence 计算下一次重试;
  • Lead 重新进入等待队列;
  • 5 分钟内显示倒计时,超过 5 分钟显示绝对时间。

2.4 已确认并主动改期

员工接听门店提醒电话、知道需要联系哪位 Lead,但当前无法立即处理时,可以按 2 或在受控 UI 中选择 Reschedule for 20 minutes from now

  • 系统记录 acknowledged_at、操作员工(可解析时)和改期原因;
  • queue entry 进入 deferred,并写入权威的 deferred_until
  • 到期前不继续拨打门店,避免把员工主动改期误判为未接或失败;
  • 到期后重新呼叫门店,提醒员工完成该 Lead 的 outreach;
  • UI 使用 Rescheduled call at 3:42 PM,不能显示 Retry

术语必须分层使用:

  • deferreddeferred_until 仅作为内部 queue state 与持久化字段,表示员工已确认并主动改期;
  • 用户界面一律显示 Rescheduled call,不显示 Deferred
  • Retry 仅表示未接听、provider failure 或本次没有形成有效 acknowledgement;
  • 本文中的 Lead callback 专指联系 Lead 的回拨;系统再次呼叫门店统一称为 store reminder call,避免把两种电话混为一谈。

主动改期与失败重试必须分别记录、展示和统计。

门店提醒电话的操作结果必须使用以下互斥 contract:

门店员工操作系统解释后续动作
1已确认,立即处理立即拨打 Lead 并连接门店员工与 Lead
2已确认,但当前无法处理从按键事件时间起改到 20 分钟后再次提醒门店
挂断、未按键或未接拒接或未确认记录 attempt,并由 retry cadence 计算下一次重试

这里按键的人是接听自动提醒电话的门店员工,不是 Lead 客户。

2.5 Duplicate Lead

同一门店、同一 normalized phone 的 Email Lead 再次提交时,系统仍然保存新的 intake event,并累计 submission_count,以 ×2×3 等形式展示购买意向的重复出现;但 duplicate intake 不应无条件制造重复工作。

如果该 Lead 在当前门店历史上已经有成功的 outreach connection:

  • 新 duplicate submission 仍写入 Lead/Contact timeline;
  • submission_count 继续增加;
  • 不创建新的 Lead Outreach Task;
  • 不创建或重新激活 Lead Line queue entry;
  • 不再次自动拨打门店;
  • 保存 suppressed_already_connected 的审计原因。

如果历史上从未成功 Connected,则 duplicate 可以继续保留或进入既有 outreach execution,但必须复用同一 Lead work identity,不能为同一联系人并行创建多个 Task 或多个 queue entry。

这里的“曾经 Connected”必须来自可审计的成功 outreach evidence,而不是当前 live session UI、仅有拨号 attempt、电话振铃、员工 acknowledgement,或可变的 Lead lifecycle label。

2.6 离开 Lead Line

Lead 在以下情况下离开活动队列:

  • 已完成需要的首次 outreach,当前没有下一次自动拨号;
  • Lead Outreach Task 已关闭或被其他 Task stage 取代;
  • Lead 被标记为 DNC;
  • duplicate intake 对应的 Lead 在当前门店已经有成功 Connected evidence;

不能因为后台处理失败、Task 暂未生成或 provider 状态未知而静默删除。拿不准时保留可见状态并标记 Needs review,遵循系统“Task 和 proposal 绝不静默消失”的原则。


三、四种用户可见状态

Lead Line 使用以下四种主要行动文案。

状态使用条件展示示例颜色组
First call scheduled尚未拨打过;已安排第一通电话First call at 3:42 PMInfo
Retry scheduled至少拨打过一次但未完成;已安排重试Next retry at 3:42 PMInfo
Rescheduled call员工已确认收到并主动改期Rescheduled call at 3:42 PMInfo
Active call当前 live call 已接通Connected · 01:25Success

3.1 文案规则

  • 第一通电话必须使用 First call,不能使用 Retry
  • 发生过至少一次 attempt 后才能使用 Retry
  • 员工已 acknowledgement 并主动改期时必须使用 Rescheduled call,不能使用 Retry
  • 所有待拨电话都使用 at h:mm AM/PM 固定时间,不显示倒计时;
  • live call 使用 Connected · mm:ss
  • 时间按照当前门店 timezone 计算和展示,不能由浏览器 timezone 改变排队顺序。

3.2 时间展示规则

first_call_at = lead_arrived_at + 15 minutes
remaining = scheduled_call_at - now

if attempt_count = 0:
  First call at h:mm AM/PM

if attempt_count > 0:
  Next retry at h:mm AM/PM

if queue_state = deferred:
  Rescheduled call at h:mm AM/PM

if live_session.status = connected:
  Connected · elapsed mm:ss

到达安排时间后,前端不能自行循环生成下一次时间;必须等待拨号服务或 cadence engine 返回新的状态。

3.3 颜色规则

  • 待拨状态 First call at…Next retry at…Rescheduled call at… 统一使用 Info 色;
  • Connected… 使用 Success 色;
  • 所有颜色必须来自 UI palette token,不写死 hex;
  • 颜色必须同时作用于文字、边框与轻量背景,不能只依赖颜色表达状态。

四、排序规则

Lead Line 是行动队列,不按 Lead received time 简单倒序。

默认排序:

  1. 当前 Connected 的 live call;
  2. scheduled_call_at 最早的 Lead;
  3. 同一计划时间时,lead_received_at 更早的 Lead;
  4. 仍相同时,使用稳定的 queue_entry_id 排序,避免卡片跳动。
ORDER BY
  is_live_connected DESC,
  scheduled_call_at ASC,
  lead_received_at ASC,
  queue_entry_id ASC

不能使用前端基于 id 生成的伪时间作为生产排序。当前 demo 中的循环时间只用于视觉验证。


五、侧栏设计

5.1 位置

Lead Line 放在主导航与 Feedback / account 区域之间:

  • 与上方主导航之间使用分割线;
  • 标题样式与 Tasks、Calls、Contacts 等导航项一致;
  • 不与 Leads 导航项合并;
  • 当前页面只属于一家门店,因此不在卡片中重复显示门店名;
  • 队列按当前选中的 store_id 严格过滤。

5.2 Header

Header 包含:

  • Phone icon;
  • Lead Line
  • 信息图标,hover / click 展示 Automated calls for faster lead outreach.
  • 右侧 count badge。

Count 表示当前门店仍在活动 Lead Line 中的 Lead 数,不是过去 48 小时收到的 Lead 数,也不是所有 open Task 数。

Badge 与 Tasks / Coaching badge 使用同一组件语法,但使用 Warning palette,表示即将执行的行动队列。

5.3 卡片

每张卡片显示:

[Avatar] Lead name                 Received time
         Phone number
         Action status

规则:

  • Avatar 使用黑底白字 initials,大小与 Calendar Task card avatar 一致;
  • Lead name、电话和进入时间来自同一个 queue item;
  • 姓名过长时单行省略;
  • 卡片字体比主表格小一档,以提高队列密度;
  • 卡片之间保留明确间距,不使用渐变遮住最后一张卡;
  • 队列有更多内容时,在顶部/底部显示 Chevron,只有确实可继续滚动时才出现;
  • 鼠标点击卡片跳转到该 Lead 对应的 Task;
  • 如果 Task 尚未生成,则打开原始 Lead 信息,而不是猜测一个 Task;

5.4 展开与折叠侧栏

展开模式:

  • Lead Line 在侧栏内直接显示可滚动卡片;
  • 队列区域使用导航以下、Feedback 以上的剩余高度;

折叠模式:

  • 显示 Phone icon;
  • icon 右上角显示 9+ 形式的 count badge;
  • 点击或 hover 打开 popover,展示同一份队列;
  • Tasks 和 Coaching 的 badge 行为应遵循各自导航规范,不由 Lead Line 组件代替。

5.5 Notification settings

Browser push 是 Lead notification 的传递设置,不是 Lead Line 排队逻辑。设置入口保留,但不放在 Lead Line header 的显眼位置。

推荐放在:

Account menu
  → Notification settings
  → Browser push on this device

当前页面是单店 workspace,不展示或允许切换其他门店的 notify list。


六、Leads 页面设计

6.1 Lead Line 列

Leads 表格增加 LEAD LINE 列。该列与侧栏使用相同 queue item 和相同状态计算。

可能显示:

  • First call at 3:42 PM
  • Next retry at 3:42 PM
  • Rescheduled call at 3:42 PM
  • Connected · 01:25
  • Not in Lead Line

Not in Lead LineNot queued 更清楚,因为用户看到的产品名称是 Lead Line,而不是一个通用 queue。

6.2 一致性不变量

同一个 Lead 在侧栏和 Leads 表格中必须满足:

  • 相同状态;
  • 相同下一次执行时间;
  • 相同倒计时秒数;
  • 相同电话号码;
  • 相同 received time;
  • 相同门店 scope;
  • 相同点击目标。

前端应共享一个 normalized store 或 composable,通过 store_id + normalized_phone 或稳定 lead_id 关联。不能让两个组件分别根据 item id 计算 retry time。

6.3 与 Task 列的关系

Lead Line 列说明自动电话执行状态;Task 列说明业务 Task type。两列不能合并。

Task 列应显示:

  • Lead Outreach;
  • Lead Follow-up;
  • Post-Intro Follow-up;
  • No Task。

并保留跳转箭头。Task 已关闭也可以显示对应 Task type;No Task 表示该 Lead 没有可显示的 Task,而不是仅仅没有 open Task。


七、当前实现状态

7.1 已有基础

当前前端已经具备视觉 prototype:

  • 侧栏 Lead Line 区域;
  • Leads 表格 Lead Line 列;
  • 四种状态文案;
  • 固定拨打时间展示;
  • Info / Success 状态色;
  • live call 置顶的模拟效果;
  • 黑白 initials avatar;
  • 队列 count badge;
  • 卡片滚动和 Chevron;
  • 点击后跳转 Task / Lead 的既有行为。

当前数据主要来自:

GET /v3/notifications/history
  → notification_outbox
  → read-time Task resolution
  → contacts DNC
  → first outbound call lookup

通知 feed 是一个可复用的 intake anchor,但它还不是完整 Lead Line execution contract。

7.2 当前模拟逻辑

当前 lead-line-demo.ts

  • 当前列表只将第一条 eligible queue item 模拟为 active call;
  • 其余 queue item 按稳定顺序循环分配 first call、retry、rescheduled call 三种计划状态;
  • 分别模拟 first call、retry、rescheduled call 的指定时间;
  • 使用 15 分钟循环保持 demo 中持续出现指定时间;
  • 用页面加载时间模拟 active call duration;
  • 每个模拟列表最多显示一张 Connected 卡片。

这些都只能用于视觉验证,不能进入生产语义。尤其是:

  • 前端不能自行决定 attempt_count
  • 前端不能在倒计时结束后循环生成新 retry;
  • 前端不能把第一张卡片当成 live call;
  • notification taskStatus=open 不能等同于 scheduled call;
  • firstOutboundCallAt 只能证明发生过 outbound attempt,不能提供下一次 cadence。

7.3 已接入但不等于 Lead Line 的能力

  • RingCentral webhook 已能提供 telephony lifecycle events;
  • Calls 表可以保存 outbound call 和 call state;
  • Task Activity / Outcome 可以接受受控 call evidence;
  • Notification outbox 可以作为新 Lead feed;
  • Browser push 可以提醒用户,但不决定 call cadence。

系统尚未把这些能力组合成一个权威、实时的 Lead Line state machine。


八、目标后端状态模型

8.1 Queue entry

推荐为每个活动 Lead Outreach execution 建立明确的 queue projection:

{
  "queueEntryId": "uuid",
  "storeId": "uuid",
  "leadId": "lead-identity",
  "contactId": "uuid-or-null",
  "taskId": "uuid-or-null",
  "leadDisplayName": "Esther Son",
  "leadPhone": "+17147662494",
  "leadReceivedAt": "2026-08-02T09:48:00-04:00",
  "attemptCount": 1,
  "firstAttemptAt": "2026-08-02T09:50:00-04:00",
  "lastAttemptAt": "2026-08-02T09:50:00-04:00",
  "nextAttemptAt": "2026-08-02T09:55:00-04:00",
  "acknowledgedAt": null,
  "deferredUntil": null,
  "queueState": "scheduled_retry",
  "liveSessionId": null,
  "cadenceVersion": "lead-line.v1",
  "updatedAt": "2026-08-02T09:50:30-04:00"
}

8.2 Canonical states

建议后端状态与 UI 文案分开:

Backend stateMeaningUI projection
scheduled_first_call尚无 attempt,已安排第一通电话First call at
dialing_store正在拨打门店前台Calling your store… 或短暂保持 first/retry state
dialing_lead员工已接受,正在连接 LeadConnecting…
connectedlive session 正在进行Connected · duration
scheduled_retry已有 attempt,等待重试Next retry at
deferred员工已确认收到提醒并主动改期Rescheduled call at
paused被员工或 Policy 暂停Paused / Needs review
completedoutreach 已完成不在活动队列
suppressedDNC / invalid / policy denied / duplicate already connected不在活动队列,原因可审计

四种主要文案只覆盖正常等待、主动改期与 connected 状态。dialing_*、paused、suppressed 是实现完整状态机所需的过渡或异常状态,不能被伪装成 retry。

8.3 Live call truth

Connected · duration 必须来自 live telephony event:

RingCentral Answered / active session
  → resolve store + queue entry + lead
  → persist/stream live session state
  → client receives update
  → pin matching Lead card to top

通话结束后:

  • connected 立即失效;
  • cadence engine 根据 provider result、员工操作和 Task progress 计算 completed 或 next retry;
  • 前端不能凭 elapsed timer 推断通话已结束。

8.4 Retry 决策

nextAttemptAt 由受控 cadence engine 生成,输入至少包括:

  • first / previous attempt 时间;
  • provider call result;
  • 员工电话按键或 UI 操作;
  • 门店营业时间与 timezone;
  • DNC、invalid phone 和 contact policy;
  • retry count / cadence limit;
  • Task 当前状态与 latest Outcome evidence。

电话按键的最低行为 contract:

Press 1
  → acknowledge reminder
  → accept now
  → connect store staff to Lead

Press 2
  → acknowledge reminder
  → reschedule the store reminder call (v1: 20 minutes later)
  → set internal queue_state = deferred
  → persist deferred_until
  → call the store again when due

Hang up / no key / no answer
  → no acknowledgement
  → persist the attempt result
  → apply retry cadence

同一个 provider event 或按键 event 必须幂等,重复 webhook 不得产生多个 rescheduled store reminder call。

AI 可以解释或建议 retry timing,但不能绕过 cadence policy 直接写任意时间。

第一次拨打不属于 retry cadence。它使用独立且不可漂移的时间规则:

first_call_at = lead_arrived_at + 15 minutes

Task、Contact projection 或 Lead Line queue entry 的创建时间都不能替代 lead_arrived_at。处理完成时如果已超过 first_call_at,queue entry 立即到期并应尽快执行。


九、推荐 API 与实时更新

9.1 Queue API

推荐独立 endpoint:

GET /v3/stores/:storeId/lead-line

返回:

{
  "data": {
    "definitionVersion": "lead-line.v1",
    "serverNow": "2026-08-02T09:52:26-04:00",
    "storeTimezone": "America/New_York",
    "items": [],
    "coverage": {
      "active": 22,
      "scheduledFirstCalls": 4,
      "scheduledRetries": 17,
      "deferred": 2,
      "connected": 1,
      "needsReview": 0
    }
  }
}

serverNow 用于校准倒计时,降低客户端时钟偏差。

9.2 实时通道

生产体验至少需要以下之一:

  • WebSocket;
  • Server-Sent Events;
  • 低延迟 polling 加 provider event version。

60 秒 notification polling 不足以支持 Connected 瞬时状态。固定拨打时间可以直接在客户端格式化,但状态转换必须来自 server event。

9.3 幂等与顺序

  • 每个 provider event 有稳定 idempotency key;
  • queue entry 维护 monotonic version;
  • 客户端忽略比当前 version 更旧的 event;
  • duplicate webhook 不得重复增加 attempt count;
  • duplicate acknowledgement 不得重复安排 rescheduled store reminder call;
  • out-of-order Answered / Disconnected 必须由 session state machine 裁决;
  • store、account、task、contact 与 phone identity 必须在受控代码中解析,不能由前端猜测。

十、权限、隔离与合规

  • 唯一数据隔离键是 store_id
  • 单店 workspace 只展示当前门店队列;
  • 不在 Lead Line 中混入用户其他门店的 Lead;
  • DNC 必须在创建或执行 queue entry 前成为 hard guard;
  • DNC、invalid phone、Policy denial 和 cadence exhaustion 都必须保留 audit reason;
  • 用户只有在有权访问对应 store 与 Task 时才能打开卡片;
  • 电话号码属于业务所需 PII,日志和 telemetry 不记录完整号码;
  • Browser push permission 仅控制设备通知,不改变 queue 是否执行或更新。

十一、指标

Lead Line 可观测指标分为三类。

11.1 响应速度

Lead-to-first-call time
  = first_attempt_at - lead_received_at

Lead-to-connected time
  = first_connected_at - lead_received_at

11.2 执行质量

First-call SLA attainment
  = first attempts within SLA / eligible new Leads

Connection rate
  = Leads with connected attempt / Leads attempted

Average attempts to connect
  = total attempts before first connection / connected Leads

11.3 队列健康

  • Active queue size;
  • Due now / overdue queue entries;
  • Scheduled first calls;
  • Scheduled retries;
  • Connected live sessions;
  • Paused / needs review;
  • Suppressed by DNC / invalid phone;
  • Cadence exhaustion count。
  • Rescheduled-call queue size、rescheduled-call completion rate 和改期后仍未处理数量(内部状态为 deferred);
  • Duplicate intake count;
  • Suppressed because already connected count;
  • Prevented duplicate Task / queue entry / store call count。

这些指标不能从 notification badge 反推,必须由 queue execution state 计算。


十二、实施顺序

P0:权威数据 contract

  1. 定义 queue entry 与 canonical state;
  2. 定义 eligible Lead、离队规则与 first_call_at = lead_arrived_at + 15 minutes
  3. 统一 Lead / Contact / Task identity;
  4. 由 cadence engine 生成第一通和 retry 时间;
  5. 删除生产路径对 lead-line-demo.ts 的依赖。

P1:实时电话状态

  1. RingCentral telephony event 关联 queue entry;
  2. 持久化 attempt 与 live session;
  3. 提供实时 client update;
  4. 实现 Connected card 置顶和 duration;
  5. 通话结束后可靠转为 completed 或 scheduled retry。

P2:员工控制与异常处理

  1. 电话按键 1 = accept now2 = acknowledge and reschedule
  2. Rescheduled store reminder call 的 schedule 与 UI 状态;
  3. Pause、resume、skip 和 needs review;
  4. 营业时间和 cadence 设置;
  5. retry limit、DNC、invalid number 和 duplicate-already-connected policy;
  6. audit timeline 与管理员诊断。

P3:指标与优化

  1. Lead-to-first-call / connect time;
  2. retry performance;
  3. missed / overdue queue diagnostics;
  4. cadence A/B testing;
  5. 与 Lead funnel、Task outcome 和 coaching 联动。

十三、验收不变量

  1. 尚未发生 attempt 的 Lead 只能显示 First call,不能显示 Retry
  2. 已发生 attempt 且仍需联系的 Lead 才能显示 retry;
  3. 5 分钟内显示倒计时,超过 5 分钟显示绝对时间;
  4. Connected 必须来自当前 live session,不能来自历史 Lead status;
  5. 侧栏与 Leads 表格必须使用同一状态和同一时间;
  6. active call 始终置顶,其余按下一次执行时间排序;
  7. 前端不能自行循环生成 next retry;
  8. 前端不能根据第一张卡片模拟 active call;
  9. 队列只包含当前 store_id
  10. 页面内不重复显示门店名;
  11. DNC 和 invalid phone 不进入正常拨号队列;
  12. 被 suppress、pause 或移出队列的原因必须可审计;
  13. Lead Line count 等于活动 queue entry 数,不等于通知数或 Task 数;
  14. 点击有 Task 的卡片跳转对应 Task,没有 Task 时进入原始 Lead 信息;
  15. 卡片直接显示电话,不再依赖 hover detail card;
  16. 最后一张卡不能被渐变遮挡;
  17. 只有可继续滚动时才显示 Chevron;
  18. Browser push 设置不影响 Lead Line 数据更新;
  19. provider duplicate / out-of-order event 不得制造重复 attempt;
  20. Task、Lead 或 queue entry 不能因为处理失败而静默消失。
  21. 员工主动改期必须显示 Rescheduled call,不能显示为失败 Retry
  22. 2 后必须持久化 acknowledgement 和 deferred_until,到期前不得重复拨打;
  23. duplicate submission 必须继续记录并增加 submission_count
  24. 当前门店已有成功 Connected evidence 的 duplicate 不得创建新 Lead Outreach Task、queue entry 或自动电话;
  25. 从未 Connected 的 duplicate 必须复用同一 Lead work identity,不能形成并行重复 Task 或 queue entry;
  26. duplicate suppression 必须记录 suppressed_already_connected,不能静默丢弃 intake。
  27. 第一通电话必须固定为 lead_arrived_at + 15 minutes,不能锚定 Task、Contact 或卡片创建时间;
  28. 卡片晚生成只减少剩余倒计时;若生成时已逾期则应尽快执行,不能重新开始 15 分钟;
  29. 1 必须立即进入连接 Lead 的流程;按 2 必须从按键时间起将下一次门店提醒电话改到 20 分钟后;挂断、未按键或未接必须进入 retry policy。

十四、最终原则

Lead Line 不是“最新 Lead 列表”,而是一个有时间、有顺序、有实时电话状态的自动 outreach execution queue:

New Lead intake
  → eligible Lead Outreach Task
  → scheduled first call
  → store accepts the call
  → connect store staff with the Lead
  → complete, reschedule after acknowledgement, or schedule the next retry
  → every transition is visible and auditable

它的产品价值在于让花钱获得的新 Lead 不再依赖员工主动刷新页面或记得拨号,同时让员工在电话接通的瞬间清楚知道自己正在与谁通话。