Corrective Action: Visitor Experience Ownership Gap — No Agent Owns End-to-End Journey Verification
Date: March 11, 2026 Category: Verification Failure + Organizational Gap Impact: UAT confusion (Chris couldn't locate form submissions), missing deal-to-contact association, test data in production pipeline, 9 of 12 visitor paths incomplete Resolution Time: ~30 minutes for immediate data fixes; architectural prevention in progress
Incident
What Happened
Nico Lafakis was asked to UAT the new sponsor inquiry pages. He completed UAT at 6:04 PM on March 10, followed immediately by Chris testing the form. Both submissions created Sponsorship Deals in HubSpot successfully — but Chris looked in the HubSpot Forms tool (the traditional location for form submissions) and saw nothing. The custom API bypasses HubSpot Forms entirely, creating Deals directly via the CRM API. No communication was provided to Chris about where data would land.
Upon investigation, three additional issues were discovered:
- Deal-to-Contact association was missing — the API created deals associated with the company but not with the submitting contact
- Test data remained in the pipeline — a deal created during the build process ("Nico Sponsorship — Value-First AI Daily") was never cleaned up
- Nico's contact was still associated with New Breed (his former company) rather than ProvenLabs
Timeline
| Time | Event |
|---|---|
| Mar 10, 12:39 AM | V creates test deal during sponsor build (never cleaned up) |
| Mar 10, 6:00 PM | Nico submits form — ProvenLabs Sponsorship Inquiry deal created |
| Mar 10, 6:04 PM | Nico reports UAT complete |
| Mar 10, 6:14 PM | Chris tests form — VF Team Sponsorship Inquiry deal created |
| Mar 11, ~6:00 AM | Chris reports no form submissions visible in HubSpot |
| Mar 11, 6:30 AM | V locates 3 deals in Sponsorship pipeline, identifies association bug |
| Mar 11, 6:36 AM | Nico's contact updated, deal associations fixed, API code patched |
Root Cause
Primary: No agent owns the complete visitor experience lifecycle
The sponsorship system was built across multiple commits (Sanity schemas, HubSpot pipeline, website pages, API endpoints, email notifications, portal dashboard). Each component was built correctly in isolation. But no agent verified:
- That a visitor could complete the full journey and find their submission
- That all HubSpot associations were created (deal ↔ contact was missing)
- That test data was cleaned from production after the build
- That the person requesting UAT knew where to verify the results
Secondary: Deal creation gated on company success
The API gated deal creation on if (companyId) — if company search/creation failed for any reason, no deal would be created at all, silently losing the entire submission.
Category: Verification Failure + Organizational Gap
This is a systemic gap, not a one-time mistake. The current agent roster covers:
- Lookout — Static website health (SEO, broken links, content structure)
- Waypoint — CTA design effectiveness and psychology
- Pavilion — Client portal configuration
None of these agents test runtime flows: form → API → HubSpot → operational objects → confirmation. Nobody owns "can a visitor complete this journey?"
Fix Applied
Immediate Resolution
- Nico's contact — Company updated from "New Breed" to "ProvenLabs"
- Contact-to-Company association — Nico associated with ProvenLabs company record
- Deal-to-Contact association — ProvenLabs Sponsorship Inquiry deal linked to Nico's contact
- API code fix — Deal creation now always includes contact association and no longer requires company creation to succeed
Code Changes
| File | Change |
|---|---|
apps/website/src/pages/api/sponsors/apply.ts |
Deal associations now include contact (typeId: 3) alongside company (typeId: 341) |
apps/website/src/pages/api/sponsors/apply.ts |
Deal creation no longer gated on if (companyId) — always creates deal with contact, adds company when available |
Verification
- HubSpot confirms 3 deals in Sponsorship pipeline (879739401)
- Nico's contact (143070534506) now associated with ProvenLabs company (52872363537) and ProvenLabs deal (57907062319)
- API code reviewed: both association types present in deal creation payload
Prevention Measures
Rules Added
| Layer | File | Rule |
|---|---|---|
| Critical Lessons | memory/MEMORY.md |
Custom API form submissions bypass HubSpot Forms tool. When building custom form → API → HubSpot flows, document WHERE data lands (which pipeline, which object type) in the UAT script. Never assume the tester knows to look in a non-standard location. |
| Critical Lessons | memory/MEMORY.md |
Every HubSpot object creation must include ALL relevant associations in a single API call. Deal creation must associate with both company AND contact. Gating object creation on optional associations silently drops submissions. |
| Critical Lessons | memory/MEMORY.md |
Test data must be cleaned from production pipelines before UAT. Any records created during development (not by real users) must be removed or clearly labeled before handing off for testing. |
| Organizational | New agent: Value Path Concierge | Agent team that owns end-to-end visitor journey verification — from landing page through form submission through HubSpot record creation through operational object lifecycle |
Detection Triggers
If the system is building a feature that includes:
- A form component
- An API endpoint
- HubSpot object creation
Then BEFORE marking the feature complete:
- Test the full submission flow manually
- Verify all HubSpot objects AND associations were created
- Clean any test data from production
- Document where data lands for the UAT tester
Lessons
This incident reveals a structural gap in the organization: we have agents that build features, agents that monitor health, and agents that track relationships — but nobody owns the visitor's actual experience of using what we build. The gap between "the code works" and "the visitor's journey works" is where trust breaks down.
Chris's instinct to create Value Path Concierges addresses this directly: an agent per audience path that owns the complete journey from first touch through activation and into operational management. The concierge doesn't just verify the form works — it owns the entire lifecycle of that relationship type.
Related Incidents
- 2026-03-10: Paragon Account Data Drift — Same pattern: objects created but associations/properties incomplete. Portal showed 40% of available data because nobody verified the complete picture.
- 2026-02-18: HubSpot Broadcast Immediate Publish — API side effects not verified before batch operation.
- Pattern: Build without verification — The #1 recurring theme across corrective actions. The system builds correctly but doesn't confirm the user-facing result.