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.
Prompt
Partner and Reseller Account Routing Prompt

When to Use This Prompt
Determine if this prompt fits your channel routing architecture and understand the required inputs, assumptions, and boundaries before implementation.
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.
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.
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.
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.
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.
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.
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.
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.
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.
textYou 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.
Prompt Variables
Each placeholder the Partner and Reseller Account Routing Prompt expects, its purpose, a concrete example, and actionable validation notes for implementation.
| Placeholder | Purpose | Example | Validation 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. |
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.
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 Element | Type or Format | Required | Validation 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. |
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.
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.
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.
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.
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.
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.
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.
Evaluation Rubric
Run these checks against a golden dataset of at least 50 labeled examples covering partner types, tiers, and end-customer confusion cases.
| Criterion | Pass Standard | Failure Signal | Test 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 |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
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.
codePartner 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

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.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us