Price positioning and competitive analysis. Triggers: "price this car", "am I priced right", "competitive pricing", "price check VIN", "who is undercutting me", "market price for this", "price my inventory", "compare my price", pricing strategy, price positioning, competitive price analysis, identifying pricing opportunities.
From dealership-groupnpx claudepluginhub marketcheckhub/marketcheck-cowork-plugin --plugin dealership-groupThis skill uses the workspace's default tool permissions.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Builds 3-5 year financial models for startups with cohort revenue projections, cost structures, cash flow, headcount plans, burn rate, runway, and scenario analysis.
Load the marketcheck-profile.md project memory file. If missing, prompt /onboarding and ask for ZIP+radius to proceed.
Extract ALL locations from dealer_group.locations[]. For each location: name, zip (US) or postcode (UK), state, dealer_id, dealer_type, franchise_brands, web_domain, cpo_program, cpo_certification_cost. Extract group preferences: default_radius_miles (→ radius), country.
Location selection: Confirm which location this vehicle is being priced for before any API call. Use that location's zip/postcode, dealer_type, and dealer_id for all comp searches and price predictions. Never use the group HQ zip for a different location's pricing. Confirm: "Pricing for: [selected location name] ([zip], [state])"
US tools: search_active_cars, decode_vin_neovin, predict_price_with_comparables, get_car_history. UK: search_uk_active_cars, search_uk_recent_cars (no VIN decode/ML — ask user for YMMT, use comp median). Dual pricing: report BOTH franchise+independent prices; selected location's dealer_type = PRIMARY comparison.
When pricing a vehicle, determine if it is Certified Pre-Owned (CPO):
is_certified=true, it is CPO.get_car_history shows the vehicle listed as certified.When a vehicle IS CPO:
predict_price_with_comparables with is_certified=true for the CPO market priceis_certified (or with is_certified=false) for the non-CPO market priceis_certified=true filter for apples-to-apples CPO comparablesCPO Market Price: $XX,XXX (based on N certified comps)
Non-CPO Market Price: $XX,XXX (based on N total comps)
CPO Premium: +$X,XXX (+X.X%)
Your Price: $XX,XXX (CPO unit)
Gap vs CPO Market: -$XXX (X.X% below CPO market — competitively priced)
When a vehicle is NOT CPO, skip the CPO-specific calls and price normally.
Dealer group manager needing competitive price positioning against nearby sellers to identify margin left on the table or aging risk.
| Required | Field | Source |
|---|---|---|
| Yes | VIN or YMMT | Ask |
| Auto | ZIP, radius, dealer_type | Profile |
| Recommended | Mileage, asking price | Ask |
VIN provided → decode first (US only; UK: ask for YMMT).
Use this when a dealer says "price check this VIN" or "am I priced right on this one."
Decode the VIN — Call mcp__marketcheck__decode_vin_neovin with vin to confirm year, make, model, trim, body type, drivetrain, engine, and transmission. Present the decoded specs to the user for confirmation.
→ Extract only: year, make, model, trim, body_type, drivetrain, engine, transmission. Discard full response.
Get predicted market prices (dual) — Make TWO calls to mcp__marketcheck__predict_price_with_comparables:
vin, miles, zip, dealer_type matching the source location's type (from profile). This is the primary comparison.dealer_type set to the OTHER type (franchise<>independent). This provides market context.
→ Extract only: predicted_price, comparable VINs/prices from each call. Discard full response.2a. CPO pricing (if applicable) — If the vehicle is CPO (detected per CPO Detection section above), make additional calls with is_certified=true for both franchise and independent predictions. Report CPO market price separately from non-CPO market price, and show the CPO premium.
Pull competing active listings — Call mcp__marketcheck__search_active_cars with year, make, model, trim (from step 1), zip, radius (from profile default_radius_miles, minimum 75), sort_by=price, sort_order=asc, rows=15, car_type=used. This returns the competitive set. Additionally, call mcp__marketcheck__search_active_cars with the same parameters but add dealer_type matching the source location's type to get a filtered competitive set from SAME-type dealers only.
→ Extract only: per listing — price, miles, dom, dealer_name, distance; plus total count. Discard full response.
Calculate price position — Compare the dealer's asking price (or predicted price) against the competitive set:
Deliver the verdict — Classify the price as Below Market (bottom quartile), At Market (middle 50%), or Above Market (top quartile) and recommend an action: hold, adjust down, or raise. Show both market prices in the output:
Franchise Market Price: $XX,XXX (based on N comps)
Independent Market Price: $XX,XXX (based on N comps)
Your Price: $XX,XXX ([your dealer_type] dealer)
Gap vs Your Market: $X,XXX (X.X% [above/below] [your type] market) ← PRIMARY
Gap vs Other Market: $X,XXX (X.X% [above/below] [other type] market) ← CONTEXT
Use this when a dealer provides a list of VINs (e.g., "check pricing on my front-line inventory").
Accept VIN list — Collect all VINs from the user. Confirm the market ZIP and radius once (applies to all).
Loop per VIN — For each VIN:
mcp__marketcheck__predict_price_with_comparables with vin, miles, zip, dealer_type (Primary — matching source location's type).mcp__marketcheck__predict_price_with_comparables with the same parameters but dealer_type set to the OTHER type (Secondary — franchise<>independent).is_certified=true for both dealer types.mcp__marketcheck__search_active_cars with the decoded YMMT, zip, radius (from profile, minimum 75), sort_by=price, sort_order=asc, rows=10, car_type=used.
→ Extract only: per VIN — predicted_price (franchise+independent), comp count, comp price range, total active supply. Discard full response.Build the price-position table — For each VIN, calculate: asking price, franchise market price ("Franchise Mkt"), independent market price ("Independent Mkt"), delta vs primary market, delta vs secondary market, percentile rank, competing unit count, and recommended action.
Prioritize actions — Sort the table by largest overpricing first (highest risk of aging), then by largest underpricing (margin opportunity).
Present the summary — Show the full table plus a rollup: total units scanned, count overpriced, count underpriced, count at market, estimated margin recovery if adjusted.
Use this when a dealer asks "what's the history on this trade" or needs context before making an offer.
Pull listing history — Call mcp__marketcheck__get_car_history with vin, sort_order=desc to get the full timeline of listings across dealers.
→ Extract only: per listing — date, dealer_name, price, dom, is_certified. Discard full response.
Decode the VIN — Call mcp__marketcheck__decode_vin_neovin with vin to get full specs.
→ Extract only: year, make, model, trim, MSRP. Discard full response.
Get predicted price — Call mcp__marketcheck__predict_price_with_comparables with vin, miles, zip, dealer_type.
→ Extract only: predicted_price. Discard full response.
Analyze the trajectory — From the history, extract:
Deliver trade-in context — Show the price trajectory chart, current market value, and flag any red flags (e.g., multiple dealer hops in a short period, steep price drops suggesting a problem unit).
Use this when a dealer asks "what's the market look like for this model" or wants a statistical overview.
Pull market stats — Call mcp__marketcheck__search_active_cars with year, make, model, zip, radius=100, car_type=used, stats=price,miles, rows=0. The rows=0 returns only stats without individual listings.
→ Extract only: mean, median, min, max, stddev for price and miles, total count. Discard full response.
Pull the cheapest listings — Call mcp__marketcheck__search_active_cars with the same filters plus sort_by=price, sort_order=asc, rows=5.
→ Extract only: per listing — price, miles, dealer_name, dom. Discard full response.
Pull the most expensive listings — Call mcp__marketcheck__search_active_cars with the same filters plus sort_by=price, sort_order=desc, rows=5.
→ Extract only: per listing — price, miles, dealer_name, dom. Discard full response.
Present the distribution — Show: mean, median, min, max, standard deviation for price and miles. Identify the price bands (quartiles) and show where the user's vehicle would fall.
Highlight outliers — Flag any listings priced more than 2 standard deviations from the mean as potential data quality issues or unique units (salvage, high miles, rare trim).
Use this when a dealer asks "who dropped their price" or "who is undercutting me."
Scan for recent price drops — Call mcp__marketcheck__search_active_cars with year, make, model, zip, radius=75, price_change=negative, sort_by=price, sort_order=asc, rows=20.
→ Extract only: per listing — price, price_change_amount, dealer_name, dom, distance. Discard full response.
Scan for recent price raises — Call mcp__marketcheck__search_active_cars with the same filters but price_change=positive, rows=10.
→ Extract only: per listing — price, price_change_amount, dealer_name. Discard full response.
Identify aggressive competitors — From the price-drop results, group by dealer and count the number of drops. Dealers with multiple recent drops are signaling inventory pressure.
Calculate competitive exposure — For each dropped listing, compare the new price to the user's asking price on similar units. Flag any that now undercut the user.
Recommend response — For each unit where the user is now being undercut, suggest whether to match, split the difference, or hold based on the user's DOM and the competitor's DOM.
Present: summary headline with vehicle and price-to-market ratio, competitive set data table (dealer, price, miles, DOM, distance), key market signals (supply count, price movement direction, percentile rank), and one actionable recommendation with dollar impact.