The architecture is worth learning. The installed execution is not safe to launch.
The snapshot models a valuable lifecycle: receive application data, upsert the applicant, notify them, wait for a reply, offer booking, and retry by phone. But the webhook branch reads from a node that does not exist, two loan fields have no destination, both calendars are unbound, and the failure branch falsely confirms success.
Core pattern
Webhook intake → contact upsert → multi-channel follow-up → booking or timed call retry.
Data contract
The trigger is trigger-2-2; every downstream consumer reads trigger-2-1.
Lending language
The copy implies approval and pre-approval without verified underwriting state.
One agent contains two ambitious but incomplete workflows.
GPT-5.4 Mini, Skylar by Cartesia, zero active channels, 229-word prompt.
Conversation and inbound-call entries, contact lookup, booking, decline, transfer and terminal messages.
Webhook, upsert, email, SMS reply wait, calendar, one-day retry and two outbound calls.
No URL or sample; all consumers reference the wrong trigger ID.
Inbound booking displays UTC; webhook booking displays America/Los_Angeles.
No email channel, SMS number, or outbound caller ID is selected.
One account-specific named destination ships inside the reusable template.
No lending knowledge base, custom tool, or enabled built-in tool.
Text version of this diagram
The v10.1 snapshot installs one inactive agent with zero channels and two workflows: Inbound with 11 nodes and Inbound Webhook with 13 nodes, 24 functional nodes in total, with 10 open outputs. It installs no knowledge, tools, global variables or custom fields.
A clear lifecycle is buried under unresolved branches.
Workflows
INBOUNDINBOUND WEBHOOKAgent
Prompt BuilderTools & IntegrationsShared Knowledge1 · Inbound
Conversation Started accepts chat, voice and SMS even though it relies on call IDs, forwarding and hangup nodes. Inbound Call can overlap with the broader trigger.
2 · Inbound Webhook
The graph is conceptually strong, but its source ID is wrong everywhere and ten outcomes remain open.
Text version of this diagram
Conversation Started and Inbound Call each run a contact lookup. The Inbound Call lookup creates new contacts from webhook outputs that do not exist. Both reach a greeting or script that talks about loan approval, then either a hangup for callers no longer interested or a Smart Calendar Booking with no calendar in UTC. Booking success ends with a message naming the broker. Booking error forwards to one private number; no answer and outside hours end with an apology, and the answered output is open.
Text version of this diagram
The webhook trigger has no URL, sample or authentication. The contact lookup reads trigger-2-1, which does not exist. A match updates the contact with loan type and amount unmapped; both paths send a status email with no sender and a placeholder link, then an SMS with no sender that waits 30 minutes. A reply opens a Smart Calendar Booking with no calendar in Los Angeles time, whose success and error branches both text that the appointment is scheduled. A timeout places an outbound call with no caller ID; failure waits one day and places a second call whose outcomes are all open. The first call's answered output is open. Two notes about generating the webhook URL and buying a phone number are disconnected.
The workflow cannot read the payload it was built to process.
The installed webhook node is trigger-2-2. Contact lookup, contact update, email personalization, SMS personalization, company, loan amount, and loan type all reference trigger-2-1. The editor explicitly flags those variables as unavailable.
Mapped from nonexistent trigger-2-1.
Value maps to “Select a field…” rather than a defined contact field.
Value maps to “Select a field…” rather than a typed currency/number field.
Success and error paths send the same scheduled-confirmation copy.
Text version of this diagram
The loan application payload has no captured shape. The installed trigger is trigger-2-2, but every consumer reads trigger-2-1. First name, last name, email, phone and company map to standard contact fields from that missing source. Loan type and loan amount map to Select a field, so they have no destination.
Twenty findings, led by broken data and misleading status copy.
All application data can resolve blank because consumers read a nonexistent trigger.
A failed booking tells the applicant their appointment is scheduled.
“Great news,” “pre-approval,” and “approval appointment” imply an outcome the automation never verifies.
A reusable lending template ships with another operator’s identity and phone route.
Loan type and amount map to unselected fields.
The nodes also disagree between UTC and America/Los_Angeles.
Email, SMS, and outbound calls cannot execute.
The inbound-call create path references unrelated missing trigger outputs.
Non-voice sessions can enter call-ID, transfer, and hangup logic.
No URL, sample, filter, authentication, or replay behavior is defined.
Mike Brown and Jason/Jayson Floyd coexist with a deleted company variable.
Answered and final-call outcomes have no explicit completion policy.
Automated calls and texts lack source-of-permission, frequency caps, and durable opt-out state.
Email and SMS say “Add your Calender Link” rather than providing a working action.
The agent is not constrained against guarantees, advice, eligibility, or unauthorized data disclosure.
No date, time, timezone, location, meeting link, or reschedule path is sent.
They do not document applicant activity and never run.
Conversation Started and Inbound Call may both react to one phone conversation.
Only voicemail/screening copy is configured and Jason/Jayson spelling conflicts.
No simulator case or synthetic communication path has verified terminal behavior.
Make the data contract true before making the lending copy persuasive.
- 1Rebuild the webhook contractRequired
Generate a secured endpoint, capture a synthetic payload, validate keys, and replace every trigger-2-1 reference.
- 2Create typed loan fieldsRequired
Install explicit loan-type and loan-amount fields, then map and validate them.
- 3Rewrite the status languageCompliance
Report only verified application state; never imply approval, pre-approval, eligibility, rate, or funding.
- 4Repair success and error pathsRequired
Use truthful recovery copy on booking failure and complete every terminal.
- 5Remove account-specific destinationsSafety
Clear the named broker, forwarding number, names, and unavailable globals.
- 6Configure channels and calendarRequired
Verify email, SMS, caller ID, calendar, timezone, availability and booking outputs.
- 7Add outreach governanceCompliance
Store permission source, channel consent, opt-out, suppression, frequency, and quiet-hour state.
- 8Attach governed lending knowledgeRequired
Define approved FAQs, escalation rules, privacy boundaries, and human/underwriter authority.
- 9Separate voice from textRequired
Restrict call-only variables and nodes to voice, with dedicated SMS/chat paths.
- 10Test with synthetic applicantsTest
Prove new/existing contact, reply/timeout, booking success/error, call outcomes, consent and opt-out.
Loan Approval snapshot audit complete.
The snapshot is installed, inventoried, traced, sanitized, and added to the comparison and defect matrices.
Open remediation report →