Below is a detailed, hierarchical outline of the conversation flow. Each “node” is listed with its role, approximate (x, y) position, and key properties; each “edge” is described with its trigger/condition, source and destination nodes, and its purpose in the branching flow.
────────────────────────────── I. INITIAL CARRIER IDENTIFICATION
────────────────────────────── II. TRANSITION TO LOAD & OFFER FLOW (AND AI AGENT PITCH) 8. aiAgentsHHPitch • ID: “36ef02a4-a593-4834-bf17-5a8a8948ab11” • Type: Default • Position: Approximately (1775, 505) • Purpose: • Congratulates the caller on reaching silver tier in Highway Haul’s AI road warrior program. • Introduces the possibility of a personalized AI agent and asks if more information should be sent. • Outgoing Edges: • Edge 31: If the caller is interested in AI agents → Proceed to Activate AI Agent Nurture • Edge 32: If the caller is not interested → Go to log AI negativity 9. Activate AI Agent Nurture • ID: “49030b23-da50-4a92-9dc8-68ec61cd13b3” • Type: Default • Position: Approximately (1588, 835) • Purpose: • Transitions smoothly from the AI pitch to action by prompting for a load reference number. • The prompt is lengthy and strategic, mentioning performance metrics before asking: “Got a load reference number for me?” • Extracts userLoadReference. • Outgoing Edges: • Edge 20: If userLoadReference is provided (i.e. “is not null”) → Go to ToolCall-searchLoads • Edge 21: If userLoadReference is null → Go to NoMcNumberTransfer 10. log AI negativity • ID: “10d3b88b-7ced-46de-b92b-39321afdcc20” • Type: Default • Position: Approximately (2003, 838) • Purpose: • Acknowledges and “logs” the caller’s disinterest in AI assistance while still re-prompting for a load reference number. • Extracts userLoadReference. • Outgoing Edges: • Edge 19: If userLoadReference is provided (“is not null”) → Go to ToolCall-searchLoads • Edge 18: If userLoadReference is null → Go to NoMcNumberTransfer
────────────────────────────── III. LOAD SEARCH & CONFIRMATION 11. ToolCall-searchLoads • ID: “805bbabc-bcf0-43d8-a415-7f848d288324” • Type: Custom Tool • Position: Approximately (2279, 1242) • Purpose: • Uses the provided load reference (userLoadReference) to search for a load via an API call (POST). • Sends additional parameters (e.g. excludeTestLoads, days limit). • Outgoing Edge: • Edge 34: Upon “Default/Webhook Completion” → Go to LoadFound 12. LoadNotFound • ID: “ad9c2b0a-eedd-48cd-b0c5-678987abd4b8” • Type: Default • Position: Approximately (3428, 1294) • Purpose: • Explains in a friendly, perplexed tone that the provided load reference (spoken digit‑by‑digit) is not found in the system. • Requests confirmation or correction by extracting an updated userLoadReference (ignoring any previous value). • Outgoing Edges: • Edge 8: If the user provides a revised load reference → Go to ToolCall-searchLoads • Edge 9: If no clarity is provided → Go to NoMcNumberTransfer 13. LoadFound • ID: “bb145d7e-896a-4183-8a78-68dd6a470ec6” • Type: Default • Position: Approximately (2281, 1501) • Purpose: • Informs the caller that the load was located and that details are now being pulled. • Outgoing Edge: • Edge 11: “Always Proceed” → Go to GetLoadDetails
────────────────────────────── IV. LOAD DETAILS & OFFER PRESENTATION 14. GetLoadDetails • ID: “8f0b46a7-d159-48cd-91ff-6951561773aa” • Type: Custom Tool • Position: Approximately (2282, 1920) • Purpose: • Retrieves detailed information about the load (size, status, weight, distance, etc.) using a GET API call with the load UUID. • Branching: • If apiLoadStatus == PUBLISHED → LoadDetailsFound (Edge 22) • Otherwise → LoadDetailsNotFound (Edge 23) 15. LoadDetailsNotFound • ID: “db011607-e6fd-4271-a462-5342e4098008” • Type: Default • Position: Approximately (3047, 2338) • Purpose: • Notifies the caller that the load appears with a status different from “PUBLISHED” and that further investigation is needed. • Outgoing Edge: • Edge 15: “User responded” → Route to NoMcNumberTransfer (i.e. escalate via transfer) 16. LoadDetailsFound • ID: “88c12c44-bf46-4795-82ac-d6ddf37a5bfb” • Type: Default • Position: Approximately (2278, 2270) • Purpose: • Presents the load details to the caller using expert, charismatic sales techniques (including subtle side‑comments about load weight and distance). • Outgoing Edges: • Edge 12: If the caller “confirms” the details → Go to getOfferDetails • Edge 13: If the caller “denies” the details → Go to LoadDenied 17. getOfferDetails • ID: “a1a7b7f7-2d69-4b2a-8f6a-e77fd5f7fdc9” • Type: Custom Tool • Position: Approximately (2126, 2485) • Purpose: • Fetches offer details (such as offer price, maximum offer, drop-off instructions, origin and destination addresses, etc.) via a GET API call. • Branching (Response Pathways): • If apiOfferOriginSingleLineAddress is not null → OfferDetailsFound (Edge 24) • If apiOfferStatusDoubleCheck != PUBLISHED → OfferDetailsNotFound (Edge 25) 18. OfferDetailsFound • ID: “97e3d955-a1ee-4bb5-9b81-93fa726b75de” • Type: Default • Position: Approximately (1982, 2763) • Purpose: • Charismatically informs the caller of a silver tier starting rate (using the retrieved offer price) for the route from the origin to destination. • Includes a brief quip about the scenery or a “quirky” bit of small talk. • Outgoing Edges: • Edge 17: If the caller counters the rate → Go to Negotiation1 • Edge 26: (Indirectly, if the trade ask id is later retrieved and the caller accepts) → Eventually lead to RateAcceptInit 19. OfferDetailsNotFound • ID: “a37dea33-4f38-497e-a66e-b8721c7686c8” • Type: Default • Position: Approximately (2386, 2763) • Purpose: • Informs the caller that a supervisor is now directly overseeing the route (due to missing or invalid offer details) and prepares to transfer the call. • Outgoing Edge: • Edge 14: “User responded” → Go to TransferForMinBid 20. LoadDenied • ID: “6157293d-9a69-43b1-b4f1-7934f0326c79” • Type: Default • Position: Approximately (2619, 2486) • Purpose: • Asks the caller (using their name) to specify which parts of the load details they dispute and confirms if they are still interested in bidding. 21. PreNegotiationBackout • ID: “727c21b2-e286-4234-bde3-c72dc3169091” • Type: End Call • Position: Approximately (3303, 2691) • Purpose: • Thanks the caller for their time and reminds them that many loads are available daily, thereby closing the conversation gracefully if the caller opts out.
────────────────────────────── V. TRADE ASK & BIDDING / NEGOTIATION PHASE 22. getTradeAskId • ID: “07684b1b-9257-4203-9f33-cff70452701a” • Type: Custom Tool • Position: Approximately (1979, 2953) • Purpose: • Calls an API (GET) to retrieve the trade ask ID necessary for placing a bid on the load. • Branching (Response Pathways): • If apiTradeAskId is not null → TradeAskIdFound (Edge 26) • If apiTradeAskId is null → TradeAskIdNotFound (Edge 27) 23. TradeAskIdNotFound • ID: “69064b05-5683-4ffd-b4dc-8fb30f012bbd” • Type: Default • Position: Approximately (2517, 3190) • Purpose: • Prompts the caller with “hmmm. How does that offer sound?” when no trade ask ID is returned. • Outgoing Edge: • Edge 28: After the user responds → Go to getTradeAskIdRetry 24. TradeAskIdFound • ID: “c15f66f9-b1d8-4acd-b6ca-db2a0db22c88” • Type: Default • Position: Approximately (1973, 3251) • Purpose: • Directly asks “How does that sound?” confirming the bid details. • Outgoing Edges: • Edge 17: If the user counters (proposes a higher rate) → Go to Negotiation1 • Otherwise, acceptance may eventually lead to RateAcceptInit via subsequent confirmation 25. getTradeAskIdRetry • ID: “29fad3f0-137c-44fb-a766-fa0f36e1e75e” • Type: Custom Tool • Position: Approximately (2834, 3364) • Purpose: • Retries obtaining the trade ask ID after an initial failure. • Branching (Response Pathways): • If apiTradeAskId is not null → Negotiation1 (Edge 29) • If apiTradeAskId is still null → OfferDetailsNotFound (Edge 30) 26. Negotiation1 • ID: “399c0655-ea58-4e71-9cad-633f5909d758” • Type: Default • Position: Approximately (2152, 3540) • Purpose: • Engages in profit‑driven negotiation by asking the caller what rate they consider appropriate between the offered range. • Extracts the variable userBidPrice. 27. RateAcceptInit • ID: “4c495e25-9c5e-4925-8740-13f7d17c1a87” • Type: Default • Position: Approximately (1655, 3542) • Purpose: • Expresses confidence and affirmation in the carrier’s decision to accept the offered rate. 28. TransferForMinBid • ID: “0567ff0d-bce3-4f48-ac5c-74d6008fd5aa” • Type: Transfer Call • Position: Approximately (2889, 2765) • Purpose: • Initiates a call transfer (using the given transfer number) when minimum bid issues arise or when escalation is needed.
────────────────────────────── VI. SUMMARY OF KEY EDGE TRANSITIONS
Below is a brief list of the critical edge connections (by ID and label):
• Edge 1: From Greeting_RequestMCNumber → ToolCall-searchCarriers (“User provides MC Number”)
• Edge 2: From McNumberNotFound → ToolCall-searchCarriers (“The user confirms the existing MC Number.”)
• Edge 3: From McNumberNotFound → UpdateMcNumber (“User provides an updated MC Number.”)
• Edge 4: From UpdateMcNumber → ToolCall-searchCarriers (“skip user response”)
• Edge 5: From Greeting_RequestMCNumber → McNumberRequired (“User does not provide their MC Number”)
• Edge 6: From McNumberRequired → ToolCall-searchCarriers (“User provides MC Number”)
• Edge 7: From McNumberRequired → NoMcNumberTransfer (“User does not provide their MC Number.”)
• Edge 8: From LoadNotFound → ToolCall-searchLoads (“User provides a revised Load Reference number”)
• Edge 9: From LoadNotFound → NoMcNumberTransfer (“User does not provide clarity on the load reference number.”)
• Edge 10: From LoadDenied → PreNegotiationBackout (“User is no longer interested”)
• Edge 11: From LoadFound → GetLoadDetails (“Always Proceed”)
• Edge 12: From LoadDetailsFound → getOfferDetails (“User confirms”)
• Edge 13: From LoadDetailsFound → LoadDenied (“User denies”)
• Edge 14: From OfferDetailsNotFound → TransferForMinBid (“User responded”)
• Edge 15: From LoadDetailsNotFound → NoMcNumberTransfer (“User responded”)
• Edge 16: From OfferDetailsFound → getTradeAskId (“always choose this pathway”)
• Edge 17: From TradeAskIdFound → Negotiation1 (“User counters rate”)
• Edge 18: From log AI negativity → NoMcNumberTransfer (if userLoadReference is null)
• Edge 19: From log AI negativity → ToolCall-searchLoads (if userLoadReference is not null)
• Edge 20: From Activate AI Agent Nurture → ToolCall-searchLoads (if userLoadReference is not null”) • Edge 21: From Activate AI Agent Nurture → NoMcNumberTransfer (if userLoadReference is null”)
• Edge 22: From GetLoadDetails → LoadDetailsFound (if apiLoadStatus == PUBLISHED”) • Edge 23: From GetLoadDetails → LoadDetailsNotFound (if apiLoadStatus != PUBLISHED”)
• Edge 24: From getOfferDetails → OfferDetailsFound (if apiOfferOriginSingleLineAddress is not null”) • Edge 25: From getOfferDetails → OfferDetailsNotFound (if apiOfferStatusDoubleCheck != PUBLISHED”)
• Edge 26: From getTradeAskId → TradeAskIdFound (if apiTradeAskId is not null”) • Edge 27: From getTradeAskId → TradeAskIdNotFound (if apiTradeAskId is null”)
• Edge 28: From TradeAskIdNotFound → getTradeAskIdRetry (“User responded”)
• Edge 29: From getTradeAskIdRetry → Negotiation1 (if apiTradeAskId is not null”) • Edge 30: From getTradeAskIdRetry → OfferDetailsNotFound (if apiTradeAskId is null”)
• Edge 31: From aiAgentsHHPitch → Activate AI Agent Nurture (“User is interested in AI agents for carriers”)
• Edge 32: From aiAgentsHHPitch → log AI negativity (“User isn’t interested in AI agents for Carriers”)
• Edge 33: From PhoneNumberCheck → aiAgentsHHPitch (“always”)
• Edge 34: From ToolCall-searchLoads → LoadFound (“Default/Webhook Completion”)
────────────────────────────── OVERALL FLOW SUMMARY
This comprehensive outline—with nodes identified by name, ID, approximate positioning, purpose, and connected via clearly labeled edges—captures the entire branching logic of the conversation flow.