Motion Failure Audit: Vellocity Platform¶
Date: 2026-02-15 Scope: Codebase audit against AWS Marketplace motion failure patterns Framework: PRIME (Productization, Reach, Integration, Marketing, Engagement)
Executive Summary¶
This audit maps the motion failure patterns identified in real-world AWS Marketplace partner stories against Vellocity's current codebase. The core finding: Vellocity has strong individual components but lacks the connective tissue that prevents motion collapse. The platform provides tools but doesn't enforce the sequencing, gates, and institutional logic awareness that separates successful marketplace launches from the $500K mistake.
Audit Verdict¶
| Area | Status | Risk Level |
|---|---|---|
| PRIME as Diagnostic (not philosophical) | GAP | HIGH |
| GTM Motion Sequencing Enforcement | GAP | HIGH |
| CTA-to-Revenue Misalignment | PARTIAL | MEDIUM |
| Monetization Infrastructure | PARTIAL | MEDIUM |
| ACE Eligibility Awareness | GAP | HIGH |
| Credit Burn / Conversion Workflow | GAP | HIGH |
| RIF / FTR Self-Service Guidance | GAP | MEDIUM |
1. PRIME Framework: Diagnostic vs. Philosophical¶
What the Feedback Demands¶
PRIME should be a revenue dashboard, not a book chapter:
- Productization Readiness Score
- Reach Amplification Index
- Integration Depth Analysis
- Marketing Motion Alignment
- Engagement Monetization Tracking
What the Code Has¶
File: app/CustomExtensions/CloudMarketplace/System/Models/PartnerReadinessChecklist.php
The current readiness checklist uses 8 operational categories:
partner_profile (15%) - AWS Partner Central profile
seller_profiles (15%) - Marketplace seller profiles
marketplace_listings (20%) - Product listings
brand_voice (10%) - Brand voice config
sandbox_eligibility (10%) - Innovation Sandbox
aws_compliance (15%) - FTR review, security
data_sources (10%) - Connected data sources
cosell_readiness (5%) - Co-sell platform setup
The Gap¶
None of these categories map to the PRIME diagnostic framework. The current checklist answers "are your technical prerequisites complete?" but NOT "are your revenue systems aligned?"
| PRIME Dimension | Current Coverage | What's Missing |
|---|---|---|
| Productization Readiness Score | marketplace_listings checks listing content exists |
No pricing model validation, no packaging readiness, no buyer journey mapping, no free trial effectiveness scoring |
| Reach Amplification Index | MarketplaceListingMetric tracks impressions/clicks |
No channel amplification scoring, no GTM motion velocity tracking, no campaign-to-pipeline correlation |
| Integration Depth Analysis | aws_compliance checks FTR pass/fail |
No API integration depth scoring, no consumption tracking readiness, no metering service validation |
| Marketing Motion Alignment | brand_voice checks voice config exists |
No campaign-to-listing alignment scoring, no content-to-CTA pathway validation, no launch sequencing readiness |
| Engagement Monetization Tracking | cosell_readiness at 5% weight |
No ACE opportunity count tracking, no co-sell conversion rates, no MDF ROI tracking, no engagement-to-revenue correlation |
Recommendation¶
Transform PartnerReadinessChecklist::CATEGORIES from operational checklist to PRIME diagnostic dimensions. Each dimension should compute a real-time score from actual platform data, not from manual checkbox completion.
Priority: HIGH - This is the core positioning differentiator described in the feedback.
2. GTM Motion Sequencing: Structure Without Enforcement¶
What the Feedback Demands¶
Story #1 (Airline Software Provider): "No launch sequencing plan" = go-to-market sequencing failure.
Partners need gates that prevent motion collapse: - Pre-submission QA before marketplace listing - Internal governance clarity before CTA activation - Partner Central migration awareness before co-sell - Launch sequencing that enforces readiness before execution
What the Code Has¶
File: database/migrations/2026_01_20_000001_reorganize_menu_gtm_motions.php
The platform defines 4 GTM motions as menu categories:
CREATE → Content-First Build
LAUNCH → Campaign Execution
CO-SELL → Partner GTM
LEARN → Intelligence & Attribution
The Gap¶
These are navigation categories, not sequenced gates. A partner can jump to CO-SELL without completing CREATE or LAUNCH. There is no enforcement of readiness between stages.
| Sequencing Need | Current State | Gap |
|---|---|---|
| Pre-submission QA gate | No gate exists | Partners can launch listings without QA validation |
| CREATE before LAUNCH | Menu order implies sequence | No enforcement - all sections accessible immediately |
| LAUNCH before CO-SELL | Menu order implies sequence | Can initiate co-sell without any campaign infrastructure |
| Readiness gates between motions | PartnerReadinessChecklist exists but doesn't gate access |
Checklist is informational, not blocking |
| Launch sequencing plan | No concept of sequencing plan | No timeline-based launch workflow with dependencies |
Specific Code Evidence¶
In PartnerReadinessChecklist.php:328-347, the determineStatus() method only sets status labels. It doesn't gate any platform operations:
protected function determineStatus(int $score, int $blockingItems): string
{
if ($blockingItems > 0) return self::STATUS_NEEDS_ATTENTION;
if ($score >= 90) return self::STATUS_READY;
// ... purely informational
}
Recommendation¶
Implement motion gates in the route/middleware layer that check readiness scores before allowing access to downstream GTM motions. A partner with 0% CREATE completion should see a guided pathway, not the full CO-SELL toolset.
Priority: HIGH - This directly prevents the "go-to-market sequencing failure" pattern.
3. CTA-to-Revenue Misalignment¶
What the Feedback Demands¶
Story #2 (Private Offer Misconception): Partners think "Turn on CTA = money flows." Reality:
- CTA ≠ revenue
- CTA = co-sell routing
- CTA = DGR triage gate
- CTA = enablement, not automation
What the Code Has¶
File: app/CustomExtensions/CloudMarketplace/System/Models/MarketplaceCtaMetric.php
CTA metrics track click performance: - 9 CTA types (request_demo, private_offer, free_trial, etc.) - 8 CTA positions (hero, above_fold, sidebar, etc.) - Strength scoring (CTR 30%, conversion 35%, position 15%, volume 20%)
File: app/Models/PrivateOfferRequest.php
Private offer workflow tracks the sales lifecycle: - Status flow: new → qualified → proposal_sent → negotiating → accepted - Sales rep assignment, contact tracking, follow-up management - CRM sync (HubSpot, Salesforce)
The Gap¶
CTA and Private Offer are disconnected systems. There's no concept that CTA activation should trigger sales alignment workflows, not just track clicks.
| Need | Current State | Gap |
|---|---|---|
| CTA activates co-sell routing | CTA tracks metrics only | No routing logic from CTA to co-sell pipeline |
| CTA triggers DGR triage | No DGR concept exists | No demand generation review before CTA goes live |
| CTA requires sales alignment | CTA and Private Offers are separate | No validation that sales team is ready before CTA activation |
| CTA as enablement layer | CTA is a measurement tool | No pre-activation checklist for sales readiness |
Specific Code Evidence¶
MarketplaceCtaMetric::calculateStrengthScore() (line 124-169) scores CTA strength based entirely on performance metrics (CTR, conversion, position). It has zero awareness of whether:
- A sales process exists behind the CTA
- The partner has a deal desk to handle inbound
- The CTA target (demo, private offer) has operational support
Recommendation¶
Add a cta_readiness_score that validates operational infrastructure behind each CTA type before allowing activation. For example, request_private_offer CTA should verify that PrivateOfferRequest workflows have assigned sales reps and active CRM integrations.
Priority: MEDIUM - Revenue consequence is 1-2 quarters of momentum loss.
4. Monetization Infrastructure Gaps¶
What the Feedback Demands¶
Story #3 (Supabase - 600 MQLs): No conversion system. Missing: - Deal desk - Credit burn tracking - Conversion workflow - Subscription migration plan
"That's a monetization infrastructure failure. Credits expire → no upsell → no revenue capture."
What the Code Has¶
| Component | Status | File |
|---|---|---|
| Deal desk (formal) | MISSING | PrivateOfferRequest has sales workflow but no formal deal desk queuing/approval |
| Credit burn tracking | WRONG SCOPE | UserUsageCredit tracks Vellocity platform credits, not customer marketplace credits |
| Conversion workflow | PARTIAL | PrivateOfferRequest tracks new→accepted but no MQL-to-customer conversion pipeline |
| Subscription migration | MISSING | No concept of free trial → paid subscription migration workflow |
The Gap¶
Deal Desk: PrivateOfferRequest.php (line 126-134) defines a status workflow (new → qualified → proposal_sent → negotiating → accepted) but this is a single-track sales process. There's no:
- Multi-approver deal desk queue
- Pricing governance rules
- Discount authority levels
- Deal routing by size/complexity
Credit Burn Tracking: The platform tracks Vellocity's own token credits (UserUsageCredit), but has no model for tracking a customer's AWS Marketplace credits (promotional credits, sandbox credits, ISV Accelerate credits). The SandboxCreditRequest model in DesignWinActivity tracks requests but not burn rate or expiry.
Conversion Workflow: ContentAttributionEvent.php tracks content → deal attribution beautifully (5 attribution models, CRM integration, deal value calculation). But there's no conversion pipeline that:
- Captures MQLs from marketplace activity
- Triages by qualification criteria
- Routes to conversion workflow
- Tracks credit → subscription migration
- Alerts on credit expiry approaching without upsell
Specific Code Evidence¶
ContentAttributionEvent::CONVERSION_EVENTS (line 114-119) defines:
public const CONVERSION_EVENTS = [
self::EVENT_FORM_SUBMIT,
self::EVENT_MEETING_BOOKED,
self::EVENT_OPPORTUNITY,
self::EVENT_DEAL_CLOSED,
];
This tracks that a conversion happened, not that a conversion workflow was executed. There's no model for: - MQL qualification criteria - Lead scoring - Conversion workflow steps - Credit expiry alerting - Upsell trigger conditions
Recommendation¶
Build a MarketplaceConversionPipeline model that connects: MQL capture → qualification → credit tracking → subscription migration → upsell triggering. This is the "monetization infrastructure" the feedback identifies as a six-figure opportunity loss when missing.
Priority: HIGH - "Easily a six-figure opportunity loss."
5. ACE Eligibility Blind Spot¶
What the Feedback Demands¶
Story #4 (Bolt): Partners assume "engineering will enable RPO" but eligibility = traction + ACE opportunity count. Missing: - Threshold awareness - Qualification criteria knowledge - Enablement roadmap - Pre-qualification strategy
What the Code Has¶
File: app/Extensions/ContentManager/System/Services/Capabilities/AceOpportunitySyncCapability.php
Strong ACE brief generation and pipeline tracking: - 4 operations: generate_brief, prepare_submission, track_pipeline, request_engagement - 7 pipeline stages: prospect → qualified → technical_validation → business_validation → committed → closed_won → closed_lost - AWS field team engagement routing (SA, PSA, AE, etc.)
The Gap¶
The ACE capability generates individual opportunity briefs but has zero awareness of portfolio-level eligibility thresholds. It doesn't know or track:
| ACE Eligibility Need | Current State | Gap |
|---|---|---|
| Minimum opportunity count for RPO eligibility | Not tracked | No concept of "you need X ACE opportunities to qualify for RPO" |
| Traction metrics threshold | Not tracked | No tracking of aggregate traction metrics vs. tier thresholds |
| ISV Accelerate tier requirements | Not modeled | No model for ISV Accelerate tier progression (Select → Advanced → Premier) |
| Pre-qualification strategy | Not implemented | No roadmap showing "you are here, you need X to reach next tier" |
| ACE opportunity count dashboard | Not implemented | No aggregate view of total ACE opportunities vs. thresholds |
Specific Code Evidence¶
AceOpportunitySyncCapability::validateAceRequirements() (line 396-422) validates individual opportunity fields:
$required = [
'customer_name',
'opportunity_name',
'deal_value',
'customer_industry',
'primary_challenge',
'solution_description',
];
This validates a single submission. There's no method that checks: - "How many ACE opportunities does this partner have?" - "What's the minimum count for their target tier?" - "Are they on track for RPO eligibility?" - "What engagement types are they missing?"
Recommendation¶
Add an AceEligibilityTracker that maintains portfolio-level ACE metrics: total opportunities, opportunities by stage, tier threshold progress, and time-to-eligibility projections. This should surface in the PRIME diagnostic dashboard under the Engagement dimension.
Priority: HIGH - "Could stall enterprise expansion."
6. The $500K Mistake: Missing Revenue Readiness Gate¶
What the Feedback Demands¶
The $500K mistake is: "Activating Marketplace without revenue readiness." Or more precisely: "Entering AWS Marketplace without aligned Productization, Reach, Integration, Marketing, and Engagement systems."
What the Code Has¶
The PartnerReadinessChecklist model has a concept of blocking_items and status tracking. The PredictionEngineService::scoreLaunchReadiness() computes a multi-factor readiness score with a threshold: 'can_launch' => empty($blockingIssues) && $totalScore >= 70.
The Gap¶
These readiness checks are advisory only. They don't gate any actual operations. A partner with a readiness score of 10 can still: - Publish marketplace listings - Activate CTAs - Enable co-sell - Submit ACE opportunities - Launch campaigns
There is no revenue readiness gate that enforces: "You cannot activate X until Y is ready."
Specific Code Evidence¶
PredictionEngineService.php:237:
This can_launch boolean is computed but never enforced. It's returned in the DTO but no controller, middleware, or policy checks it before allowing operations.
Recommendation¶
Implement a RevenueReadinessGate middleware/policy that is checked before key marketplace operations. Map each operation to its required PRIME dimension scores:
| Operation | Required PRIME Score | Minimum Threshold |
|---|---|---|
| Publish listing | Productization ≥ 70 | Integration ≥ 50 |
| Activate CTA | Marketing ≥ 60 | Has active sales process |
| Enable co-sell | Engagement ≥ 50 | Has ACE capability |
| Submit ACE | Engagement ≥ 60 | Meets tier threshold |
| Launch campaign | Reach ≥ 50 | Marketing ≥ 60 |
Priority: CRITICAL - This is the single most important gap. This IS the $500K mistake prevention.
7. The RIF Twist: FTR Without Partner SA¶
What the Feedback Demands¶
No FTR reviews without designated Partner SA. Fewer internal reviewers = more backlog, more blind spots, more self-service expectation.
What the Code Has¶
File: app/CustomExtensions/CloudMarketplace/System/Models/DesignWinActivity.php
FTR tracking exists:
- ftr_review_status: pending, passed, failed, not_required
- ftr_review_date tracking
- recordFTRReview() method
- getSandboxEligibilityChecklist() includes FTR
The Gap¶
FTR tracking is status recording, not navigation guidance. The platform records that an FTR happened but doesn't help partners:
| Need | Current State | Gap |
|---|---|---|
| Self-service FTR preparation | No guidance | No checklist/wizard for FTR self-prep |
| FTR backlog awareness | No visibility | Partner doesn't know current wait times |
| Alternative review paths | Not modeled | No guidance on proceeding without Partner SA |
| Common FTR failure patterns | Not tracked | No pattern library for avoiding failures |
| FTR remediation workflow | Not implemented | No guided fix-and-resubmit workflow |
Recommendation¶
Add FTR self-service preparation capabilities: - Pre-FTR checklist based on common failure patterns - Estimated review timeline based on current backlog data - Guided remediation workflow when FTR fails - Alternative pathway documentation when Partner SA unavailable
Priority: MEDIUM - Increasing urgency as AWS internal support thins.
8. The Meta Pattern: Partners Operate As If AWS Is Infrastructure¶
What the Feedback Demands¶
Partners behave as if: - Marketplace is a feature → Reality: ecosystem with institutional logic - AWS will drive demand → Reality: AWS amplifies what already works - CTA is a switch → Reality: CTA is enablement, not automation - Co-sell is automatic → Reality: co-sell requires ACE readiness + traction
Platform Manifestation¶
The Vellocity codebase reflects this same assumption in subtle ways:
- Readiness is optional - All tools are available regardless of readiness state
- CTA is metrics - CTA scoring is about performance, not about operational readiness
- ACE is per-opportunity - ACE tooling is transactional, not strategic
- Co-sell is partner matching - Co-sell focuses on finding partners, not on co-sell infrastructure readiness
- Attribution is backward-looking - Content attribution tracks what happened, not what should happen next
The Positioning Opportunity¶
The feedback identifies Vellocity's positioning as:
"The Strategic Layer Between Your SaaS and AWS Marketplace"
or
"Prevent the $500K Marketplace Mistake"
The codebase should embody this positioning by making revenue readiness the central organizing principle, not an optional dashboard widget.
Summary: Priority Action Items¶
Critical (Revenue-blocking)¶
- PRIME Diagnostic Dashboard - Replace operational checklist with revenue-diagnostic scoring across 5 PRIME dimensions
- Revenue Readiness Gate - Enforce PRIME scores before marketplace operations
- Marketplace Conversion Pipeline - Build MQL → qualification → credit tracking → upsell pipeline
High Priority (Quarter-blocking)¶
- GTM Motion Sequencing - Add gates between CREATE → LAUNCH → CO-SELL → LEARN
- ACE Eligibility Tracker - Portfolio-level ACE metrics with tier threshold awareness
- CTA Operational Readiness - Validate sales infrastructure behind each CTA before activation
Medium Priority (Momentum-blocking)¶
- FTR Self-Service Guidance - Pre-FTR checklist, remediation workflow, backlog awareness
- Credit Burn Tracking - Customer marketplace credit expiry alerting and upsell triggers
Implementation: Before → After Transformation¶
Implemented 2026-02-16. See commit history for the claude/motion-failure-audit-improvements-ggWSS branch.
Readiness Framework: Operational Checklist → PRIME Revenue Diagnostic¶
| Dimension | BEFORE | AFTER |
|---|---|---|
| Framework | 8 operational categories (partner_profile, seller_profiles, etc.) | 5 PRIME revenue dimensions (Productization, Reach, Integration, Marketing, Engagement) |
| Weights | Co-Sell at 5%, Brand Voice at 10% — operational busywork overweighted | Engagement at 20%, Productization at 25% — revenue signals drive priority |
| What it measures | "Are your technical prerequisites complete?" | "Are your revenue systems aligned to capture marketplace value?" |
| Score meaning | "In Progress" / "Nearly Ready" — neutral labels | "Revenue Systems Unaligned" / "$500K Mistake Pattern" — consequence language |
| Action guidance | "Complete Partner Profile setup" | "[P] Is your product packaged for marketplace buyers to self-serve?" |
| Data source | Manual checkbox completion | Real-time aggregation from platform models (listings, CTAs, ACE, FTR) |
Status Messaging: Neutral Labels → Consequence-Driven Language¶
| Score Range | BEFORE | AFTER |
|---|---|---|
| 0-29 | "Not Started" | "Revenue Systems Unaligned" — "Marketplace activation at this stage matches the pattern of a $500K mistake." |
| 30-49 | "In Progress" | "High Revenue Risk" — "Significant gaps in revenue infrastructure. Expect 2-3 quarter delay." |
| 50-69 | "In Progress" | "Revenue Velocity at Risk" — "Foundation in place but acceleration systems incomplete. Expect 1-2 quarter delay." |
| 70-89 | "Nearly Ready" | "Revenue Systems Aligned" — "Core infrastructure operational. Fine-tune for maximum velocity." |
| 90-100 | "Ready" | "Launch Ready" — "Revenue readiness verified across all PRIME dimensions. Launch conditions met." |
GTM Motions: Navigation Menu → Sequenced Gates¶
| Motion | BEFORE | AFTER |
|---|---|---|
| CREATE | Menu item — always accessible | Always unlocked — this is where you start |
| LAUNCH | Menu item — always accessible | Gated: Productization ≥ 60, Marketing ≥ 50 |
| CO-SELL | Menu item — always accessible | Gated: Productization ≥ 70, Integration ≥ 50, Engagement ≥ 40 |
| LEARN | Menu item — always accessible | Gated: Reach ≥ 40 (needs minimum data for intelligence) |
| Gate UX | No concept of gates | Shows progress bars, gap messages, "To unlock: Productization needs +15 points" |
CTA Strength Score: Performance-Only → Performance + Operational Readiness¶
| Factor | BEFORE (Weight) | AFTER (Weight) |
|---|---|---|
| CTR Performance | 30% | 25% |
| Conversion Rate | 35% | 30% |
| Position Effectiveness | 15% | 10% |
| Volume/Significance | 20% | 15% |
| Operational Readiness | Did not exist | 20% — validates infrastructure behind each CTA type |
CTA Operational Readiness Checks (NEW)¶
| CTA Type | BEFORE | AFTER — Required Infrastructure |
|---|---|---|
| Request Demo | Tracks clicks/conversions | Checks: demo calendar, sales routing, follow-up sequence |
| Request Private Offer | Tracks clicks/conversions | Checks: assigned sales rep, CRM integration, deal qualification, pricing authority |
| Start Free Trial | Tracks clicks/conversions | Checks: trial onboarding, usage tracking, conversion workflow, expiry alerts |
| Subscribe Now | Tracks clicks/conversions | Checks: pricing dimensions configured, billing/metering integration |
| Contact Us | Tracks clicks/conversions | Checks: routed to monitored inbox, response SLA defined |
Revenue Readiness Gate: Advisory → Enforced (NEW)¶
| Operation | BEFORE | AFTER — PRIME Thresholds Required |
|---|---|---|
| Publish listing | Allowed regardless of readiness | Productization ≥ 70, Integration ≥ 50 |
| Activate CTA | Allowed regardless of readiness | Marketing ≥ 60, Productization ≥ 50 |
| Initiate co-sell | Allowed regardless of readiness | Engagement ≥ 50, Productization ≥ 70, Integration ≥ 50 |
| Submit ACE | Allowed regardless of readiness | Engagement ≥ 60, Integration ≥ 40 |
| Launch campaign | Allowed regardless of readiness | Reach ≥ 50, Marketing ≥ 60 |
| Gate Response | N/A | 422 with PRIME gap details, failure story, and specific remediation steps |
ACE Tracking: Per-Opportunity → Portfolio Strategy (NEW)¶
| Aspect | BEFORE | AFTER |
|---|---|---|
| Scope | Single opportunity brief generation | Portfolio-level metrics across all ACE opportunities |
| Tier awareness | No concept of ISV Accelerate tiers | Tracks Select → Advanced → Premier thresholds |
| RPO eligibility | Not tracked | Calculates gap to Premier tier (RPO requirement) |
| Engagement breadth | Not tracked | Identifies missing engagement types (SA, Executive, EDP, etc.) |
| Velocity | Not tracked | Opportunities/month, win rate, average deal value |
| Recommendations | Per-field completion suggestions | Strategic: "Submit 3 more ACE opportunities to unlock MDF eligibility" |
PredictionEngineService::can_launch — Computed → Enforced¶
| Aspect | BEFORE | AFTER |
|---|---|---|
can_launch boolean |
Computed in DTO, returned in API response, never checked | Still computed in DTO; additionally enforced by RevenueReadinessGate middleware |
| Enforcement point | None — partner with score of 10 could publish, activate CTAs, enable co-sell | revenue-gate:{operation} middleware on operation routes |
| Failure response | N/A | Structured JSON with PRIME dimension gaps, failure pattern stories, and remediation |
Appendix: File Reference Map¶
| Audit Area | Primary Files |
|---|---|
| PRIME / Readiness | app/CustomExtensions/CloudMarketplace/System/Models/PartnerReadinessChecklist.php |
| Revenue Readiness Gate | app/Http/Middleware/RevenueReadinessGate.php |
| CTA Operational Readiness | app/CustomExtensions/CloudMarketplace/System/Models/MarketplaceCtaMetric.php |
| ACE Eligibility Tracker | app/Services/AceEligibilityTracker.php |
| GTM Motions | database/migrations/2026_01_20_000001_reorganize_menu_gtm_motions.php |
| Private Offers | app/Models/PrivateOfferRequest.php |
| ACE Sync | app/Extensions/ContentManager/System/Services/Capabilities/AceOpportunitySyncCapability.php |
| Attribution | app/Extensions/ContentManager/System/Models/ContentAttributionEvent.php |
| FTR/Design Win | app/CustomExtensions/CloudMarketplace/System/Models/DesignWinActivity.php |
| Prediction Engine | app/Services/PredictionEngine/PredictionEngineService.php |
| Launch Readiness | app/Livewire/Marketplace/LaunchReadinessScore.php |