Co-Sell Platform Method Flowcharts¶
For Patent Application Support¶
Document Classification: Patent Sensitive - Method Documentation Version: 1.0 Date: December 2025
1. Partner Matching Method (Claims 1-3)¶
1.1 Main Partner Matching Flow¶
PARTNER MATCHING METHOD
=========================================================
START
|
v
+----------------------------------+
| STEP 1: Receive Match Request |
| Input: requesting_partner_id |
+----------------+-----------------+
|
v
+----------------------------------+
| STEP 2: Load Partner Profile |
| - ICP definition |
| - Product categories |
| - Target markets |
| - AWS partner tier |
+----------------+-----------------+
|
v
+----------------------------------+
| STEP 3: Query Candidate Pool |
| Filter: active partners NOT |
| already in relationship with |
| requesting partner |
+----------------+-----------------+
|
v
+----------------------------------+
| STEP 4: For Each Candidate |<---------+
+----------------+-----------------+ |
| |
v |
+----------------------------------+ |
| STEP 4a: Calculate ICP Overlap | |
| - Company size alignment | |
| - Industry Jaccard index | |
| - Geography Jaccard index | |
| - Technology Jaccard index | |
| - Apply weights, sum scores | |
+----------------+-----------------+ |
| |
v |
+---------+---------+ |
| ICP Score < 20? | |
+---------+---------+ |
YES | | NO |
| | |
+---------------+ +------------+ |
| | |
v v |
+----------------+ +-----------+---------+ |
| DISQUALIFY | | STEP 4b: Calculate | |
| Reason: | | Product | |
| "Insufficient | | Complementarity | |
| ICP overlap" | | - Check competition | |
+----------------+ | - AI analysis | |
| - Integration score | |
+-----------+---------+ |
| |
v |
+-----------+---------+ |
| Competition > 70%? | |
+-----------+---------+ |
YES | | NO |
| | |
+----------------+ +----+ |
| | |
v v |
+----------------+ +----------------+ |
| DISQUALIFY | | STEP 4c: | |
| Reason: | | Calculate | |
| "Direct | | Market | |
| competitors" | | Alignment | |
+----------------+ +--------+-------+ |
| |
v |
+--------+-------+ |
| STEP 4d: | |
| Calculate | |
| Overall Score | |
| (weighted sum) | |
+--------+-------+ |
| |
v |
+--------+-------+ |
| STEP 4e: | |
| Run Success | |
| Prediction | |
+--------+-------+ |
| |
v |
+--------+-------+ |
| More |-------+
| candidates? |
+--------+-------+
| NO
v
+--------+-------+
| STEP 5: Rank |
| Results by |
| Overall Score |
+--------+-------+
|
v
+--------+-------+
| STEP 6: Return |
| Ranked Matches |
+----------------+
|
v
END
1.2 ICP Overlap Calculation Sub-Method¶
ICP OVERLAP CALCULATION METHOD
=========================================================
START (partner_a.icp, partner_b.icp)
|
v
+----------------------------------------+
| STEP 1: Initialize |
| score = 0 |
| weights = {size:0.25, industry:0.30, |
| geo:0.25, tech:0.20} |
+-------------------+--------------------+
|
v
+-------------------+--------------------+
| STEP 2: Calculate Company Size Overlap |
| overlap = intersection_length / |
| union_length of size ranges |
| score += overlap * 0.25 * 100 |
+-------------------+--------------------+
|
v
+-------------------+--------------------+
| STEP 3: Calculate Industry Overlap |
| intersection = A.industries ∩ |
| B.industries |
| union = A.industries ∪ B.industries |
| jaccard = |intersection| / |union| |
| score += jaccard * 0.30 * 100 |
+-------------------+--------------------+
|
v
+-------------------+--------------------+
| STEP 4: Calculate Geography Overlap |
| intersection = A.geography ∩ |
| B.geography |
| union = A.geography ∪ B.geography |
| jaccard = |intersection| / |union| |
| score += jaccard * 0.25 * 100 |
+-------------------+--------------------+
|
v
+-------------------+--------------------+
| STEP 5: Calculate Technology Overlap |
| intersection = A.technologies ∩ |
| B.technologies |
| union = A.technologies ∪ |
| B.technologies |
| jaccard = |intersection| / |union| |
| score += jaccard * 0.20 * 100 |
+-------------------+--------------------+
|
v
+-------------------+--------------------+
| STEP 6: Return ROUND(score) |
+----------------------------------------+
|
v
END
2. Brand Voice Merging Method (Claims 4-6)¶
BRAND VOICE MERGING METHOD
=========================================================
START (brand_a, brand_b, campaign_context)
|
v
+------------------------------------------+
| STEP 1: Initialize Merged Structure |
| merged = {} |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 2: Tone Harmonization |
| |
| 2a. Map tones to spectrum values |
| formal=0.9, professional=0.7, |
| business-casual=0.5, |
| approachable=0.4, casual=0.2, |
| playful=0.1 |
| |
| 2b. Calculate average for each brand |
| avg_a = MEAN(spectrum[t] for t |
| in brand_a.tone) |
| avg_b = MEAN(spectrum[t] for t |
| in brand_b.tone) |
| |
| 2c. Calculate merged position |
| merged_pos = (avg_a + avg_b) / 2 |
| |
| 2d. Select closest tones to merged pos |
| (within 0.2 distance) |
| |
| 2e. Include shared tones |
| shared = brand_a.tone ∩ brand_b.tone |
| |
| 2f. Return top 3 harmonized tones |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 3: Audience Intersection |
| |
| merged.shared_pain_points = |
| brand_a.pain_points ∩ |
| brand_b.pain_points |
| |
| merged.combined_goals = |
| brand_a.goals ∪ brand_b.goals |
| |
| merged.demographics = merge_demographics |
| (brand_a.demographics, |
| brand_b.demographics) |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 4: Messaging Guidelines Merge |
| |
| merged.do = brand_a.do ∪ brand_b.do |
| merged.avoid = brand_a.avoid ∪ |
| brand_b.avoid |
| |
| conflicts = identify_conflicts( |
| merged.do, merged.avoid) |
+---------------------+--------------------+
|
v
+-----------+-----------+
| Any conflicts found? |
+-----------+-----------+
YES | | NO
| |
+-----------+ +------------+
| |
v |
+-----+--------------------------------+----+
| STEP 5: AI Conflict Resolution |
| |
| For each conflict: |
| resolution = LLM_INVOKE( |
| prompt: "Given brand A avoids |
| '{avoid}' but brand B recommends |
| '{do}', suggest a balanced |
| approach for co-branded content") |
| |
| Update merged guidelines with |
| resolutions |
+---------------------+--------------------+
|
v
+---------------------+--------------------+
| STEP 6: Joint Value Proposition |
| |
| prompt = construct_prompt( |
| brand_a.value_propositions, |
| brand_b.value_propositions, |
| brand_a.differentiators, |
| brand_b.differentiators, |
| campaign_context) |
| |
| merged.joint_value_props = LLM_INVOKE( |
| model: "claude-3-sonnet", |
| prompt: prompt) |
+---------------------+--------------------+
|
v
+---------------------+--------------------+
| STEP 7: Keyword Prioritization |
| |
| all_keywords = brand_a.keywords ∪ |
| brand_b.keywords |
| |
| merged.keywords = prioritize_by( |
| all_keywords, |
| campaign_context.objectives) |
+---------------------+--------------------+
|
v
+---------------------+--------------------+
| STEP 8: Co-Branding Guidelines |
| |
| merged.mention_order = |
| alphabetical OR initiator_first |
| |
| merged.voice_balance = |
| calculate_balance(brand_a, brand_b) |
| // Default: 50/50 |
| |
| merged.attribution_format = |
| "[Company A] and [Company B]" |
+---------------------+--------------------+
|
v
+---------------------+--------------------+
| STEP 9: Return merged brand voice |
+------------------------------------------+
|
v
END
3. Campaign Orchestration Method (Claims 7-9)¶
CAMPAIGN ORCHESTRATION METHOD
=========================================================
START (relationship, campaign_type, duration_weeks)
|
v
+------------------------------------------+
| STEP 1: Load Relationship Context |
| partner_a = relationship.partner_a |
| partner_b = relationship.partner_b |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 2: Merge Brand Voices |
| merged_voice = merge_brand_voices( |
| partner_a.brand_voice, |
| partner_b.brand_voice, |
| campaign_type) |
| [See Brand Voice Merging Method] |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 3: Load Campaign Template |
| template = get_template(campaign_type) |
| |
| Templates define: |
| - Asset types per week |
| - Publishing cadence |
| - Distribution channels |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 4: AI Campaign Planning |
| |
| campaign_plan = LLM_INVOKE( |
| model: "claude-3-sonnet", |
| prompt: campaign_prompt, |
| output: { |
| campaign_name: string, |
| objectives: array, |
| target_audience: object, |
| asset_list: array, |
| success_metrics: array |
| }) |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 5: Generate Content Calendar |
| |
| FOR week = 1 TO duration_weeks: |
| week_assets = select_assets( |
| campaign_plan.asset_list, week) |
| |
| FOR each asset in week_assets: |
| calendar.add({ |
| date: calculate_date(week, asset), |
| asset_type: asset.type, |
| owner: determine_owner(asset), |
| distribution: get_channels(asset), |
| status: "planned" |
| }) |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 6: Generate Content Assets |
| |
| FOR each entry in calendar: |
| content = generate_cobranded_content( |
| entry.asset_type, |
| merged_voice, |
| campaign_plan.objectives, |
| campaign_plan.target_audience) |
| |
| assets.add({ |
| calendar_entry: entry, |
| content: content, |
| approval_status: { |
| partner_a: "pending", |
| partner_b: "pending" |
| } |
| }) |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 7: Initiate Dual Approval |
| |
| notify(partner_a, "Review pending") |
| notify(partner_b, "Review pending") |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 8: Return Campaign Package |
| { |
| plan: campaign_plan, |
| calendar: calendar, |
| assets: assets |
| } |
+------------------------------------------+
|
v
END
4. Dual Approval Workflow Method (Claims 10-11)¶
DUAL APPROVAL WORKFLOW METHOD
=========================================================
START (asset)
|
v
+------------------------------------------+
| STEP 1: Present Asset for Review |
| Display to: Partner A, Partner B |
+---------------------+--------------------+
|
+---------------+---------------+
| |
v v
+-----+------+ +-----+------+
| PARTNER A | | PARTNER B |
| REVIEW | | REVIEW |
+-----+------+ +-----+------+
| |
v v
+-----+-------+ +-----+-------+
| Decision? | | Decision? |
+------+------+ +------+------+
| |
+------+------+------+ +------+------+------+
| | | | | |
v v v v v v
APPROVE CHANGES REJECT APPROVE CHANGES REJECT
| REQUESTED | | REQUESTED |
| | | | | |
+-------+-----------+---------+-------+-----------+
|
v
+---------+---------+
| Evaluate Combined |
| Status |
+---------+---------+
|
+-------------------+-------------------+
| | |
v v v
+---+---+ +-----+-----+ +-----+-----+
| BOTH | | ANY | | ANY |
|APPROVED| | CHANGES | | REJECTED |
+---+---+ | REQUESTED | +-----+-----+
| +-----+-----+ |
| | |
v v v
+---+------------+ +----+-------------+ +---+------------+
| STEP 2: Ready | | STEP 3: Revision | | STEP 4: Asset |
| for Publishing | | Loop | | Cancelled |
+---+------------+ +----+-------------+ +----------------+
| |
| v
| +-----+-----+
| | Apply |
| | Requested |
| | Changes |
| +-----+-----+
| |
| v
| +-----+-----+
| | Regenerate|
| | or Edit |
| | Content |
| +-----+-----+
| |
| v
| +-----+-----+
| | Re-submit |
| | for Review|<--------------+
| +-----+-----+ |
| | |
| +---------------------+
| (loop until approved or rejected)
|
v
+---+------------------+
| STEP 5: Schedule |
| Publishing |
| - Set publish time |
| - Configure channels |
| - Set up tracking |
+---+------------------+
|
v
+---+------------------+
| STEP 6: Execute |
| Synchronized |
| Publishing |
+----------------------+
|
v
END
5. Content Publishing Method (Claims 12-13)¶
CONTENT PUBLISHING METHOD
=========================================================
START (asset, partners)
|
v
+------------------------------------------+
| STEP 1: Verify Dual Approval |
| IF NOT (partner_a.approved AND |
| partner_b.approved): |
| RETURN {error: "Pending approvals"} |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 2: Determine Publishing Strategy |
| strategy = asset.distribution_strategy |
| OR "synchronized" (default) |
+---------------------+--------------------+
|
+---------------+---------------+
| | |
v v v
+-----+-----+ +-----+-----+ +-----+-----+
|SYNCHRONIZED| | STAGGERED | |ALTERNATING|
+-----+-----+ +-----+-----+ +-----+-----+
| | |
v v v
+-----+-----+ +-----+--------+ +-----+-------+
| Publish | | Partner A | | IF index |
| to both | | at T+0 | | % 2 == 0: |
| at same | | Partner B | | A first |
| time | | at T+2 hours | | ELSE: |
+-----+-----+ +-----+--------+ | B first |
| | | Gap: 4 hours|
| | +-----+-------+
+---------------+---------------+
|
v
+------------------------------------------+
| STEP 3: Generate Tracking Parameters |
| |
| utm_params = { |
| utm_source: partner_channel, |
| utm_medium: asset_type, |
| utm_campaign: campaign_id, |
| utm_content: asset_id |
| } |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 4: Inject Tracking |
| |
| For each URL in content: |
| url = append_params(url, utm_params) |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 5: Create Cross-References |
| |
| If asset mentions partner: |
| Ensure link to partner's version |
| of the content |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 6: Schedule Publishing Jobs |
| |
| For each channel in distribution: |
| job = create_publish_job( |
| channel: channel, |
| content: asset.content, |
| scheduled_time: publish_time, |
| tracking: utm_params) |
| schedule(job) |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 7: Return Confirmation |
| { |
| success: true, |
| scheduled_times: [...], |
| tracking_params: utm_params |
| } |
+------------------------------------------+
|
v
END
6. Success Prediction Method (Claims 14-15)¶
SUCCESS PREDICTION METHOD
=========================================================
START (partner_a, partner_b, match_scores)
|
v
+------------------------------------------+
| STEP 1: Extract Features |
| |
| features = { |
| // Match quality |
| icp_overlap: match_scores.icp, |
| product_complementarity: |
| match_scores.product_fit, |
| market_alignment: |
| match_scores.market_alignment, |
| |
| // Partner characteristics |
| partner_a_tier: encode(a.tier), |
| partner_b_tier: encode(b.tier), |
| size_difference: |a.size - b.size|, |
| |
| // Historical signals |
| a_prev_cosells: a.cosell_count OR 0, |
| b_prev_cosells: b.cosell_count OR 0, |
| |
| // Industry factors |
| industry_complement: is_complement( |
| a.industry, b.industry), |
| same_primary_market: has_shared( |
| a.markets, b.markets) |
| } |
+---------------------+--------------------+
|
v
+---------------------+--------------------+
| STEP 2: Check Model Availability |
+---------------------+--------------------+
|
+---------------+---------------+
| |
v v
+-----+------+ +-----+------+
| ML MODEL | | HEURISTIC |
| AVAILABLE | | FALLBACK |
+-----+------+ +-----+------+
| |
v v
+-----+------------------+ +-------+----------------+
| STEP 3a: Model | | STEP 3b: Heuristic |
| Inference | | Calculation |
| | | |
| prediction = | | base = 0.30 |
| ML_MODEL.predict( | | |
| features) | | IF icp_overlap > 70: |
| | | base += 0.15 |
| | | IF product_fit > 80: |
| | | base += 0.20 |
| | | IF market_align > 75: |
| | | base += 0.10 |
| | | IF industry_compl: |
| | | base += 0.10 |
| | | IF both_experienced: |
| | | base += 0.15 |
| | | |
| | | prediction = |
| | | MIN(base, 0.95) |
+-----+------------------+ +-------+----------------+
| |
+---------------+---------------+
|
v
+------------------------------------------+
| STEP 4: Calculate Confidence |
| |
| data_completeness = count_available( |
| features) / count_total(features) |
| |
| historical_depth = MIN( |
| a_prev_cosells + b_prev_cosells, 10) |
| / 10 |
| |
| confidence = 0.5 * data_completeness + |
| 0.5 * historical_depth |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 5: Rank Contributing Factors |
| |
| For each feature: |
| impact = calculate_impact( |
| feature, prediction) |
| |
| contributing_factors = |
| sort_by_impact(features)[:5] |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 6: Identify Risk Factors |
| |
| risks = [] |
| IF size_difference > 2: |
| risks.add("Large size disparity") |
| IF tier_mismatch: |
| risks.add("Partner tier mismatch") |
| IF low_icp_overlap: |
| risks.add("Limited ICP alignment") |
+---------------------+--------------------+
|
v
+------------------------------------------+
| STEP 7: Return Prediction |
| { |
| success_probability: prediction, |
| confidence: confidence, |
| contributing_factors: [...], |
| risk_factors: [...] |
| } |
+------------------------------------------+
|
v
END
Patent Claims Mapping¶
| Flowchart | Patent Claims | Novel Elements |
|---|---|---|
| Partner Matching Method | Claims 1-3 | Multi-dimensional scoring with disqualification rules |
| ICP Overlap Calculation | Claim 2 | Weighted Jaccard indices across 4 dimensions |
| Brand Voice Merging | Claims 4-6 | Tone spectrum harmonization, conflict resolution |
| Campaign Orchestration | Claims 7-9 | AI-powered planning with dual-brand templates |
| Dual Approval Workflow | Claims 10-11 | Synchronized approval with revision loop |
| Content Publishing | Claims 12-13 | Cross-partner coordination with tracking |
| Success Prediction | Claims 14-15 | Multi-factor ML/heuristic hybrid model |
Document Version: 1.0 For Patent Application Support Confidential - Method Documentation