Inferensys

Prompt

Partner and Reseller Account Routing Prompt

A practical prompt playbook for routing partner-submitted requests differently from direct customers in production AI workflows.
Developer doing prompt engineering on laptop, prompt variations visible on screen, casual coding session.
PROMPT PLAYBOOK

When to Use This Prompt

Determine if this prompt fits your channel routing architecture and understand the required inputs, assumptions, and boundaries before implementation.

This prompt is for channel platform engineers who need to classify incoming requests from partners, resellers, and distributors before routing them to the correct queue, team, or workflow. It distinguishes partner-submitted requests from end-customer requests, identifies the partner type and tier, and determines the support entitlement that should apply. Use this when your AI system sits at the ingress point of a multi-tier channel model and must make routing decisions that respect partner program rules, contractual obligations, and commercial agreements.

The prompt assumes you have access to account metadata, partner program data, and request context at classification time. You will need to provide the partner's program tier (e.g., Gold, Silver, Registered), partner type (e.g., reseller, distributor, MSP, referral partner), the original request content, and any end-customer account identifiers if the partner is submitting on behalf of a customer. The prompt works best when these fields are resolved before invocation through your account service or CRM integration, not embedded inline in the request text. If your system cannot reliably distinguish a partner-submitted ticket from a direct customer ticket at the metadata level, add a pre-classification step before this prompt.

Do not use this prompt for direct-to-customer routing where no channel partner relationship exists. It is not designed for internal team routing, employee support, or consumer-facing triage. If your channel model includes nested partner hierarchies (e.g., distributor-to-reseller-to-customer chains), pair this prompt with the Parent-Child Account Hierarchy Routing Prompt to resolve inherited entitlements correctly. For high-stakes routing decisions where misclassification could breach a partner agreement or SLA, implement a human review step for low-confidence classifications and log the full classification payload for audit.

PRACTICAL GUARDRAILS

Use Case Fit

Where the Partner and Reseller Account Routing Prompt works, where it breaks, and what you must provide before deploying it into a channel platform.

01

Good Fit: Multi-Tier Channel Platforms

Use when: your platform receives requests from both direct customers and partners/resellers, and routing must respect partner type, tier, and support entitlements. Guardrail: validate that the prompt receives explicit partner identifiers and tier metadata; never infer partner status from request content alone.

02

Bad Fit: Direct-to-Consumer Only

Avoid when: your system has no reseller, distributor, or channel partner relationships. Adding partner routing logic to a direct-only platform creates unnecessary classification branches and false-positive partner detections. Guardrail: use a direct-customer routing prompt instead.

03

Required Input: Partner Metadata

What to watch: the prompt cannot route correctly without partner ID, partner type, tier level, and support entitlement fields. Missing metadata produces default routing that may violate partner SLAs. Guardrail: enforce required-field validation before prompt invocation; reject or quarantine requests with incomplete partner context.

04

Required Input: End-Customer Distinction

What to watch: in multi-tier models, a request may come from a partner's customer rather than the partner directly. Confusing the two breaks routing and entitlement logic. Guardrail: require an explicit requestor_role field (partner_agent vs. partner_customer) and route each role to separate paths.

05

Operational Risk: Partner Tier Drift

What to watch: partner tiers change over time due to renegotiation, performance reviews, or program updates. Stale tier data causes incorrect routing and SLA violations. Guardrail: validate tier freshness at prompt time; if tier data is older than the configured TTL, route to a review queue rather than making an automated decision.

06

Operational Risk: Bespoke Partner Agreements

What to watch: some partners have custom contracts that override standard tier-based routing. A generic tier prompt will miss these exceptions. Guardrail: check for a custom_entitlement_override flag before applying standard tier logic; if present, defer to the bespoke entitlement extraction path with human review for ambiguous cases.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

A production-ready prompt for classifying partner-submitted requests and routing them to the correct support queue, workflow, or escalation path based on partner type, tier, and entitlement.

This prompt template is designed for channel platform engineers who need to route partner-submitted requests differently from direct customer requests. It classifies the partner type (e.g., distributor, reseller, MSP, referral partner), determines the partner's tier and support entitlement, and identifies whether the request originates from the partner themselves or from an end customer on whose behalf the partner is acting. This distinction is critical in multi-tier channel models where routing a partner's own technical issue to an end-customer queue creates a broken experience, and routing an end-customer issue through a partner escalation path without proper context delays resolution.

text
You are a channel routing classifier for a SaaS platform. Your job is to analyze an incoming support request and determine the correct routing path based on partner and account attributes.

INPUT:
- Request Content: [REQUEST_CONTENT]
- Submitting Account ID: [ACCOUNT_ID]
- Account Type: [ACCOUNT_TYPE]
- Partner Program Tier: [PARTNER_TIER]
- Contracted Support Entitlement: [SUPPORT_ENTITLEMENT]
- Request Origin Channel: [ORIGIN_CHANNEL]
- End Customer Indicator: [END_CUSTOMER_FLAG]
- Partner Specialization Tags: [SPECIALIZATION_TAGS]

CLASSIFICATION TASK:
1. Determine whether the request is submitted by a partner for themselves (Partner-Direct) or on behalf of an end customer (Partner-Delegated).
2. Classify the partner type from: Distributor, Reseller, MSP, Referral, SI, ISV, or Unknown.
3. Extract the effective support tier from the partner's program tier and contracted entitlement. If the partner has a custom or bespoke entitlement, flag it.
4. Identify the request category from: Technical Support, Billing, Licensing, Pre-Sales, RMA, Training, or Other.
5. Assign a priority level: Critical, High, Normal, or Low based on the partner tier and request content.
6. Determine the routing target: Partner Support Queue, End Customer Queue, Escalation Engineering, Partner Success Manager, Sales Engineer, or Manual Review.

OUTPUT_SCHEMA:
{
  "classification": {
    "request_origin": "Partner-Direct | Partner-Delegated | Unclear",
    "partner_type": "Distributor | Reseller | MSP | Referral | SI | ISV | Unknown",
    "effective_tier": "Tier-1 | Tier-2 | Tier-3 | Custom",
    "custom_entitlement_flag": true | false,
    "request_category": "Technical Support | Billing | Licensing | Pre-Sales | RMA | Training | Other",
    "priority": "Critical | High | Normal | Low",
    "routing_target": "Partner Support Queue | End Customer Queue | Escalation Engineering | Partner Success Manager | Sales Engineer | Manual Review",
    "confidence": 0.0-1.0
  },
  "routing_instructions": {
    "queue_name": "string",
    "escalation_path": "string or null",
    "sla_timer_start": "immediate | business-hours | next-business-day",
    "special_handling_notes": ["string"]
  },
  "ambiguity_flags": {
    "partner_vs_end_customer_unclear": true | false,
    "tier_conflict": true | false,
    "missing_entitlement_data": true | false,
    "requires_human_review": true | false
  }
}

CONSTRAINTS:
- If the request origin is unclear between Partner-Direct and Partner-Delegated, set ambiguity_flags.partner_vs_end_customer_unclear to true and route to Manual Review.
- If the partner has a custom entitlement that doesn't map cleanly to Tier-1/2/3, set effective_tier to "Custom", custom_entitlement_flag to true, and include the custom terms in special_handling_notes.
- Never route a Partner-Delegated request to the Partner Support Queue unless the partner is explicitly requesting help with the delegation process itself.
- If the partner tier is missing or unrecognized, default to the lowest supported tier and flag for review.
- For Critical priority requests from Tier-2 or higher partners, include an escalation path to Escalation Engineering.
- Return only valid JSON. No additional commentary.

To adapt this prompt, replace each square-bracket placeholder with data from your account and ticketing systems. The [REQUEST_CONTENT] field should contain the raw ticket body or initial message. [PARTNER_TIER] and [SUPPORT_ENTITLEMENT] should come from your partner relationship management system or contract database. The [END_CUSTOMER_FLAG] is a boolean that your application layer should set based on whether the submitting account has an associated end-customer record. If your system doesn't track this explicitly, remove the field and rely on the model to infer it from the request content, but expect higher ambiguity rates. Before deploying, run this prompt against a golden dataset of at least 50 labeled partner requests covering all partner types, tiers, and both origin modes. Measure precision and recall on the request_origin and routing_target fields specifically, as these are the most common failure points in channel routing systems.

IMPLEMENTATION TABLE

Prompt Variables

Each placeholder the Partner and Reseller Account Routing Prompt expects, its purpose, a concrete example, and actionable validation notes for implementation.

PlaceholderPurposeExampleValidation Notes

[REQUEST_CONTEXT]

The full text of the incoming support request, ticket, or email body submitted by the partner or end-customer.

My client Acme Corp cannot access the reporting module since the upgrade. Their account ID is ACME-12345.

Schema check: non-empty string. If null or whitespace-only, abort routing and return an input-error signal.

[SUBMITTER_ACCOUNT_TYPE]

The account type of the entity submitting the request, pulled from the CRM or identity system.

partner_reseller

Enum check: must be one of partner_reseller, partner_distributor, partner_si, direct_customer, or internal. If unknown, route to manual review queue.

[PARTNER_TIER]

The commercial tier of the partner account, which determines support entitlement and routing priority.

platinum

Enum check: must match a configured tier list (e.g., platinum, gold, silver, registered). If missing or unrecognized, fall back to registered tier with a warning flag.

[END_CUSTOMER_ACCOUNT_ID]

The account identifier of the end-customer on whose behalf the partner is submitting the request, if applicable.

ACME-12345

Format check: must match the system's account ID pattern. If the submitter is a direct customer, this field should be null. If a partner submits without an end-customer ID, flag for clarification.

[SUPPORT_ENTITLEMENT_LEVEL]

The pre-calculated support entitlement for this partner-customer pair, derived from the partner agreement and customer contract.

premium_dedicated

Enum check: must be one of basic, standard, premium_dedicated, or tam_assigned. If the entitlement cannot be resolved, set to standard and log a resolution gap for the operations team.

[CONTRACT_SLA_METADATA]

A JSON object containing the relevant SLA terms, response-time targets, and any bespoke conditions for this partner or customer.

{"response_target_hours": 2, "channel": "partner_portal", "bypass_tier": false}

Schema check: must parse as valid JSON with required keys response_target_hours and channel. If parsing fails, fall back to the partner tier's default SLA and log the parse error.

[HISTORICAL_ROUTING_PREFERENCE]

A boolean or null field indicating whether this partner has a history of misrouting end-customer requests as their own.

Type check: boolean or null. If true, add a secondary classification step to re-verify the submitter vs. end-customer distinction. If null, proceed without historical adjustment.

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the partner routing prompt into a production application with validation, retries, logging, and human review.

The partner and reseller account routing prompt is designed to sit inside a classification middleware layer—typically a serverless function, an API gateway plugin, or a message queue consumer—that inspects incoming requests before they reach downstream support queues, ticketing systems, or agent dispatch logic. The prompt expects structured input containing the requesting account's metadata, any declared partner relationship, and the raw request content. The application layer is responsible for assembling this context from your CRM, partner portal, or identity provider before calling the model. Do not pass raw, unenriched user input directly to the prompt; the model needs the account's partner type, tier, and entitlement fields to make a reliable routing decision.

Validation and output enforcement should happen in the application layer, not inside the prompt. After the model returns its classification, validate that the output contains the required fields: partner_type (must match your internal taxonomy), routing_path (must map to an actual queue or workflow ID in your system), confidence_score (a float between 0.0 and 1.0), and escalation_required (boolean). If any field is missing, out of range, or contains an unrecognized enum value, reject the output and retry with a stricter schema instruction appended to the prompt. Implement a retry budget of 2 attempts before falling back to a default routing rule—typically routing to a manual review queue with a flag indicating classification failure. Log every classification attempt, including the raw model output, validation errors, and fallback decisions, so you can debug taxonomy drift or model behavior changes over time.

Human review gates are essential for this workflow because misrouting a partner-submitted request as a standard customer ticket can violate SLAs, damage channel relationships, or expose internal pricing to resellers. Any classification where confidence_score falls below your threshold (start with 0.85 and tune based on production data) should route to a human triage queue with the model's best guess and the original input attached. Similarly, any request where the model detects a partner vs. end-customer ambiguity—for example, a reseller employee submitting a ticket about their own account rather than a customer's—must be flagged for human review. The prompt includes an ambiguity_flag field for this purpose; your harness should treat any true value as a mandatory escalation regardless of confidence score. For regulated industries, consider requiring human approval on all partner routing decisions during an initial shadow-mode deployment before enabling automated dispatch.

Model choice and latency considerations matter here because routing prompts sit on the critical path of request intake. Use a fast, cost-efficient model for this classification task—GPT-4o-mini, Claude Haiku, or an equivalent small model is usually sufficient for structured classification with a well-defined taxonomy. Reserve larger models for the downstream workflows that actually handle the routed request. If your partner taxonomy is stable and your account metadata is clean, consider caching classification results per account for a configurable TTL (e.g., 24 hours) to avoid redundant model calls for repeat requests from the same partner. Invalidate the cache immediately when account tier, partner status, or contract entitlements change. For high-throughput systems, implement a circuit breaker that falls back to static routing rules if the model endpoint returns errors or exceeds latency targets for more than a configurable percentage of requests in a rolling window.

Observability and debugging require structured logging at every decision point. Log the input context hash (not raw PII), the model's raw classification, validation results, retry count, final routing decision, and whether human review was triggered. Emit metrics for classification confidence distribution, retry rate, fallback rate, and human escalation rate so you can detect drift—if confidence scores trend downward or escalation rates spike, your partner taxonomy may need updating or the model may be encountering new partner types it wasn't calibrated for. Wire these metrics into your existing monitoring dashboards alongside queue depth and SLA adherence metrics so you can correlate routing quality with downstream operational outcomes. When debugging misroutes, always compare the model's classification against the ground-truth partner data in your CRM to identify whether the error came from stale context, ambiguous input, or model confusion between similar partner tiers.

IMPLEMENTATION TABLE

Expected Output Contract

The fields, types, and validation rules your application should enforce on the model response for the Partner and Reseller Account Routing Prompt.

Field or ElementType or FormatRequiredValidation Rule

routing_path

string (enum)

Must match one of: 'partner_support_queue', 'reseller_support_queue', 'direct_customer_queue', 'escalate_to_channel_manager', 'unknown'. No other values allowed.

partner_type

string (enum)

Must match one of: 'distributor', 'reseller', 'msp', 'isv', 'system_integrator', 'affiliate', 'unknown'. Null allowed only if routing_path is 'direct_customer_queue'.

partner_tier

string (enum)

Must match one of: 'platinum', 'gold', 'silver', 'registered', 'unclassified'. Null allowed only if partner_type is 'unknown'.

end_customer_identified

boolean

Must be true or false. If true, the request is on behalf of an end customer. If false, the partner is requesting support for their own account.

end_customer_id

string or null

If end_customer_identified is true, must be a non-empty string matching the end customer's account identifier. If false, must be null.

support_entitlement

string (enum)

Must match one of: 'full_support', 'limited_support', 'self_service_only', 'escalation_only', 'none'. Must align with partner_tier: 'platinum' and 'gold' tiers cannot return 'none' or 'self_service_only'.

confidence_score

number (0.0-1.0)

Must be a float between 0.0 and 1.0 inclusive. Scores below 0.7 should trigger a human review flag in the application layer.

routing_justification

string

Must be a non-empty string summarizing the evidence used to determine partner_type, partner_tier, and routing_path. Must reference specific input fields used in the decision.

PRACTICAL GUARDRAILS

Common Failure Modes

Partner and reseller routing breaks in predictable ways. These failure modes surface most often in production when channel hierarchies are deep, data is stale, or the model confuses partner and end-customer identities.

01

Partner vs. End-Customer Confusion

What to watch: The model routes a partner-submitted request as if it came from the end customer, or vice versa. This happens when the prompt relies on ambiguous signals like email domain or ticket language without explicit partner-flag fields. Guardrail: Require a dedicated submitter_role field in the input schema. If missing, return an UNKNOWN classification and route to a manual review queue rather than guessing.

02

Stale Partner Tier Data

What to watch: A partner's tier changed in the CRM but the routing prompt uses cached or outdated account metadata, sending Platinum partners through Bronze-level support paths. Guardrail: Include a data_freshness_threshold in the prompt instructions. If the last_sync_timestamp exceeds the threshold, flag the record for refresh and apply a conservative higher-tier routing default until confirmed.

03

Multi-Tier Channel Inheritance Gaps

What to watch: A sub-partner submits a request, but the prompt only checks the immediate partner record and misses entitlements inherited from a parent distributor or master reseller. Guardrail: Require the prompt to traverse the full partner hierarchy chain and resolve the effective entitlement by applying a max() or union rule across all ancestor tiers. Include an inheritance trace in the output for auditability.

04

Partner-Specific SLA Override Misses

What to watch: The prompt applies the standard partner-tier SLA but misses a custom SLA override negotiated for a specific partner agreement, causing a breach on a high-value channel account. Guardrail: Add a custom_sla_override field to the input context. Instruct the model to check this field first and only fall back to tier-default SLA when no override exists. Log every override application for contract compliance review.

05

Deal-Registration Context Stripping

What to watch: A partner submits a request tied to a registered deal that grants elevated support, but the routing prompt strips or ignores the deal-registration ID, routing the request to standard queues. Guardrail: Include deal_registration_id and deal_registration_status as explicit input fields. If status is ACTIVE, route to the deal-support queue regardless of partner tier. Validate deal expiry before applying the elevated path.

06

Partner Geography Mismatch

What to watch: The prompt routes a partner request to a regional support queue based on the partner's headquarters location, but the end customer is in a different region with its own SLA and language requirements. Guardrail: Include both partner_region and end_customer_region fields. Use end_customer_region for queue assignment and language routing, and use partner_region only for partner-manager notification. Add a conflict flag when regions differ significantly.

IMPLEMENTATION TABLE

Evaluation Rubric

Run these checks against a golden dataset of at least 50 labeled examples covering partner types, tiers, and end-customer confusion cases.

CriterionPass StandardFailure SignalTest Method

Partner vs. End-Customer Classification

Correctly labels true partner-submitted requests as partner_type and direct end-customer requests as direct_customer with ≥95% accuracy

End-customer request misclassified as partner (false positive) or partner request misclassified as direct (false negative)

Run against 50 labeled examples with known partner and direct-customer ground truth; measure precision and recall per class

Partner Type Granularity

Correctly identifies reseller, distributor, MSP, SI, or ISV partner_type when partner flag is true with ≥90% accuracy

Partner type defaults to generic reseller when evidence supports MSP or SI; type confusion between distributor and reseller

Test against 20 labeled partner examples with known type labels; check exact match and acceptable-substitute rules

Partner Tier Extraction

Extracts correct partner_tier (platinum, gold, silver, registered) from program metadata or contract fields with ≥93% accuracy

Missing tier defaults to highest tier; tier extracted from wrong field; tier mismatch between program and contract

Validate against 30 examples with known tier labels; check null handling when tier field is absent

Support Entitlement Mapping

Maps partner tier to correct support_entitlement (dedicated, priority, standard, community) per routing rules table

Entitlement mismatch: gold tier gets community routing; platinum tier gets standard routing

Cross-reference output support_entitlement against expected entitlement per tier mapping table for 50 examples

Confidence Score Calibration

Confidence ≥0.85 for clear partner signals; confidence ≤0.50 for ambiguous or conflicting signals; null confidence when no partner evidence exists

High confidence (≥0.80) on ambiguous cases; low confidence (≤0.40) on clear partner signals; confidence missing when evidence present

Bin predictions by confidence range; verify calibration against human-labeled ambiguity scores for 30 edge cases

Multi-Tier Channel Conflict Resolution

When request context shows both partner and end-customer signals, correctly resolves to partner routing with end_customer_visible flag set to true

End-customer context ignored; partner routing applied without end_customer_visible flag; both flags set to true causing routing collision

Test 15 multi-tier channel scenarios; verify output has exactly one primary routing path and correct visibility flags

Missing Partner Metadata Fallback

When partner metadata is absent or null, outputs partner_flag: false, partner_type: null, routing_path: standard_customer_queue with confidence null

Null metadata triggers partner classification; fallback routing goes to partner queue; confidence assigned when no evidence exists

Test 10 examples with empty or missing partner metadata fields; verify null handling and fallback routing path

SLA Breach Risk Flag Accuracy

Correctly sets sla_breach_risk: true when partner tier SLA window is ≤25% remaining and queue depth exceeds threshold

False-positive breach risk on normal queue depth; false-negative when SLA window nearly expired; risk flag missing entirely

Simulate 20 SLA-boundary scenarios with known elapsed time and queue depth; measure precision and recall of breach_risk flag

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Use the base prompt with a frontier model (GPT-4o, Claude 3.5 Sonnet) and minimal validation. Focus on getting the partner type and tier classification correct before adding channel-specific logic. Start with a flat list of partner types and tiers in the prompt rather than a full taxonomy.

code
Partner types: [distributor, reseller, MSP, SI, referral]
Tiers: [registered, silver, gold, platinum]

Watch for

  • Confusing end-customer requests with partner-submitted requests when the input lacks explicit role markers
  • Over-classifying ambiguous inputs as "direct" when channel metadata is missing
  • No confidence scoring, so silent misroutes go undetected
Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.