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