Product teams and AI platform engineers use this prompt to route unstructured feature requests to the correct product area, distinguish new features from improvements and bug fixes, and detect cross-domain implications. The prompt is designed for classification and routing middleware where downstream tool access, context retrieval, and team assignment depend on accurate domain mapping. It accepts raw user text—from a support ticket, a sales call summary, or a feedback widget—and returns a structured classification payload that a routing engine can act on without further human parsing.
Prompt
Feature Request Domain Categorization Prompt

When to Use This Prompt
A guide to deploying the Feature Request Domain Categorization Prompt as a deterministic classification and routing middleware component.
Use this prompt when you need a deterministic, auditable classification that feeds into product backlogs, roadmap tools, or triage queues. The ideal implementation wraps the prompt in a thin API or queue-worker harness that validates the output schema, logs the classification decision, and routes the payload to the correct product manager or engineering team. This prompt is built for backend middleware, not for direct user interaction. It expects a defined product area taxonomy, clear rules for distinguishing request types, and a known set of cross-domain signals to check. Without these inputs, the model will guess, and guessing breaks downstream routing.
Do not use this prompt for real-time customer-facing chatbots, legal or compliance document review, or any workflow where misclassification creates regulatory exposure without a human review step. It is also a poor fit for open-ended ideation sessions where the goal is creative exploration rather than structured triage. If your taxonomy changes frequently, pair this prompt with a versioned taxonomy reference and a regression test suite that re-evaluates classification accuracy against a golden set of labeled requests. The next section provides the copy-ready prompt template you can adapt to your product domains.
Use Case Fit
Where this prompt works and where it does not. Use these cards to decide if the Feature Request Domain Categorization Prompt fits your current routing problem.
Good Fit: Structured Product Taxonomies
Use when: you have a defined, stable product area taxonomy with clear boundaries and ownership. The prompt excels at mapping unstructured feature requests to known domains. Guardrail: validate the taxonomy is complete before deployment; missing categories force the model to guess.
Bad Fit: Undefined or Shifting Product Boundaries
Avoid when: product areas are in flux, overlapping, or politically contested. The prompt cannot resolve organizational ambiguity. Guardrail: stabilize the taxonomy first. If boundaries shift weekly, use a keyword-based router until the domain model settles.
Required Input: Canonical Category List with Descriptions
What to watch: without clear category definitions, the model invents plausible-sounding domains that don't match your system. Guardrail: supply a JSON taxonomy with id, label, and description fields. Test that every category has at least three representative examples in your eval set.
Required Input: Distinction Rules for Adjacent Domains
What to watch: feature requests often span product areas. Without explicit disambiguation rules, routing becomes inconsistent. Guardrail: include a boundary_rules section in the prompt that defines tiebreakers for known overlaps, such as 'If the request mentions both billing and dashboard, route to billing.'
Operational Risk: Silent Misrouting at Scale
What to watch: a 5% misclassification rate on 10,000 daily requests means 500 tickets land in the wrong queue. Teams stop trusting the router. Guardrail: implement a confidence threshold. Route low-confidence classifications to a human triage queue. Log all routing decisions with the model's stated reasoning for audit.
Operational Risk: Cross-Domain Implication Blindness
What to watch: the prompt may correctly identify the primary domain but miss that the request also impacts another team's scope. Guardrail: add a secondary output field cross_domain_implications to the schema. If detected, notify both domain owners rather than silently routing to only one.
Copy-Ready Prompt Template
A reusable prompt template for categorizing feature requests into product domains and detecting cross-domain implications.
The following prompt template is designed to be copied directly into your AI harness. It maps unstructured feature requests to a defined product domain taxonomy, distinguishes new features from improvements and bug fixes, and flags requests with cross-domain implications. All placeholders use square brackets and must be replaced with your specific taxonomy, constraints, and output requirements before use.
textYou are a product triage assistant. Your job is to categorize incoming feature requests into the correct product domain and evaluate their scope. ## TAXONOMY Use ONLY the following product domains: [DOMAIN_LIST] ## INPUT Feature request: [FEATURE_REQUEST_TEXT] Submitter context (optional): [SUBMITTER_CONTEXT] ## INSTRUCTIONS 1. Classify the request into exactly ONE primary domain from the taxonomy above. 2. Determine the request type: "new_feature", "improvement", or "bug_fix". 3. Identify any secondary domains that are implicated by this request (cross-domain implications). 4. Assign a confidence score from 0.0 to 1.0 for your primary domain classification. 5. If confidence is below [CONFIDENCE_THRESHOLD], set primary_domain to "needs_clarification". 6. If the request does not fit any domain, set primary_domain to "out_of_scope". ## CONSTRAINTS - Do not invent domains outside the taxonomy. - If the request mentions multiple domains, choose the most specific one as primary. - Distinguish improvements (enhancing existing functionality) from new features (net-new capability). - Bug fixes describe broken behavior; improvements describe working behavior that could be better. - Flag cross-domain implications even when confidence in the primary domain is high. ## OUTPUT_SCHEMA Return ONLY valid JSON with this structure: { "primary_domain": "string", "request_type": "new_feature | improvement | bug_fix", "confidence": 0.0-1.0, "cross_domain_implications": ["domain_a", "domain_b"], "reasoning": "Brief explanation of classification decision" }
To adapt this template, replace [DOMAIN_LIST] with your actual product domain taxonomy as a structured list. Set [CONFIDENCE_THRESHOLD] to a value appropriate for your routing logic—0.7 is a common starting point for auto-routing, while 0.5 may be acceptable if human review follows. The [FEATURE_REQUEST_TEXT] placeholder should receive the raw user input, and [SUBMITTER_CONTEXT] can carry metadata such as user role, account tier, or prior request history. Before deploying, run this prompt against a golden dataset of at least 50 labeled examples and measure precision and recall per domain. Pay special attention to the boundary between improvements and bug fixes, as this distinction is the most common source of misclassification in production.
Prompt Variables
Inputs the Feature Request Domain Categorization Prompt needs to work reliably. Each placeholder must be populated before the prompt is assembled and sent to the model. Validation notes describe how to verify the input is well-formed and safe.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[FEATURE_REQUEST_TEXT] | The raw, unstructured feature request submitted by the user or customer. | We need a dark mode for the dashboard. Also, the export to CSV is broken. | Check for non-empty string. Sanitize for prompt injection patterns. Truncate to 2000 tokens if longer. |
[PRODUCT_DOMAIN_TAXONOMY] | A structured list of valid product domains, sub-domains, and their descriptions. Defines the classification target space. | {"domains": [{"id": "analytics", "label": "Analytics & Reporting", "description": "Dashboards, charts, exports, and data visualization features."}]} | Validate JSON schema. Ensure no duplicate domain IDs. Check that each domain has a non-empty label and description. Max 50 domains. |
[IMPROVEMENT_DEFINITION] | A clear, concise definition of what constitutes an improvement to an existing feature versus a new feature request. | An improvement enhances or modifies existing functionality without introducing a new capability. A new feature introduces a capability that does not currently exist. | Check for non-empty string. Ensure definition distinguishes improvement from new feature and bug fix. Avoid circular definitions. |
[BUG_FIX_DEFINITION] | A clear, concise definition of what constitutes a bug fix versus a feature request or improvement. | A bug fix restores intended behavior that is currently broken or not functioning as documented. It does not change the intended behavior itself. | Check for non-empty string. Ensure definition distinguishes bug fix from improvement and new feature. Avoid circular definitions. |
[OUTPUT_SCHEMA] | The exact JSON schema the model must use to structure its classification output, including required fields and types. | {"type": "object", "properties": {"primary_domain_id": {"type": "string"}, "confidence": {"type": "number", "minimum": 0, "maximum": 1}}, "required": ["primary_domain_id", "confidence"]} | Validate against JSON Schema spec. Ensure required fields are present. Check that confidence is bounded 0-1. Include enum constraints where applicable. |
[FEW_SHOT_EXAMPLES] | A curated set of 3-5 input-output pairs demonstrating correct classification, including edge cases and cross-domain examples. | [{"input": "Make the login page faster.", "output": {"primary_domain_id": "platform", "secondary_domain_ids": [], "request_type": "improvement"}}] | Validate each example matches [OUTPUT_SCHEMA]. Ensure examples cover new feature, improvement, bug fix, and cross-domain cases. Check for contradictory examples. |
[CONSTRAINTS] | Hard rules the model must follow, such as abstention criteria, tie-breaking logic, and domain assignment limits. | If confidence is below 0.7, set primary_domain_id to 'unclassified'. Assign at most one primary domain. A request can have up to two secondary domains. | Check for non-empty string. Ensure constraints are unambiguous and testable. Avoid constraints that conflict with [OUTPUT_SCHEMA] requirements. |
Implementation Harness Notes
How to wire the Feature Request Domain Categorization Prompt into a production application with validation, retries, logging, and human review gates.
This prompt is designed to be a single step inside a larger classification pipeline. The application layer is responsible for providing the [PRODUCT_DOMAIN_TAXONOMY] and [REQUEST_DEFINITIONS] context, calling the model, validating the structured output, and deciding what happens next based on the confidence score and domain assignment. Do not treat this prompt as a standalone chatbot interaction; it must be wrapped in application logic that enforces the output schema and handles failures gracefully.
Start by loading the taxonomy and definitions from a configuration store or database at runtime, not hardcoded in the prompt. The [PRODUCT_DOMAIN_TAXONOMY] should be a JSON array of domain objects with id, name, and description fields. The [REQUEST_DEFINITIONS] should include clear criteria for distinguishing new features from improvements and bug fixes. Before calling the model, validate that the taxonomy has no duplicate domain names and that every domain has a non-empty description. After receiving the model response, parse the JSON output and run these validation checks: (1) primary_domain must match exactly one domain ID from the provided taxonomy, (2) confidence_score must be a float between 0.0 and 1.0, (3) request_type must be one of new_feature, improvement, or bug_fix, and (4) cross_domain_implications must be an array of valid domain IDs or empty. If validation fails, retry once with the error message appended to the prompt as additional [CONSTRAINTS] context. If the retry also fails, route the input to a human review queue with the raw model output and validation errors attached.
For model choice, use a model with strong structured output support and low latency, such as GPT-4o or Claude 3.5 Sonnet, since this is a synchronous classification step that blocks downstream routing. Set temperature to 0 to maximize deterministic behavior. Log every classification event with the input text, assigned domain, confidence score, request type, model version, and latency. This log becomes your audit trail for measuring domain drift, confidence calibration, and taxonomy coverage gaps over time. If confidence_score falls below a configurable threshold (start with 0.7 and tune based on production data), route to human review rather than auto-dispatching. For high-volume systems, consider caching classifications for identical or near-identical inputs using a semantic deduplication layer to reduce model calls and cost.
The most common production failure mode is taxonomy mismatch: the model assigns a domain that sounds plausible but doesn't exist in your actual taxonomy, or it hallucinates a domain name. The validation step catches this, but you should also monitor for inputs that consistently produce low confidence scores—these signal gaps in your taxonomy that need new domains or clearer descriptions. Another failure mode is misclassifying bug reports as feature requests when the user describes desired behavior that already exists but isn't working. Mitigate this by including strong counterexamples in the [REQUEST_DEFINITIONS] that illustrate the boundary between 'this should work differently' (improvement) and 'this is broken' (bug). Finally, never use this prompt's output to automatically commit changes to a product backlog or roadmap tool without human approval. The classification should trigger routing and context assembly, not autonomous prioritization decisions.
Expected Output Contract
Defines the required JSON structure, field types, and validation rules for the Feature Request Domain Categorization Prompt output. Use this contract to parse, validate, and route the model's response in your application harness.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
primary_domain | string from [DOMAIN_TAXONOMY] | Must exactly match a canonical label in the provided taxonomy list. Reject on partial match or synonym. | |
primary_confidence | float between 0.0 and 1.0 | Must be a number. Reject if below [MIN_CONFIDENCE_THRESHOLD] and route to human review queue. | |
request_type | enum: new_feature, improvement, bug_fix, other | Must be one of the four enum values. Reject on unrecognized string. | |
secondary_domains | array of strings from [DOMAIN_TAXONOMY] | If present, each element must match a canonical taxonomy label. Remove duplicates. Null or empty array is acceptable. | |
cross_domain_implications | string or null | If not null, must be a non-empty string explaining cross-domain impact. Null allowed when secondary_domains is empty. | |
abstention | boolean | Must be true if the input cannot be categorized into any taxonomy domain. When true, primary_domain should be null and primary_confidence should be 0.0. | |
rationale | string | Must be a non-empty string summarizing the evidence used for classification. Maximum 300 characters. | |
requires_human_review | boolean | Must be true if primary_confidence < [MIN_CONFIDENCE_THRESHOLD] or if abstention is true. Used for downstream routing logic. |
Common Failure Modes
Feature request categorization fails in predictable ways. These are the most common breakages and how to prevent them before they reach production.
Feature vs. Bug vs. Improvement Confusion
What to watch: The model conflates new feature requests with bug reports or incremental improvements, routing them to the wrong queue. A 'dark mode' request might land in the accessibility bug tracker instead of the feature backlog. Guardrail: Add explicit definitions and counterexamples in the prompt for each category. Include a pre-check step that asks 'Is this describing broken existing behavior or new capability?' before domain assignment.
Cross-Domain Silencing
What to watch: A request that spans multiple product areas gets assigned to a single domain, losing critical context. 'Add export to Salesforce from the reporting dashboard' might route only to Integrations, ignoring the Reporting dependency. Guardrail: Require the prompt to output a primary domain plus a list of secondary affected domains. Add a post-processing check that flags requests containing product names from multiple domains.
Taxonomy Drift Under Load
What to watch: When the domain taxonomy changes, the prompt silently produces stale or invalid categories. A reorg that splits 'Platform' into 'Infrastructure' and 'Developer Experience' causes the model to force-fit requests into the old labels. Guardrail: Version-lock the taxonomy in the prompt with a last-updated timestamp. Run a regression test suite of known requests against every taxonomy change and fail the deployment if category precision drops below threshold.
Vague Input Overconfidence
What to watch: The model assigns high confidence to domain classification of vague, underspecified requests like 'make it faster' or 'improve the thing.' This produces confident misrouting with no clarification step. Guardrail: Add a confidence threshold rule. If the input lacks specific nouns, verbs, or product references, the prompt must output needs_clarification: true and abstain from domain assignment rather than guessing.
Jargon and Internal Shorthand Misclassification
What to watch: Users reference internal project codenames, legacy product names, or team-specific acronyms that the model maps to the wrong domain. 'Project Falcon' might route to Security instead of Payments. Guardrail: Include a glossary of known internal terms, codenames, and deprecated product names in the prompt context. Add an eval set of jargon-heavy requests and measure domain accuracy separately from clean-language inputs.
Sentiment Contamination of Domain Logic
What to watch: Strong emotional language or urgency signals bias the domain classifier. A frustrated user writing 'your billing is broken and I'm leaving' might get routed to Customer Retention instead of Billing, where the actual fix belongs. Guardrail: Instruct the prompt to classify based on the functional ask, not the emotional tone. Add adversarial test cases with high sentiment but clear functional intent and verify the domain assignment doesn't shift.
Evaluation Rubric
Use this rubric to test the Feature Request Domain Categorization prompt before shipping. Each criterion targets a known failure mode in domain routing. Run these checks against a golden dataset of 50-100 labeled feature requests spanning single-domain, cross-domain, and out-of-scope examples.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Primary Domain Accuracy | Top-1 predicted domain matches human label in >= 90% of test cases | Mismatch between predicted [DOMAIN] and ground truth label; confusion between sibling domains like 'Performance' and 'Scalability' | Run prompt against golden dataset; compute exact-match accuracy per domain; inspect confusion matrix for systematic misclassification |
Cross-Domain Flagging | Prompt identifies >= 85% of intentionally cross-domain requests with [CROSS_DOMAIN_IMPLICATIONS] set to true | Cross-domain request classified as single-domain; [CROSS_DOMAIN_IMPLICATIONS] is false or missing when multiple product areas are clearly affected | Create 20 synthetic cross-domain requests; verify boolean flag and secondary domain list; measure recall and precision |
Feature vs. Improvement Distinction | [REQUEST_TYPE] correctly distinguishes 'new_feature' from 'improvement' in >= 85% of borderline cases | New capability request classified as 'improvement'; existing feature enhancement classified as 'new_feature'; inconsistent labeling across similar inputs | Curate 30 borderline examples where distinction is subtle; compare prompt output against 3-human-majority label; measure Cohen's kappa |
Bug Report Rejection | Prompt correctly identifies >= 95% of bug reports and sets [REQUEST_TYPE] to 'bug_report' or 'not_a_feature_request' | Bug report classified as 'new_feature' or 'improvement'; defect description routed to product domain instead of bug queue | Feed 20 verified bug reports into prompt; verify output type and check that domain assignment is absent or explicitly rejected |
Out-of-Scope Abstention | Prompt abstains or returns low confidence for >= 90% of inputs outside supported product taxonomy | Out-of-scope input force-fitted into a valid domain with medium or high confidence; [CONFIDENCE_SCORE] > 0.6 for clearly unrelated request | Test with 20 out-of-domain requests (e.g., HR policy, legal question, sales inquiry); verify abstention signal or confidence below threshold |
Confidence Calibration | Mean [CONFIDENCE_SCORE] for correct predictions is >= 0.2 higher than mean for incorrect predictions | High confidence on wrong answers; low confidence on correct answers; confidence scores cluster around 0.5 regardless of accuracy | Bin predictions by confidence decile; plot accuracy per bin; expect monotonic increase; compute Expected Calibration Error (ECE) |
Taxonomy Adherence | 100% of [DOMAIN] values match the provided taxonomy list exactly; no invented or approximated categories | Output contains domain label not in allowed taxonomy; synonym used instead of canonical label; hierarchical path truncated or expanded | Parse all outputs; validate [DOMAIN] against allowed enum; flag any value not in set; check for substring matches that indicate approximation |
Output Schema Compliance | 100% of outputs parse as valid JSON matching the specified [OUTPUT_SCHEMA]; all required fields present | Missing required field; extra untyped field; wrong type for [CONFIDENCE_SCORE] (string instead of float); malformed JSON | Validate every output against JSON Schema; check field presence, types, and enum membership; measure parse error rate |
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 hardcoded product taxonomy. Use a single model call with no retry logic. Output the raw JSON response and inspect manually.
code[TAXONOMY]: [list of product domains] [INPUT]: [feature request text]
Watch for
- Taxonomy drift when product areas change
- No confidence threshold—every request gets a domain
- Cross-domain requests forced into a single bucket

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