How software developers should incorporate DecisioQ into auction, remarketing, dealer, lender, fleet, and logistics platforms
Version 1.0 | Generated June 25, 2026
1. Executive summary
2. Integration architecture
3. Auto Auction decision use cases
4. API authentication and endpoint workflow
5. Data mapping rules
6. Implementation recipes
7. Payload examples
8. UI and workflow integration
9. Production readiness checklist
10. Appendix: template catalog
DecisioQ is a decision-analysis API that ranks alternatives using weighted criteria, constraints, and algorithms such as TOPSIS or WSM. In an Auto Auction environment, it should be used when a system needs an explainable recommendation among competing vehicles, buyers, sellers, vendors, lanes, reserve prices, or liquidation actions.
The integration pattern is simple: collect candidate options from the auction platform, enrich each option with normalized business measurements, send the options to DecisioQ with an Auto Auction template or custom criteria, receive ranked results and explanations, then store and display the decision trace alongside the auction transaction.
| Layer | What it does | Auto Auction examples |
| Source systems | Own the operational data and workflow state. | Auction run list, vehicle inventory, condition reports, seller history, buyer accounts, transport quotes, market demand feeds. |
| Integration service | Transforms auction data into a DecisioQ DecisionRequest. | Maps VIN/lot/CR data into option scores; applies site-specific thresholds; chooses template. |
| DecisioQ API | Scores options, applies constraints, ranks results, explains outcome, and returns trace. | /api/v1/decide, /api/v1/decision/sensitivity, /api/v1/decision/scenario. |
| Application UI | Presents recommendation, confidence, exclusions, and explanation to users. | Buyer dashboard, lane manager, reserve pricing screen, seller scorecard, transportation dispatch. |
| Audit store | Persists request, response, user action, and final override. | Decision audit table linked to VIN, lot number, sale ID, buyer ID, seller ID, or transport order. |
| Use case | Primary users | When to call DecisioQ | Typical factors |
| Vehicle Acquisition | Buyer, acquisition desk, or fleet intake | Rank vehicles to purchase from external auctions or seller feeds. | Expected profit, demand, condition, purchase price, transport cost, days to sell. |
| Bid Optimization | Online/live auction bidding module | Recommend bid ceiling or target lot among candidates. | Expected ROI, bid amount, demand, risk, condition. |
| Lane Scheduling | Auction operations manager | Prioritize which lane/time block should receive vehicle groups. | Revenue, buyer interest, volume, operational complexity. |
| Reserve Price Setting | Seller services or pricing team | Choose reserve policy that balances sale probability and proceeds. | Expected sale price, sale probability, inventory age, competition. |
| Seller Selection | Commercial accounts team | Score consignors, fleet sellers, and dealer partners. | Vehicle quality, sell-through, profit, dispute rate, volume. |
| Buyer Qualification | Registration, compliance, credit, or floorplan workflow | Rank or approve buyers using payment and dispute history. | Purchase history, payment reliability, credit score, dispute history. |
| Vehicle Grading | Condition report or inspection application | Produce consistent grading support from inspection metrics. | Mechanical, exterior, interior, accident history, mileage, title status. |
| Inventory Liquidation | Dealer/fleet remarketing operations | Prioritize aging units for liquidation or aggressive pricing. | Inventory age, holding cost, sale price, demand, transport cost. |
| Transportation Vendor Selection | Post-sale operations and dispatch | Select carrier based on cost, speed, damage history, capacity, reliability. | Transportation cost, delivery time, damage rate, capacity, reliability. |
| Endpoint | Method | Purpose | Use in Auto Auction systems |
| /health | GET | Checks service availability. | Use in platform health checks and deployment monitoring. |
| /api/v1/token | POST | Exchanges clientId/clientSecret for a JWT bearer token. | Called by the auction integration service, not directly from browser clients. |
| /api/v1/templates | GET | Returns available templates and default criteria. | Cache available Auto Auctions templates and validate UI configuration. |
| /api/v1/ahp/generate | POST | Generates weights from pairwise comparisons. | Use when business users tune criteria through preference comparisons. |
| /api/v1/decide | POST | Main ranking and recommendation endpoint. | Use for vehicle, buyer, seller, lane, reserve, and transport decisions. |
| /api/v1/decision/sensitivity | POST | Measures how stable the recommendation is under weight variation. | Use before automated bidding, reserve changes, or high-value acquisition decisions. |
| /api/v1/decision/scenario | POST | Compares baseline and hypothetical decisions. | Use for what-if analysis such as higher transport cost, lower demand, or changed reserve. |
POST /api/v1/token
Content-Type: application/json
{
"clientId": "auction-platform-service",
"clientSecret": "<stored in vault or secret manager>"
}
Response fields to cache:
- accessToken
- tokenType = Bearer
- expiresUtc
- scopes such as decisioq.write or decisioq.admin
The quality of DecisioQ recommendations depends on consistent score definitions. Do not send raw fields unless all options use the same scale and meaning. Define field mappings in code or configuration, then test them with historical auction outcomes.
| Auction source field | DecisioQ score | Scale recommendation | Notes |
| Projected gross minus acquisition and recon cost | ExpectedProfit | Currency value, higher is better | Use the same currency and time horizon across all lots. |
| Search activity, watch count, proxy bids, MMR/market demand signals | MarketDemand | 0-100 or index, higher is better | Document how demand is calculated so weights remain meaningful. |
| CR score, inspection grade, mechanical/exterior/interior ratings | VehicleCondition | 0-100, higher is better | Keep condition scale consistent across locations and inspectors. |
| Likely winning bid or current bid ceiling | PurchasePrice or BidAmount | Currency value, lower is better | Include buyer fees if your business treats them as acquisition cost. |
| Carrier quote or distance-based estimate | TransportationCost | Currency value, lower is better | Update before final decision if transport quote expires. |
| Expected turn time from acquisition to retail/wholesale sale | DaysToSell | Days, lower is better | Use modelled or historical segment averages. |
| Buyer payment score or floorplan reliability | PaymentReliability | 0-100, higher is better | Keep compliance decisions separate from advisory scores when required. |
| Post-sale arbitration or complaint rate | DisputeRate | Percentage, lower is better | Use lookback windows that match business policy. |
{
"template": "Vehicle Acquisition",
"algorithm": "TOPSIS",
"runSensitivity": true,
"validationMode": "Strict",
"options": [
{
"optionId": "VIN-1HGCM82633A004352",
"name": "2019 SUV Lot 1842",
"scores": {
"ExpectedProfit": 4200,
"MarketDemand": 82,
"VehicleCondition": 76,
"PurchasePrice": 14800,
"TransportationCost": 625,
"DaysToSell": 24
}
},
{
"optionId": "VIN-2FTRX18W1XCA01234",
"name": "2020 Pickup Lot 2210",
"scores": {
"ExpectedProfit": 5100,
"MarketDemand": 77,
"VehicleCondition": 81,
"PurchasePrice": 19300,
"TransportationCost": 840,
"DaysToSell": 31
}
},
{
"optionId": "VIN-JM1BL1V72C1509876",
"name": "2018 Sedan Lot 775",
"scores": {
"ExpectedProfit": 2300,
"MarketDemand": 69,
"VehicleCondition": 73,
"PurchasePrice": 9200,
"TransportationCost": 410,
"DaysToSell": 21
}
}
],
"context": {
"correlationId": "optional",
"attributes": {}
}
}
public async Task<DecisionResponse?> DecideVehicleAcquisitionAsync(
IReadOnlyList<AuctionVehicleCandidate> candidates,
string accessToken,
CancellationToken ct)
{
var request = new
{
template = "Vehicle Acquisition",
algorithm = "TOPSIS",
runSensitivity = true,
validationMode = "Strict",
options = candidates.Select(v => new
{
optionId = v.Vin,
name = $"{v.Year} {v.Make} {v.Model} Lot {v.LotNumber}",
scores = new Dictionary<string, double>
{
["ExpectedProfit"] = v.ExpectedProfit,
["MarketDemand"] = v.MarketDemandIndex,
["VehicleCondition"] = v.ConditionScore,
["PurchasePrice"] = v.EstimatedWinningBid,
["TransportationCost"] = v.TransportEstimate,
["DaysToSell"] = v.ExpectedDaysToSell
}
})
};
using var http = new HttpClient { BaseAddress = new Uri(_decisioQBaseUrl) };
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
using var response = await http.PostAsJsonAsync("/api/v1/decide", request, ct);
response.EnsureSuccessStatusCode();
return await response.Content.ReadFromJsonAsync<DecisionResponse>(cancellationToken: ct);
}
async function decideBidOptimization(candidates, token) {
const body = {
template: "Bid Optimization",
algorithm: "TOPSIS",
runSensitivity: true,
options: candidates.map(lot => ({
optionId: lot.lotId,
name: `${lot.year} ${lot.make} ${lot.model}`,
scores: {
ExpectedROI: lot.expectedRoiPercent,
BidAmount: lot.currentOrTargetBid,
MarketDemand: lot.marketDemandIndex,
RiskScore: lot.riskScore,
VehicleCondition: lot.conditionScore
}
}))
};
const res = await fetch(`${process.env.DECISIOQ_URL}/api/v1/decide`, {
method: "POST",
headers: {
"Authorization": `Bearer ${token}`,
"Content-Type": "application/json"
},
body: JSON.stringify(body)
});
if (!res.ok) throw new Error(`DecisioQ failed: ${res.status} ${await res.text()}`);
return await res.json();
}
| UI element | Recommended display | Why it matters |
| Top recommendation card | Winning option name, score/rank, confidence, and short explanation. | Users need a fast answer and a reason they can defend. |
| Ranked alternatives table | All passed options with rank, score, and key factor impacts. | Auction users often compare the winner against familiar alternatives. |
| Excluded options panel | Options removed by constraints and the failed threshold. | Prevents confusion when a known vehicle, seller, or carrier does not appear in the ranking. |
| What-if controls | Editable weights or scenario changes such as transport cost or market demand. | Supports human review before final bid, reserve, or lane action. |
| Accept/override action | Require user, timestamp, selected action, and override reason. | Creates an audit trail and training data for future calibration. |
| Template | Built-in criteria |
| Vehicle Acquisition | Expected profit, demand, condition, purchase price, transport cost, days to sell. |
| Bid Optimization | Expected ROI, bid amount, demand, risk, condition. |
| Lane Scheduling | Revenue, buyer interest, volume, operational complexity. |
| Reserve Price Setting | Expected sale price, sale probability, inventory age, competition. |
| Seller Selection | Vehicle quality, sell-through, profit, dispute rate, volume. |
| Buyer Qualification | Purchase history, payment reliability, credit score, dispute history. |
| Vehicle Grading | Mechanical, exterior, interior, accident history, mileage, title status. |
| Inventory Liquidation | Inventory age, holding cost, sale price, demand, transport cost. |
| Transportation Vendor Selection | Transportation cost, delivery time, damage rate, capacity, reliability. |
| Symptom | Likely cause | Fix |
| 400: Every option must contain an OptionId. | An option was sent without a stable identifier. | Use VIN, lot ID, buyer ID, seller ID, carrier ID, or generated internal UUID. |
| 400: No options passed constraints. | All candidates failed template constraints such as ExpectedProfit >= 2500. | Show exclusions, ask user to loosen criteria, add more candidates, or change workflow. |
| Unexpected winner. | Criterion scale or direction is wrong. | Confirm that minimize factors are sent as raw values and criteria directions match business meaning. |
| Low confidence. | Top-ranked options are close or sensitive to weight changes. | Require human review or run scenario analysis. |
| Template not found. | Template name does not match catalog. | Call /api/v1/templates and use exact template names such as Vehicle Acquisition. |
For monolithic auction platforms, create an internal DecisioQ adapter module that centralizes token retrieval, request building, response parsing, logging, and error handling. For microservices, expose a dedicated decision-orchestration service so bidding, inventory, seller, buyer, and logistics modules do not duplicate mapping logic.
Do not hide DecisioQ explanations. In auction operations, a recommendation is most valuable when it is explainable: why a vehicle should be acquired, why a reserve is recommended, why a buyer is qualified, or why a carrier is selected. Persisting explanations also helps post-sale analysis and model calibration.