Corrective Action: Visitor Experience Ownership Gap — No Agent Owns End-to-End Journey Verification

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:

  1. Deal-to-Contact association was missing — the API created deals associated with the company but not with the submitting contact
  2. Test data remained in the pipeline — a deal created during the build process ("Nico Sponsorship — Value-First AI Daily") was never cleaned up
  3. 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:

  1. That a visitor could complete the full journey and find their submission
  2. That all HubSpot associations were created (deal ↔ contact was missing)
  3. That test data was cleaned from production after the build
  4. 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

  1. Nico's contact — Company updated from "New Breed" to "ProvenLabs"
  2. Contact-to-Company association — Nico associated with ProvenLabs company record
  3. Deal-to-Contact association — ProvenLabs Sponsorship Inquiry deal linked to Nico's contact
  4. 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:

  1. A form component
  2. An API endpoint
  3. 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.