Skip to content

CPPO Proposal Generator

Capability Slug: cppo_proposal_generator Plan Tier: Command Credit Cost: 10 / 15 / 20 / 25 credits per run (varies by proposal type) Category: Co-Sell Default proposal type: generate_proposal Simulation: Supported (3 / 8 / 15 credits for quick / standard / deep)


Overview

A Channel Partner Private Offer (CPPO) is the AWS Marketplace transaction model for ISV-to-partner-to-customer resale. The mechanics involve ISV pricing, partner margins, an AWS Marketplace fee, contract terms, and a chain of acceptance steps that span deal desk, legal, channel ops, and the partner's own sales motion. Doing this manually is a multi-day spreadsheet exercise.

CPPO Proposal Generator turns those inputs into structured output: a full proposal, a pricing breakdown with AI-generated justification, partner agreement clauses, or an executive summary — depending on which mode you run. The pricing math is deterministic. The AI handles narrative framing, agreement language, and discount defense.


The four proposal types

Pick the mode that matches your workflow stage. Each runs independently and returns its own credit cost.

Proposal type Credits Output When to use
generate_proposal (default) 25 Full eight-section CPPO proposal: executive summary, partner details, solution details, pricing structure, CPPO terms, compliance & requirements, implementation plan, next steps First proposal pass for a new deal — get the complete package in one run
pricing_structure 15 Deterministic pricing tiers + AI narrative justification + margin analysis + discount justification + payment terms Refining pricing on an in-flight deal without regenerating the whole proposal
partner_agreement 20 Nine clause types from AI + key clauses extracted + partner / ISV / AWS-program obligations Legal review pass — generate clauses that match your CPPO arrangement
deal_summary 10 One-page exec summary + deal metrics + stakeholders + risk register + success criteria Internal go/no-go review at deal desk

Models used vary by mode for cost efficiency: generate_proposal and partner_agreement use Claude 3 Sonnet; pricing_structure and deal_summary use Claude 3 Haiku.


Required and optional parameters

Parameter Required Description
proposal_type Yes One of generate_proposal, pricing_structure, partner_agreement, deal_summary
deal_data Required for most modes Object with total_value, contract_months, discount_percentage, payment_model, deal_name, etc.
partner_data Required for most modes Object with partner_name, partner_tier, partner_specializations, primary_contact
customer_data Required for proposal & summary Object with customer_name, buyer_name, economic_buyer
isv_list_price Pricing mode only Numeric ISV list price per period (typically per month)
partner_margin Pricing mode only Decimal (e.g. 0.15 for 15%). Defaults to 0.15
discount_requested Pricing mode only Decimal (e.g. 0.20 for 20%). Defaults to 0
agreement_type Agreement mode only standard (default) or other custom labels

How the pricing math works

The pricing engine in calculateCppoPricing() is deterministic — no AI involvement on the numbers themselves:

customer_price       = isv_list_price × (1 - discount_requested)
partner_buy_price    = customer_price × (1 - partner_margin)
aws_marketplace_fee  = customer_price × 0.03   ← 3% (ISV Accelerate rate)
isv_net_price        = partner_buy_price - aws_marketplace_fee
total_contract_value = customer_price × contract_months
isv_tcv_net          = isv_net_price × contract_months

Verify the AWS Marketplace fee for your enrollment

The pricing engine uses 0.03 (3%) — the reduced rate for ISVs enrolled in AWS Marketplace ISV Accelerate. If you're not in that program, the standard listing-fee rate applies. The fee shows up as aws_marketplace_fee and aws_marketplace_fee_percentage on every pricing output so you can sanity-check before generating CPPO docs.

The pricing block also returns:

  • discount_percentage, partner_margin_percentage — surfaced as percentages for review
  • annual_customer_value and annual_isv_net — month → year conversions
  • All values rounded to 2 decimal places

The accompanying analyzeMargins() helper adds:

  • gross_margin_percentage — ISV net as a percentage of customer price
  • partner_take, aws_take, isv_take — absolute dollar splits
  • margin_healthHealthy if ISV net ≥ 50% of customer price, otherwise Needs Review

Discount justification rules

The deterministic justifyDiscount() validator runs alongside the pricing math:

Discount Auto-attached justifications
≥ 20% Strategic account acquisition · Multi-year commitment · Expansion potential
≥ 10% Competitive displacement · Reference customer value
< 10% Standard partner pricing

Plus contextual additions:

  • Contract ≥ 24 months → "Long-term commitment premium"
  • Total value ≥ $100K → "Volume discount tier"

approval_required is set to true when the discount is 20% or higher. Treat that as a hard gate in your deal desk flow.


Payment terms

Pass deal_data.payment_model and the capability returns the matching terms object:

Model Schedule Terms Renewal
annual_upfront (default) Annual upfront payment Net 30 from invoice date Auto-renewal with 30-day notice
monthly Monthly in arrears Net 15 from invoice date Month-to-month after initial term
quarterly Quarterly upfront Net 30 from invoice date Auto-renewal with 60-day notice
anything else As agreed Net 30 Per contract terms

What generate_proposal returns

The full proposal mode is the heavyweight default. AI-generated sections (eight of them) plus deterministic helpers:

{
  "success": true,
  "proposal_type": "generate_proposal",
  "credits_used": 25,
  "proposal": {
    "executive_summary": { "deal_overview": "...", "total_contract_value": "...",
                           "contract_duration": "...", "key_value_drivers": [...] },
    "partner_details":   { "partner_name": "...", "partner_tier": "...",
                           "partner_specializations": [...], "partner_capabilities": [...] },
    "solution_details":  { "isv_product_name": "...", "marketplace_listing_id": "...",
                           "pricing_model": "...", "aws_services_included": [...] },
    "pricing_structure": { "list_price": ..., "partner_discount": ...,
                           "customer_price": ..., "margin_breakdown": {...},
                           "payment_schedule": "..." },
    "cppo_terms":        { "offer_duration": "...", "contract_terms": "...",
                           "renewal_terms": "...", "support_terms": "..." },
    "compliance":        { "marketplace_compliance": [...], "data_residency": "...",
                           "security_requirements": [...], "regulatory_compliance": [...] },
    "implementation":    { "deployment_timeline": "...", "onboarding_process": "...",
                           "training_included": [...], "success_milestones": [...] },
    "next_steps":        { "approval_process": [...], "cppo_submission_steps": [...],
                           "timeline_to_close": "..." }
  },
  "cppo_ready": true,
  "marketplace_requirements": { /* AWS-program requirements, see below */ },
  "next_steps": [ /* 5-step deterministic checklist with owners + timelines */ ],
  "estimated_timeline": { "proposal_creation": "1-2 days", "internal_approval": "2-3 days",
                          "partner_negotiation": "3-5 days", "cppo_generation": "1 day",
                          "customer_acceptance": "Variable",
                          "total_estimated": "7-14 days (excluding customer)" }
}

cppo_ready is a deterministic boolean — true when all four required sections (executive summary, partner details, solution details, pricing structure) are populated.


Five-step submission checklist

Every generate_proposal run returns the same five-step sequence with explicit owners and timelines:

Step Action Owner Timeline
1 Finalize pricing with partner ISV Sales 1-2 days
2 Generate CPPO in AWS Marketplace ISV Marketplace Admin 1 day
3 Partner accepts CPPO Channel Partner 1-2 days
4 Partner creates customer private offer Channel Partner 1 day
5 Customer accepts offer End Customer Per sales cycle

This is a deterministic checklist, not AI output — it's the AWS-defined CPPO acceptance flow.


What partner_agreement returns

Nine AI-generated clauses plus three deterministic obligation lists:

AI clauses:

  1. term_duration — contract length and renewal
  2. pricing_terms — discount and margin terms
  3. payment_terms — when and how partner pays ISV
  4. territory_rights — geographic restrictions
  5. exclusivity — exclusivity terms if applicable
  6. marketing_rights — co-marketing permissions
  7. support_responsibilities — who handles what support
  8. termination_clauses — how the agreement can end
  9. confidentiality — NDA terms

Deterministic boilerplate:

List Items
Partner obligations Maintain active AWS Partner status · Provide first-line support · Meet sales commitments · Comply with branding · Report sales activity · Maintain CSAT
ISV obligations Maintain Marketplace listing · Provide enablement · Escalation support · Roadmap sharing · Co-marketing · Timely CPPO processing
AWS CPPO requirements ISV enrolled in CPPO program · Partner is authorized reseller · Both parties accepted Marketplace terms · Offer complies with AWS pricing policies

AWS Marketplace requirements (returned with every proposal)

Category Requirements
Partner Registered AWS Partner · Marketplace seller account · Accepted Marketplace terms · Reseller authorization from ISV
Listing Active public listing · Pricing model supports private offers · EULA allows resale
Transaction Minimum transaction value may apply · Customer has AWS account · Billing through AWS

Simulation (dry-run) mode

CPPO Proposal Generator implements SimulatableCapabilityInterface, so you can dry-run a proposal against persona reviewers before paying full credits. Useful when a deal is high-discount, strategic, or going through deal desk.

Quality Credits Time Depth
quick 3 ~10 seconds Basic validation
standard 8 ~20 seconds Comprehensive review
deep 15 ~45 seconds Exhaustive analysis

Simulation runs against the personas registered in CapabilityPersonaRegistry::getCppoPersonas() (deal desk, channel manager, partner sales) and surfaces concerns before you commit to the full 25-credit generation.

getSimulationPreview() returns a context summary (proposal type, deal value, customer, partner, discount, duration) along with available personas and quality options — call it client-side to render a confirmation modal before launching the simulation.


When to use it

Scenario Recommended mode
Brand-new CPPO deal, partner identified generate_proposal
Pricing renegotiation on an in-flight deal pricing_structure
Legal pass on agreement clauses partner_agreement
Deal desk go/no-go review deal_summary
Pre-flight check on a high-discount or strategic deal simulate() (quick / standard / deep)
Partner discovery and matching (before there's a deal) Co-Sell Partner Discovery & Matching (cosell_partner_matching)

It is not:

  • A CPPO submission tool. The AWS-side CPPO creation still happens in the AWS Marketplace seller console — see step 2 of the submission checklist.
  • A substitute for legal review. Generated clauses are starting drafts, not signed contracts.
  • A pricing source of truth for non-CPPO deals. For direct private offers (no channel partner), the math doesn't apply.

API access

The capability is exposed through the agent runtime as cppo_proposal_generator. Partner API keys scoped with manage_cosell_plans plus the agent capability slug can generate proposals programmatically through the agent execution endpoint. The simulation interface is available on the same key. See Partner API Capabilities and Authentication & API Keys.


See also


Capability slug: cppo_proposal_generator · Handler: CppoProposalGeneratorCapability · Pricing model: 3% AWS Marketplace fee (ISV Accelerate) · Simulator: CppoProposalSimulator · Personas: CapabilityPersonaRegistry::getCppoPersonas()