Overview
AUTO-AUCT-044, Approve High-Risk Purchase, determines whether a high-risk auction vehicle purchase should be approved, escalated, deferred, or rejected.
- Decision ID
AUTO-AUCT-044- Decision Name
- Approve High-Risk Purchase
- Industry Profile
auto-auctions-approve-high-risk-purchase-auto-auct-044version1.0.0- Default Profile
balanced- Default Scenario
standard- Catalog
DKR-AUTO-RUNTIME-001, version13.9.3
Understanding This Decision
Approve High-Risk Purchase helps Compliance & Risk teams compare candidate purchase cases when profit opportunity must be weighed against risk exposure, title confidence, repair uncertainty, and management priority.
Business question
Which purchase case should be recommended for approve high-risk purchase in the selected Auto Auctions context?
Expected outcome
A recommended purchase case or ranked set of purchase cases with the criteria and constraints that most influenced the result.
Typical users
Operations managers, compliance teams, auction buyers, risk reviewers, and integration teams building controlled purchase workflows.
Decision boundary
Use this decision to compare submitted purchase cases. It supports business judgment and does not replace required legal, title, compliance, or management approvals.
Architecture
- Request a token from the Identity service.
- Use the returned
jwtTokenas the bearer token. - Load the catalog and decision detail from DKS.
- Build a Prepared Decision Input using canonical criterion IDs.
- Execute the decision through DDE.
- Use
X-Request-IdandX-Correlation-Idfor tracing across DDE and DKS.
Authentication
Request a secure session token from Identity. The current token response field is jwtToken.
POST https://identity.vinquery.com/connect/token
Content-Type: application/json
{
"clientId": "{clientId}",
"clientSecret": "{clientSecret}",
"audience": "vinquery:api:decisioq"
}
Catalog Discovery
Use DKS to discover the catalog and then load complete metadata for AUTO-AUCT-044.
GET https://dks.vinquery.com/decisioncatalog
Authorization: Bearer {jwtToken}
GET https://dks.vinquery.com/decisioncatalog/decisions/AUTO-AUCT-044
Authorization: Bearer {jwtToken}
Criteria
Criterion IDs are intentionally stable machine identifiers. Display labels are for users; request values should be keyed by canonical criterionId.
| Criterion ID | Name | Direction | Weight | Validation |
|---|---|---|---|---|
expected_profit_margin | Expected Profit Margin | maximize | 25 | non_negative_currency |
risk_exposure | Risk Exposure | minimize | 30 | score_0_to_100 |
title_confidence | Title Confidence | maximize | 15 | score_0_to_100 |
repair_uncertainty | Repair Uncertainty | minimize | 15 | score_0_to_100 |
management_priority | Management Priority | maximize | 15 | score_0_to_100 |
Constraint Processing
This decision includes one catalog-defined hard constraint. DKS returns the constraint with the decision detail, and DDE evaluates it before criteria-based ranking.
| Verified Catalog Constraint | Status | Effect |
|---|---|---|
AUTO-AUCT-044-TITLE-CONFIDENCE-MIN-80 | Hard, enabled, mandatory | Requires title_confidence >= 80 before a candidate can participate in ranking. |
{
"constraintSummary": {
"definedConstraintCount": 1,
"activeConstraintCount": 1,
"eligibleOptionCount": 2,
"excludedOptionCount": 1,
"eligibleOptions": [
"option-1",
"option-2"
],
"excludedOptions": [
{
"optionId": "option-3",
"reasons": [
"Title confidence is below the minimum threshold of 80."
]
}
]
}
}
const constraints = decisionDetail.constraints || [];
if (constraints.length > 0) {
// DDE applies catalog constraints before ranking.
// Excluded candidates appear in response.constraintSummary.excludedOptions.
}
const summary = response.constraintSummary;
const excluded = response.decisionResult?.excludedOptions || [];
Excluded candidates do not participate in ranking because hard constraints are evaluated before scoring. For AUTO-AUCT-044, option-3 is excluded from the showcase sample because its title confidence is below the catalog threshold.
Industry Profile
The generated integration asset uses $.auctionLots as the business options path, $.optionId as the option ID, and $.name as the option display name.
| Business Data Path | Criterion ID |
|---|---|
option.financial.expectedProfitMargin | expected_profit_margin |
option.risk.riskExposure | risk_exposure |
option.compliance.and.risk.titleConfidence | title_confidence |
option.compliance.and.risk.repairUncertainty | repair_uncertainty |
option.compliance.and.risk.managementPriority | management_priority |
{
"auctionLots": [
{
"optionId": "option-1",
"name": "Controlled High-Margin Purchase",
"financial": {
"expectedProfitMargin": 5200
},
"risk": {
"riskExposure": 12
},
"compliance": {
"and": {
"risk": {
"titleConfidence": 90,
"repairUncertainty": 12,
"managementPriority": 90
}
}
}
}
]
}
{
"optionId": "option-1",
"name": "Controlled High-Margin Purchase",
"values": {
"expected_profit_margin": 5200,
"risk_exposure": 12,
"title_confidence": 90,
"repair_uncertainty": 12,
"management_priority": 90
}
}
Profiles and Scenarios
A profile changes criterion weights. A scenario describes the operating context for the execution. The active DKS catalog exposes these choices with the decision detail response.
| Profile ID | Name | Purpose |
|---|---|---|
balanced | Balanced | Preserves the default DKS criterion weights. |
cost_focused | Cost Focused | Places stronger emphasis on minimized cost, fee, and expense criteria. |
quality_focused | Quality Focused | Places stronger emphasis on maximized quality, confidence, value, and performance criteria. |
risk_averse | Risk Averse | Places stronger emphasis on risk reduction, compliance confidence, and operational reliability. |
| Scenario ID | Name | Use When |
|---|---|---|
standard | Standard Operating Scenario | Routine auction decision execution. |
limited_budget | Limited Budget | Purchasing or operating capital is constrained, requiring greater cost discipline. |
high_demand | High Demand | Market demand is strong and timely inventory acquisition is more valuable. |
risk_control | Risk Control | Operational or compliance risk is elevated and conservative decisioning is preferred. |
Prepared Input
For Prepared Decision Input, send decisionId, selected profile/scenario IDs, and option values keyed by canonical criterion ID. This request intentionally does not duplicate values under display labels.
{
"decisionId": "AUTO-AUCT-044",
"profileId": "balanced",
"scenarioId": "standard",
"algorithm": "TOPSIS",
"weightStrategy": "Manual",
"runSensitivity": false,
"requestContext": {
"correlationId": "auto-auct-044-demo-001"
},
"options": [
{
"optionId": "option-1",
"name": "Controlled High-Margin Purchase",
"values": {
"expected_profit_margin": 5200,
"risk_exposure": 12,
"title_confidence": 90,
"repair_uncertainty": 12,
"management_priority": 90
}
},
{
"optionId": "option-2",
"name": "Borderline Risk Purchase",
"values": {
"expected_profit_margin": 4700,
"risk_exposure": 22,
"title_confidence": 82,
"repair_uncertainty": 22,
"management_priority": 82
}
},
{
"optionId": "option-3",
"name": "Defer Pending Documentation",
"values": {
"expected_profit_margin": 4300,
"risk_exposure": 34,
"title_confidence": 74,
"repair_uncertainty": 34,
"management_priority": 74
}
}
]
}
Execute
curl -X POST "https://dde.vinquery.com/api/v1/decide" \
-H "Authorization: Bearer ${DECISIOQ_TOKEN}" \
-H "Content-Type: application/json" \
-H "X-Correlation-Id: auto-auct-044-demo-001" \
--data @auto-auct-044-execute.json
DDE retrieves authoritative criteria, validation metadata, and constraints from DKS, excludes candidates that fail mandatory hard constraints, executes the deterministic ranking, and returns the decision result plus execution metadata.
Interpret the Result
The successful response is centered on decisionResult. The winner and ranking are deterministic outputs; optional explanation fields add context but do not change the ranking.
{
"service": "decisioq",
"version": "7.6.3",
"requestId": "0HNE...",
"operation": "Decide",
"success": true,
"decisionType": "AUTO-AUCT-044",
"decisionVersion": "13.9.3",
"timestampUtc": "2026-07-19T00:00:00Z",
"decisionResult": {
"winner": "option-1",
"confidence": 91,
"ranking": [
{
"optionId": "option-1",
"score": 0.91,
"breakdown": {
"expected_profit_margin": 0.25,
"risk_exposure": 0.30,
"title_confidence": 0.15,
"repair_uncertainty": 0.15,
"management_priority": 0.15
},
"normalizationBreakdown": {}
},
{
"optionId": "option-2",
"score": 0.84,
"breakdown": {},
"normalizationBreakdown": {}
}
],
"excludedOptions": [
{
"optionId": "option-3",
"reasons": [
"Title confidence is below the minimum threshold of 80."
]
}
],
"explanation": {
"summary": "Controlled High-Margin Purchase ranked highest among eligible purchase cases.",
"strengths": [],
"weaknesses": [],
"exclusions": [
"option-3: Title confidence is below the minimum threshold of 80."
]
}
},
"constraintSummary": {
"definedConstraintCount": 1,
"activeConstraintCount": 1,
"eligibleOptionCount": 2,
"excludedOptionCount": 1,
"eligibleOptions": [
"option-1",
"option-2"
],
"excludedOptions": [
{
"optionId": "option-3",
"reasons": [
"Title confidence is below the minimum threshold of 80."
]
}
]
},
"warnings": [],
"requestContext": {
"correlationId": "auto-auct-044-demo-001"
}
}
decisionResult.winner.constraintSummary and decisionResult.excludedOptions.Sensitivity Analysis
Set runSensitivity to true on catalog execution when the client wants recommendation-stability information in the same response. The sensitivity engine perturbs criterion weights by controlled factors and reports whether the winner remains stable.
{
"sensitivityResult": {
"stableWinner": true,
"winner": "option-1",
"mostSensitiveCriterion": "risk_exposure",
"confidence": 95,
"criterionImpacts": {
"risk_exposure": 0.1842
},
"winnerChangeCounts": {
"risk_exposure": 0
}
}
}
Use sensitivity output to decide whether a recommendation is robust enough for automation or should be reviewed by a person.
Explanation of Decision Result
Every successful response can include deterministic explanation text under decisionResult.explanation and explanation. If the optional AI layer is enabled by the service, the response may also include an ai block with structured business-language explanation fields.
{
"ai": {
"enabled": true,
"generated": true,
"schemaValidated": true,
"explanation": {
"summary": "The selected purchase case provided the strongest overall balance of margin, risk, confidence, and management priority.",
"whyRecommended": "It met the hard title-confidence threshold and ranked highest among eligible cases.",
"keyDrivers": [],
"tradeoffs": [],
"competitors": [],
"sensitivitySummary": "Sensitivity analysis was not included in this response.",
"scenarioSummary": "The standard scenario was selected.",
"risks": [],
"nextSteps": [],
"assumptions": []
}
}
}
Tracing and Logs
Use request identifiers to connect client, catalog, and execution activity during support or integration testing.
X-Request-Id- Optional client-supplied request ID. If omitted, the server generates one.
X-Correlation-Id- Optional client correlation value propagated from DDE to DKS.
requestContext.correlationId- Optional payload value echoed in the response and used for tracing.
executionTrace- Advanced execution metadata including selected profile, selected scenario, effective weights, and applied constraints.
Code Examples
These examples demonstrate the current DecisioQ flow:
- Request
jwtTokenfromhttps://identity.vinquery.com/connect/token. - Load
AUTO-AUCT-044metadata fromhttps://dks.vinquery.com/decisioncatalog/decisions/AUTO-AUCT-044. - Execute a Prepared Decision Input at
https://dde.vinquery.com/api/v1/decide.
Set these environment variables before running any companion example:
DECISIOQ_CLIENT_ID
DECISIOQ_CLIENT_SECRET
Optional:
DECISIOQ_AUDIENCE=vinquery:api:decisioq
DECISIOQ_IDENTITY_URL=https://identity.vinquery.com/connect/token
DECISIOQ_DKS_URL=https://dks.vinquery.com
DECISIOQ_DDE_URL=https://dde.vinquery.com
Download the source files directly:
Troubleshooting
| Symptom | Likely Cause | What to Check |
|---|---|---|
| 401 Unauthorized | Missing, expired, or invalid bearer token. | Request a fresh jwtToken from Identity and send it as Authorization: Bearer .... |
| Decision not found | The decision ID is not in the active catalog. | Load /decisioncatalog/decisions/AUTO-AUCT-044 and confirm the ID is published. |
| Validation failed | A required criterion value is missing or outside its rule. | Use canonical criterion IDs and keep score values in the expected range. |
| Candidate excluded | A mandatory hard constraint failed. | Review constraintSummary.excludedOptions for the exact candidate and reason. |
| HTML error response | An upstream hosted service failed before returning JSON. | Check service health and server logs for Identity, DKS, or DDE. |
Production Checklist
Security
Keep API Consumer credentials and jwtTokens on the server side. Use HTTPS, short-lived bearer tokens, and an API Consumer linked to a DecisioQ account for usage accounting.
Catalog
Load decision metadata from DKS and cache cautiously. Refresh when catalog versions change.
Request Quality
Use canonical criterion IDs, validate value ranges, and send at least two candidate options.
Constraints
Show excluded candidates separately. Do not include them in user-facing ranking tables.
Explanation
Display explanation text as supporting context only. Never let AI text override deterministic results.
User Experience
Show business labels to users and keep raw execution trace collapsed for advanced diagnostics.
