This prompt is designed for SaaS platform engineers and support operations teams who need to combine customer tier metadata with issue severity to produce an entitlement-aware priority score. The core job-to-be-done is deterministic, auditable routing where a paying enterprise customer reporting a P1 outage must be prioritized differently than a free-tier user reporting the same technical severity. Use this prompt when your routing logic must respect commercial agreements, when priority must be reproducible for audit, and when you need explicit override conditions for VIP accounts, contract SLAs, or security-sensitive issues. The ideal user is an engineer or operations lead building or maintaining a support triage pipeline, incident management system, or automated ticket router where customer entitlements directly shape queue ordering and escalation timing.
Prompt
Customer Tier and Issue Severity Combination Prompt

When to Use This Prompt
Determine if the Customer Tier and Issue Severity Combination Prompt fits your routing architecture and operational constraints.
This prompt requires structured inputs: a defined customer tier taxonomy (e.g., Free, Pro, Enterprise, VIP), a severity classification schema (e.g., SEV1 through SEV4), and a tier multiplier table that encodes your commercial policy. The output is a tier-adjusted priority score with explicit components—base severity score, tier multiplier, final score, and any override flags. Before deploying, you must validate that your tier data is accurate and available at classification time; stale or missing tier data will silently produce incorrect priority assignments. Implement a pre-check that confirms tier metadata is present and recent, and route requests with missing tier data to a manual review queue rather than guessing. For high-risk domains, add a human approval step when the prompt applies a VIP override or when the final score crosses a threshold that triggers executive escalation.
Do not use this prompt for general sentiment analysis, for workflows where tier data is unavailable, or as a standalone replacement for a full incident management system. It is not designed to assess technical severity from unstructured text—pair it with a dedicated severity classification prompt upstream. Avoid using this prompt when priority must be determined by real-time operational factors like current on-call load or when the tier multiplier logic changes faster than you can update the prompt template. If your routing decisions have regulatory or contractual consequences, ensure every priority assignment is logged with the input snapshot, multiplier applied, and final score for audit review. Start by testing against a golden dataset of known tier-severity pairs with expected outputs before integrating into your production pipeline.
Use Case Fit
Where the Customer Tier and Issue Severity Combination Prompt works, where it breaks, and what you must have in place before deploying it to production.
Good Fit: Entitlement-Aware SaaS Routing
Use when: your platform has contractual SLAs tied to customer tiers and you need priority scoring that respects commercial agreements. Guardrail: validate that the customer tier lookup succeeds before scoring; a missing tier should default to the lowest entitlement, not fail silently.
Bad Fit: No Tier Data Available
Avoid when: customer tier metadata is unavailable, stale, or unreliable at the time of scoring. Guardrail: implement a tier-resolution pre-check that rejects or flags requests with missing account data before the prompt runs; never let the model invent a tier.
Required Input: Verified Customer Tier
What to watch: the prompt depends on a [CUSTOMER_TIER] field that must come from a system of record, not from user self-reporting or model inference. Guardrail: resolve tier from your CRM or account service via API call before prompt assembly; log the resolved tier alongside the prompt output for auditability.
Required Input: Structured Severity Assessment
What to watch: the prompt expects a [BASE_SEVERITY] value from a prior classification step. If severity is missing or unstructured, the tier multiplier produces garbage. Guardrail: run severity classification first, validate its output schema, and only pass confirmed severity values into this combination prompt.
Operational Risk: VIP Override Blind Spots
What to watch: high-tier customers with low-severity issues may receive inflated priority, starving genuinely critical issues from lower tiers. Guardrail: implement an override review queue for tier-boosted items that cross a priority threshold; require human approval when the tier multiplier alone drives escalation.
Operational Risk: Tier Multiplier Drift
What to watch: if tier definitions or SLA contracts change, the hardcoded multiplier logic in the prompt becomes stale and produces incorrect scores. Guardrail: externalize tier multipliers into a configuration store; version the multiplier mapping and include the version in the prompt output for traceability.
Copy-Ready Prompt Template
A reusable prompt template for combining customer tier metadata with issue severity to produce an entitlement-aware priority score.
This template is the core of the playbook. It is designed to be copied directly into your application code or prompt management system. The prompt instructs the model to act as a deterministic scoring function, taking structured inputs for customer tier and issue severity and producing a single, auditable priority score. The square-bracket placeholders represent the dynamic data your system must inject at runtime. Do not modify the core logic of the prompt; instead, adapt the values you pass into the placeholders.
textYou are a priority scoring engine for a SaaS platform. Your task is to combine a customer's account tier with the severity of their reported issue to produce a single, tier-adjusted priority score. You must follow the rules exactly and show your work. **Input Data:** - Customer Tier: [CUSTOMER_TIER] - Issue Severity: [ISSUE_SEVERITY] - Tier Multiplier Map: [TIER_MULTIPLIER_MAP] - Severity Base Score Map: [SEVERITY_BASE_SCORE_MAP] - Override Rules: [OVERRIDE_RULES] **Instructions:** 1. **Validate Inputs:** First, check if the provided [CUSTOMER_TIER] and [ISSUE_SEVERITY] exist in the respective maps. If a value is missing or unrecognized, return an error object as specified in the output schema. 2. **Look Up Values:** Retrieve the base score for the [ISSUE_SEVERITY] from the [SEVERITY_BASE_SCORE_MAP] and the multiplier for the [CUSTOMER_TIER] from the [TIER_MULTIPLIER_MAP]. 3. **Calculate Raw Score:** Multiply the severity base score by the tier multiplier. The formula is: `raw_score = base_score * tier_multiplier`. 4. **Apply Override Rules:** Check the calculated `raw_score` against the conditions in the [OVERRIDE_RULES]. If a rule's condition is met, replace the `raw_score` with the rule's `override_score` and note the rule's `reason`. 5. **Determine Final Priority:** Map the final score (after overrides) to a priority level (e.g., P1, P2, P3) using the standard scale: 75-100 = P1, 50-74 = P2, 25-49 = P3, 0-24 = P4. **Output Format:** You must respond with a single, valid JSON object conforming to this schema: { "priority_level": "string", // The final P1-P4 priority level "final_score": "number", // The final calculated score after overrides "calculation_steps": { "input_validation": "string", // 'valid' or a description of the error "base_severity_score": "number", "tier_multiplier": "number", "raw_score": "number", "applied_override": "string | null", // The reason from the override rule, or null "final_score": "number" }, "error": "string | null" // A description of the error if input validation failed, otherwise null }
To adapt this template, you must define the data structures for the placeholder maps. For example, [TIER_MULTIPLIER_MAP] could be a JSON object like {"enterprise": 1.5, "pro": 1.2, "standard": 1.0}. The [OVERRIDE_RULES] placeholder should be an array of rule objects, such as [{"condition": "raw_score > 80 && customer_tier == 'standard'", "override_score": 85, "reason": "Critical severity caps priority for all tiers."}]. Ensure your application logic serializes these data structures into a string format the model can parse before inserting them into the prompt. The strict JSON output format is critical for downstream parsing; always validate the model's response against the schema before acting on the priority.
Prompt Variables
Replace each placeholder with runtime data before invoking the model. Missing or incorrect inputs will cause tier misassignment, broken priority scoring, or silent default-to-lowest-tier failures.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[CUSTOMER_ID] | Unique account identifier used to look up tier metadata and contract entitlements | cust_8a7b3c | Must match an existing record in the account system; null triggers an unknown-customer fallback path |
[CUSTOMER_TIER] | The customer's contracted support tier that determines the priority multiplier | premium | Must be one of the enumerated tier values defined in the tier multiplier table; case-insensitive match required |
[TIER_MULTIPLIER] | Numeric weight applied to the base severity score for tier-adjusted priority | 1.5 | Must be a positive float; validate against the tier-to-multiplier mapping before prompt assembly; 1.0 for standard tier |
[ISSUE_SEVERITY] | The operational severity of the issue before tier adjustment | sev2 | Must be one of the enumerated severity levels; validate against the severity definitions catalog; null is not allowed |
[BASE_SEVERITY_SCORE] | Numeric score derived from the issue severity level before tier multiplication | 8 | Must be an integer or float within the defined severity score range; validate against the severity-to-score mapping |
[IS_VIP] | Flag indicating whether the customer has VIP status that triggers override handling | Must be a boolean; true forces a minimum priority floor regardless of calculated score; false allows normal calculation | |
[OVERRIDE_CONDITIONS] | List of conditions that can override the calculated priority score | ["vip_floor", "security_incident"] | Must be a JSON array of strings matching known override condition codes; empty array is valid; unknown codes should be rejected |
[ACCOUNT_STATUS] | Current account standing used to detect suspended or restricted customers | active | Must be one of active, suspended, restricted, or trial; suspended accounts may route to a different queue or require human review |
Implementation Harness Notes
How to wire the Customer Tier and Issue Severity Combination Prompt into a production triage pipeline with validation, retries, and audit logging.
This prompt is designed to be called synchronously within a ticket ingestion or triage middleware layer. The application must supply three structured inputs: the customer's tier from your account database, the issue severity from an upstream classifier or human selection, and any override flags from your business rules engine. Do not pass raw, unvalidated strings for tier or severity—the prompt's reliability depends on clean, enumerated inputs that match your internal service catalog and entitlement schema.
Implement a pre-call validation gate that checks: (1) [CUSTOMER_TIER] is a recognized value from your tier enum (e.g., free, starter, professional, enterprise, vip), (2) [ISSUE_SEVERITY] is a recognized severity level (e.g., SEV1 through SEV4), and (3) [OVERRIDE_CONDITIONS] is either none or a structured list of active policy overrides with timestamps. If validation fails, reject the request before model invocation and log the malformed input for triage. After the model returns, validate the output against the expected JSON schema: a tier_multiplier (float), base_severity_score (integer), adjusted_priority_score (float), override_applied (boolean), and rationale (string). Use a JSON Schema validator in your application code—do not rely on the model to self-correct without a repair loop.
For production deployment, wrap the prompt call in a retry wrapper with exponential backoff (max 3 attempts) for transient model errors or schema validation failures. On the second retry, append the validation error message to the prompt as additional context so the model can self-correct. If all retries fail, escalate to a human review queue with the original inputs, all failed outputs, and validation error logs attached. Log every invocation—inputs, outputs, retry count, latency, and final disposition—to your observability platform. This audit trail is critical for SLA compliance reporting and for detecting tier lookup failures where the application passed a stale or incorrect customer tier. For VIP customers (tier enterprise or vip), consider adding a post-processing rule that floors the adjusted_priority_score at a minimum threshold to guarantee expedited handling regardless of model output, and flag these cases for immediate human notification.
Model choice matters here: use a model with strong instruction-following and JSON output reliability, such as GPT-4o, Claude 3.5 Sonnet, or an equivalent. Avoid smaller, less reliable models for this task because tier multiplier misapplication or override omission can directly violate customer SLAs. If you must use a smaller model for cost reasons, add a secondary validation step that recalculates the expected adjusted_priority_score from the known tier multiplier and base severity using your business rules, and flag any discrepancy exceeding a 5% tolerance for human review. Do not use this prompt in streaming mode—the output must be complete and validated before the triage system acts on the priority score.
Expected Output Contract
Defines the exact fields, types, and validation rules for the tier-adjusted priority output. Use this contract to build a post-processing validator that rejects malformed responses before they reach downstream routing logic.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
tier_adjusted_priority_score | number (0.0–100.0) | Must be a float. Calculated as base_severity_score * tier_multiplier. Clamp to 100.0 max. Reject if not present or not numeric. | |
base_severity_score | number (0.0–100.0) | Must be a float between 0.0 and 100.0. Must match the severity level extracted from the issue description. Reject if outside range or missing. | |
tier_multiplier | number (0.5–3.0) | Must be a float. Must match the multiplier defined for the detected [CUSTOMER_TIER]. Standard mapping: free=0.5, starter=0.8, growth=1.0, enterprise=1.5, vip=2.0. Reject if outside allowed range or mismatched with tier. | |
detected_customer_tier | string (enum) | Must be one of: free, starter, growth, enterprise, vip. Case-insensitive match accepted but normalize to lowercase. Reject if not in allowed enum or missing. | |
detected_severity_level | string (enum) | Must be one of: low, medium, high, critical. Case-insensitive match accepted but normalize to lowercase. Reject if not in allowed enum or missing. | |
override_applied | boolean | Must be true or false. If true, override_reason must be non-null and non-empty. If false, override_reason must be null. Reject on type mismatch or logic violation. | |
override_reason | string or null | Required when override_applied is true; must be null when false. When present, must be a non-empty string under 500 characters describing the override trigger (e.g., 'VIP customer with critical severity auto-escalates to 100'). Reject if constraint violated. | |
confidence | number (0.0–1.0) | Must be a float between 0.0 and 1.0. Represents model confidence in tier and severity detection. If below 0.7, downstream routing should flag for human review. Reject if outside range or missing. |
Common Failure Modes
What breaks first when combining customer tier metadata with issue severity, and how to prevent silent misrouting, entitlement violations, and VIP customer handling errors in production.
Tier Lookup Mismatch
What to watch: The prompt uses a stale or incorrect customer tier because the lookup key (account ID, email domain, contract ID) doesn't match the input context. A Platinum customer gets routed as Standard because the tier metadata wasn't joined correctly before prompt assembly. Guardrail: Validate tier resolution in the application layer before prompt construction. Include the resolved tier and the lookup key in the prompt so the model can flag mismatches. Log every tier lookup for audit.
Severity Inflation for VIPs
What to watch: The model over-weights customer tier and inflates issue severity for high-tier customers, turning a minor cosmetic bug into a P1 incident. This breaks queue ordering and wastes on-call resources. Guardrail: Keep severity assessment grounded in technical impact first. Apply the tier multiplier as a separate, explicit step after base severity is determined. Add eval cases where VIP customers report low-severity issues and verify the output doesn't escalate them.
Missing Tier Default Behavior
What to watch: The input contains a customer with no tier metadata, an unknown tier, or a malformed tier value. The model guesses, defaults to highest priority, or hallucinates a tier instead of flagging the gap. Guardrail: Include an explicit instruction for unknown or missing tiers: default to a configured fallback tier and emit a tier_confidence: low flag. Test with empty, null, and garbage tier inputs to verify the model doesn't improvise.
Override Conditions Ignored
What to watch: The prompt defines override conditions (e.g., security incidents always get P1 regardless of tier) but the model applies the standard tier multiplier anyway, producing a lower priority than policy requires. Guardrail: Structure the prompt so override rules are evaluated before the tier multiplier. Use explicit precedence language: 'Apply override rules first. Only if no override applies, calculate tier-adjusted priority.' Test with override-triggering inputs for every defined condition.
Tier Multiplier Drift Across Versions
What to watch: The tier multiplier values (e.g., Platinum: 1.5x, Gold: 1.2x) are hardcoded in the prompt and drift out of sync with the business rules in the application config. Priority scores become inconsistent between prompt versions and the production routing system. Guardrail: Inject tier multiplier values as prompt variables from a single source of truth (config file, database, feature flag). Never hardcode business rules in prompt text. Version the multiplier config alongside the prompt template.
Composite Score Opacity
What to watch: The prompt outputs a single combined priority score without showing the base severity, tier multiplier, or override flags. Operators can't audit why a ticket got its priority, and debugging incorrect routing requires guesswork. Guardrail: Require the output to include a breakdown: base_severity, tier_multiplier, override_applied (boolean with reason), and final_score. This makes every decision traceable and simplifies eval and debugging.
Evaluation Rubric
Run these test cases against the Customer Tier and Issue Severity Combination Prompt with known inputs to verify tier-adjusted priority scoring, VIP handling, and override conditions before production deployment.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Correct tier multiplier application | Enterprise tier with severity 3 produces priority score of 9 (3x multiplier) | Priority score does not match tier_multiplier * base_severity | Provide [CUSTOMER_TIER]=Enterprise and [BASE_SEVERITY]=3; assert output.priority_score equals 9 |
VIP customer override triggers | VIP flag set to true forces priority_score to maximum regardless of base severity | VIP customer receives non-maximum priority score | Provide [CUSTOMER_TIER]=Standard, [BASE_SEVERITY]=1, [VIP_FLAG]=true; assert output.priority_score equals output.max_priority |
Missing tier defaults to standard | Null or missing [CUSTOMER_TIER] defaults to Standard tier with 1x multiplier | System errors or assigns incorrect multiplier when tier is absent | Omit [CUSTOMER_TIER] from input; assert output.tier_applied equals Standard and output.tier_multiplier equals 1 |
Severity boundary enforcement | Severity values outside 1-5 range are clamped to nearest valid boundary | Out-of-range severity produces null, error, or unclamped score | Provide [BASE_SEVERITY]=0 and [BASE_SEVERITY]=6; assert output.base_severity equals 1 and 5 respectively |
Override reason documented | When override_condition is true, output includes non-null override_reason field | Override applied but override_reason is null or missing | Provide [CUSTOMER_TIER]=Enterprise, [VIP_FLAG]=true, [BASE_SEVERITY]=1; assert output.override_reason is not null |
Tier lookup case-insensitive | Tier values enterprise, Enterprise, and ENTERPRISE all map to same multiplier | Case variation produces different tier_multiplier values or lookup failures | Provide [CUSTOMER_TIER]=enterprise, Enterprise, ENTERPRISE across three runs; assert output.tier_multiplier is identical |
Confidence score present | Output includes confidence_score between 0.0 and 1.0 for every valid input | confidence_score is null, negative, or exceeds 1.0 | Run with any valid input combination; assert 0.0 <= output.confidence_score <= 1.0 |
Audit trail includes input snapshot | Output contains input_snapshot field with all provided input values | input_snapshot missing fields that were provided in the request | Provide full input set; assert output.input_snapshot matches all provided fields exactly |
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
Start with the base prompt and a simple JSON schema. Use a single model call with inline customer tier data and issue severity passed as [CUSTOMER_TIER] and [ISSUE_SEVERITY] placeholders. Skip the tier lookup step—just paste tier metadata directly into the prompt for early testing.
Watch for
- Tier strings that don't match your actual CRM values (e.g., 'gold' vs 'tier_3')
- Severity descriptions that are too vague to produce consistent scores
- No validation on the output shape—expect malformed JSON on ~10% of prototype runs

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