Skip to content

Co-Sell Platform Algorithm Technical Specification

For Patent Application Support

Document Classification: Patent Sensitive - Technical Specification Version: 1.0 Date: December 2025


1. Partner Matching Algorithm

1.1 Overview

The Co-Sell Partner Matching system uses a multi-factor AI-powered algorithm to identify optimal business partnerships between Independent Software Vendors (ISVs) operating in cloud marketplaces.

1.2 Input Parameters

Partner A Profile:
- company_id: unique identifier
- industry: string (e.g., "security", "devops", "analytics")
- company_size: enum (smb, mid_market, enterprise)
- target_markets: array<string> (regions/verticals)
- product_categories: array<string>
- icp_definition: {
    company_size_range: [min, max],
    industries: array<string>,
    technologies: array<string>,
    geographic_regions: array<string>,
    budget_range: [min, max]
  }
- product_description: string
- value_propositions: array<string>
- aws_partner_tier: enum (select, advanced, premier)

1.3 Matching Score Calculation

1.3.1 ICP Overlap Score (0-100)

FUNCTION calculate_icp_overlap(partner_a, partner_b):
    score = 0
    weights = {
        company_size: 0.25,
        industry: 0.30,
        geography: 0.25,
        technology: 0.20
    }

    // Company Size Alignment
    size_overlap = calculate_range_overlap(
        partner_a.icp.company_size_range,
        partner_b.icp.company_size_range
    )
    score += size_overlap * weights.company_size * 100

    // Industry Overlap
    industry_intersection = INTERSECT(
        partner_a.icp.industries,
        partner_b.icp.industries
    )
    industry_union = UNION(
        partner_a.icp.industries,
        partner_b.icp.industries
    )
    industry_jaccard = |industry_intersection| / |industry_union|
    score += industry_jaccard * weights.industry * 100

    // Geographic Overlap
    geo_intersection = INTERSECT(
        partner_a.icp.geographic_regions,
        partner_b.icp.geographic_regions
    )
    geo_union = UNION(
        partner_a.icp.geographic_regions,
        partner_b.icp.geographic_regions
    )
    geo_jaccard = |geo_intersection| / |geo_union|
    score += geo_jaccard * weights.geography * 100

    // Technology Stack Overlap
    tech_intersection = INTERSECT(
        partner_a.icp.technologies,
        partner_b.icp.technologies
    )
    tech_union = UNION(
        partner_a.icp.technologies,
        partner_b.icp.technologies
    )
    tech_jaccard = |tech_intersection| / |tech_union|
    score += tech_jaccard * weights.technology * 100

    RETURN ROUND(score)

1.3.2 Product Complementarity Score (0-100)

FUNCTION calculate_product_complementarity(partner_a, partner_b):
    // Step 1: Check for direct competition (disqualifying)
    competitive_overlap = calculate_category_overlap(
        partner_a.product_categories,
        partner_b.product_categories
    )

    IF competitive_overlap > 0.7:
        RETURN 0  // Too competitive

    // Step 2: AI Analysis using LLM
    prompt = construct_complementarity_prompt(
        partner_a.product_description,
        partner_a.value_propositions,
        partner_b.product_description,
        partner_b.value_propositions
    )

    ai_analysis = LLM_INVOKE(
        model: "claude-3-sonnet",
        prompt: prompt,
        structured_output: {
            complementarity_score: integer(0-100),
            integration_potential: integer(0-100),
            customer_use_case_fit: integer(0-100),
            reasoning: string
        }
    )

    // Step 3: Calculate weighted score
    score = (
        ai_analysis.complementarity_score * 0.40 +
        ai_analysis.integration_potential * 0.30 +
        ai_analysis.customer_use_case_fit * 0.30
    )

    // Step 4: Penalty for competitive overlap
    score = score * (1 - competitive_overlap)

    RETURN ROUND(score)

1.3.3 Market Alignment Score (0-100)

FUNCTION calculate_market_alignment(partner_a, partner_b):
    score = 0

    // Shared Target Markets
    market_intersection = INTERSECT(
        partner_a.target_markets,
        partner_b.target_markets
    )
    market_score = MIN(|market_intersection| / 3, 1.0) * 40
    score += market_score

    // AWS Partner Tier Alignment
    tier_scores = {
        "premier-premier": 30,
        "premier-advanced": 25,
        "advanced-advanced": 25,
        "premier-select": 15,
        "advanced-select": 15,
        "select-select": 10
    }
    tier_key = SORT([partner_a.aws_partner_tier, partner_b.aws_partner_tier]).JOIN("-")
    score += tier_scores[tier_key] OR 10

    // Company Size Compatibility
    IF partner_a.company_size == partner_b.company_size:
        score += 20
    ELSE IF ABS(SIZE_INDEX[partner_a.company_size] - SIZE_INDEX[partner_b.company_size]) == 1:
        score += 10

    // Industry Ecosystem Fit
    IF is_complementary_industry(partner_a.industry, partner_b.industry):
        score += 10

    RETURN MIN(score, 100)

1.3.4 Overall Match Score

FUNCTION calculate_overall_match(partner_a, partner_b):
    icp_score = calculate_icp_overlap(partner_a, partner_b)
    product_score = calculate_product_complementarity(partner_a, partner_b)
    market_score = calculate_market_alignment(partner_a, partner_b)

    // Disqualifying conditions
    IF product_score == 0:
        RETURN {
            overall_score: 0,
            status: "disqualified",
            reason: "Direct competitors"
        }

    IF icp_score < 20:
        RETURN {
            overall_score: 0,
            status: "disqualified",
            reason: "Insufficient ICP overlap"
        }

    // Weighted combination
    weights = {
        icp: 0.35,
        product: 0.40,
        market: 0.25
    }

    overall = (
        icp_score * weights.icp +
        product_score * weights.product +
        market_score * weights.market
    )

    RETURN {
        overall_score: ROUND(overall),
        breakdown: {
            icp_overlap: icp_score,
            product_fit: product_score,
            market_alignment: market_score
        },
        status: "qualified"
    }

2. Brand Voice Merging Algorithm

2.1 Overview

The Brand Voice Merging system combines brand identity context from two partner companies to generate co-branded content that authentically represents both organizations.

2.2 Input Parameters

BrandVoice:
- company_name: string
- tone: array<string> (e.g., ["professional", "innovative", "approachable"])
- target_audience: {
    demographics: object,
    firmographics: object,
    pain_points: array<string>,
    goals: array<string>
  }
- messaging_guidelines: {
    do: array<string>,
    avoid: array<string>
  }
- value_propositions: array<string>
- differentiators: array<string>
- keywords: array<string>
- industry_context: string

2.3 Merging Process

FUNCTION merge_brand_voices(brand_a, brand_b, campaign_context):
    merged = {}

    // Step 1: Tone Harmonization
    merged.tone = harmonize_tones(brand_a.tone, brand_b.tone)

    // Step 2: Audience Intersection
    merged.target_audience = {
        shared_pain_points: INTERSECT(
            brand_a.target_audience.pain_points,
            brand_b.target_audience.pain_points
        ),
        combined_goals: UNION(
            brand_a.target_audience.goals,
            brand_b.target_audience.goals
        ),
        merged_demographics: merge_demographics(
            brand_a.target_audience.demographics,
            brand_b.target_audience.demographics
        )
    }

    // Step 3: Messaging Guidelines Merge
    merged.messaging = {
        combined_do: UNION(brand_a.messaging_guidelines.do, brand_b.messaging_guidelines.do),
        combined_avoid: UNION(brand_a.messaging_guidelines.avoid, brand_b.messaging_guidelines.avoid),
        conflict_resolution: identify_conflicts(brand_a, brand_b)
    }

    // Step 4: Joint Value Proposition Generation
    merged.joint_value_propositions = AI_GENERATE(
        prompt: construct_joint_value_prop_prompt(
            brand_a.value_propositions,
            brand_b.value_propositions,
            brand_a.differentiators,
            brand_b.differentiators,
            campaign_context
        ),
        model: "claude-3-sonnet"
    )

    // Step 5: Keyword Combination
    merged.keywords = prioritize_keywords(
        UNION(brand_a.keywords, brand_b.keywords),
        campaign_context
    )

    // Step 6: Generate Co-Branding Guidelines
    merged.cobranding_guidelines = {
        company_mention_order: determine_mention_order(brand_a, brand_b),
        logo_placement: "equal",
        voice_balance: calculate_voice_balance(brand_a, brand_b),
        attribution_format: generate_attribution_format(brand_a, brand_b)
    }

    RETURN merged

FUNCTION harmonize_tones(tone_a, tone_b):
    // Map tones to spectrum values
    spectrum = {
        "formal": 0.9,
        "professional": 0.7,
        "business-casual": 0.5,
        "approachable": 0.4,
        "casual": 0.2,
        "playful": 0.1
    }

    // Calculate average tone position
    avg_a = AVERAGE([spectrum[t] FOR t IN tone_a])
    avg_b = AVERAGE([spectrum[t] FOR t IN tone_b])
    merged_position = (avg_a + avg_b) / 2

    // Find closest matching tones
    harmonized = []
    FOR tone, value IN spectrum:
        IF ABS(value - merged_position) < 0.2:
            harmonized.APPEND(tone)

    // Add shared tones
    shared = INTERSECT(tone_a, tone_b)
    harmonized = UNION(harmonized, shared)

    RETURN harmonized[:3]  // Return top 3

3. Joint GTM Campaign Orchestration

3.1 Campaign Generation Algorithm

FUNCTION generate_joint_campaign(relationship, campaign_type, duration_weeks):
    // Step 1: Gather context
    partner_a = relationship.partner_a
    partner_b = relationship.partner_b
    merged_voice = merge_brand_voices(
        partner_a.brand_voice,
        partner_b.brand_voice,
        campaign_type
    )

    // Step 2: Determine campaign structure
    campaign_template = get_campaign_template(campaign_type)

    // Step 3: AI-powered campaign planning
    campaign_plan = LLM_INVOKE(
        model: "claude-3-sonnet",
        prompt: construct_campaign_prompt(
            partner_a,
            partner_b,
            merged_voice,
            campaign_template,
            duration_weeks
        ),
        structured_output: {
            campaign_name: string,
            objectives: array<string>,
            target_audience: object,
            content_calendar: array<CalendarEntry>,
            asset_list: array<AssetDefinition>,
            success_metrics: array<Metric>
        }
    )

    // Step 4: Generate content calendar
    calendar = []
    current_date = TODAY()

    FOR week IN RANGE(1, duration_weeks + 1):
        week_assets = select_assets_for_week(
            campaign_plan.asset_list,
            week,
            campaign_type
        )

        FOR asset IN week_assets:
            calendar.APPEND({
                date: calculate_publish_date(current_date, week, asset.day_of_week),
                asset_type: asset.type,
                owner: determine_owner(asset, partner_a, partner_b),
                distribution: determine_distribution_channels(asset, partner_a, partner_b),
                status: "planned"
            })

    // Step 5: Generate actual content assets
    generated_assets = []
    FOR entry IN calendar:
        content = generate_cobranded_content(
            entry.asset_type,
            merged_voice,
            campaign_plan.objectives,
            campaign_plan.target_audience
        )

        generated_assets.APPEND({
            calendar_entry: entry,
            content: content,
            approval_status: {
                partner_a: "pending",
                partner_b: "pending"
            }
        })

    RETURN {
        plan: campaign_plan,
        calendar: calendar,
        assets: generated_assets
    }

3.2 Content Distribution Algorithm

FUNCTION coordinate_publishing(asset, partners):
    // Step 1: Verify approvals
    IF NOT (asset.approval_status.partner_a == "approved" AND
            asset.approval_status.partner_b == "approved"):
        RETURN {success: false, reason: "Pending approvals"}

    // Step 2: Determine publishing strategy
    strategy = asset.distribution_strategy OR "synchronized"

    IF strategy == "synchronized":
        // Publish to both channels at same time
        publish_time = asset.scheduled_time

        FOR channel IN asset.distribution_channels:
            schedule_publish(channel, asset.content, publish_time)

    ELSE IF strategy == "staggered":
        // Partner A first, then Partner B
        publish_time_a = asset.scheduled_time
        publish_time_b = asset.scheduled_time + HOURS(2)

        schedule_publish(partners.a.channel, asset.content, publish_time_a)
        schedule_publish(partners.b.channel, asset.content, publish_time_b)

    ELSE IF strategy == "alternating":
        // Alternates which partner publishes first based on asset index
        IF asset.index % 2 == 0:
            first = partners.a
            second = partners.b
        ELSE:
            first = partners.b
            second = partners.a

        schedule_publish(first.channel, asset.content, asset.scheduled_time)
        schedule_publish(second.channel, asset.content, asset.scheduled_time + HOURS(4))

    // Step 3: Set up cross-promotion
    create_cross_reference(asset, partners)

    // Step 4: Enable tracking
    tracking_params = generate_utm_parameters(asset, partners)
    asset.content = inject_tracking(asset.content, tracking_params)

    RETURN {success: true, scheduled_times: get_scheduled_times(asset)}

4. Success Probability Prediction

4.1 Partnership Success Model

FUNCTION predict_partnership_success(partner_a, partner_b, match_scores):
    // Feature extraction
    features = {
        // Match quality features
        icp_overlap: match_scores.icp_overlap,
        product_complementarity: match_scores.product_fit,
        market_alignment: match_scores.market_alignment,

        // Partner characteristics
        partner_a_tier: encode_tier(partner_a.aws_partner_tier),
        partner_b_tier: encode_tier(partner_b.aws_partner_tier),
        size_difference: ABS(SIZE_INDEX[partner_a.company_size] - SIZE_INDEX[partner_b.company_size]),

        // Historical signals (if available)
        partner_a_previous_cosells: partner_a.successful_cosell_count OR 0,
        partner_b_previous_cosells: partner_b.successful_cosell_count OR 0,

        // Industry factors
        industry_complementarity: is_complementary_industry(partner_a.industry, partner_b.industry),
        same_primary_market: has_shared_primary_market(partner_a, partner_b)
    }

    // Model inference (using trained model or heuristic)
    IF model_available():
        prediction = ML_MODEL_PREDICT(features)
    ELSE:
        // Heuristic fallback
        base_probability = 0.3

        // Adjustments based on features
        IF features.icp_overlap > 70:
            base_probability += 0.15
        IF features.product_complementarity > 80:
            base_probability += 0.20
        IF features.market_alignment > 75:
            base_probability += 0.10
        IF features.industry_complementarity:
            base_probability += 0.10
        IF features.partner_a_previous_cosells > 3 AND features.partner_b_previous_cosells > 3:
            base_probability += 0.15

        prediction = MIN(base_probability, 0.95)

    // Calculate confidence based on data availability
    confidence = calculate_confidence(features)

    RETURN {
        success_probability: prediction,
        confidence: confidence,
        contributing_factors: rank_factors(features, prediction),
        risk_factors: identify_risks(features)
    }

5. Data Structures

5.1 Core Models

CoSellRelationship:
    id: UUID
    partner_a_id: FK -> Partners
    partner_b_id: FK -> Partners
    status: enum (invited, active, paused, ended)
    match_scores: JSON {
        overall_score: integer,
        icp_overlap: integer,
        product_fit: integer,
        market_alignment: integer
    }
    success_prediction: JSON {
        probability: float,
        confidence: float,
        factors: array
    }
    initiated_by: FK -> Partners
    created_at: timestamp
    accepted_at: timestamp

CoSellPlan:
    id: UUID
    relationship_id: FK -> CoSellRelationship
    name: string
    type: enum (product_launch, webinar, content_series, event, general)
    status: enum (draft, planned, active, completed)
    merged_brand_voice: JSON
    content_calendar: JSON
    objectives: JSON
    metrics: JSON
    start_date: date
    end_date: date

SharedAsset:
    id: UUID
    plan_id: FK -> CoSellPlan
    asset_type: enum (blog_post, linkedin_post, email, press_release, sales_deck, case_study)
    title: string
    content: JSON
    partner_a_approval: enum (pending, approved, changes_requested, rejected)
    partner_b_approval: enum (pending, approved, changes_requested, rejected)
    scheduled_publish_date: timestamp
    published_at: timestamp
    distribution_channels: JSON
    tracking_parameters: JSON

6. Claims Support Matrix

Algorithm Component Novel Aspect Prior Art Differentiation
ICP Overlap Scoring Multi-dimensional Jaccard with weighted combination Crossbeam does binary overlap; this is scored/weighted
Product Complementarity AI-powered analysis with competition detection No prior art combines AI analysis + competition filter
Brand Voice Merging Algorithmic tone harmonization + joint value prop generation No prior art for multi-brand voice merging
Campaign Orchestration End-to-end automated GTM with dual approval No prior art for AI-generated co-branded campaigns
Success Prediction Partnership success ML model No prior art for partnership success prediction
Cross-Partner Publishing Synchronized/staggered strategies with tracking Basic workflows exist; coordination logic is novel

Document Version: 1.0 For Patent Application Support Confidential - Technical Specification