Skip to main content

Stellantis Domain Knowledge

This document covers the Stellantis (Chrysler / Dodge / Jeep / Ram / Fiat / Alfa Romeo) product data hierarchy and identifier system as it relates to this codebase. Read this before working on any Stellantis asset, component, or model-resolution logic in projects/ai_stellantis or packages/ai_core.

A more detailed reference with worked examples lives in Confluence: Stellantis Product Data Hierarchy & Identifiers (and its appendix).


The Hierarchy

Brand                     C / D / J / R / X / Y
Vehicle Line Wrangler, Grand Cherokee, Ram 1500, ... [public configurator only]
Model Group 2-char code: "JM", "WM", "TP" [allocation PDF + Fastest Moving Vehicles page]
└── Model Code 6-char code: "JLJL72", "WLJH74" [everywhere]
└── Trim e.g. "Laredo X", "Willys" [expressed via CPP/LLP codes]

Vehicle Line and Model Group are parallel schemes from different surfaces — not a parent-child hierarchy. A single Vehicle Line spans many Model Groups. Model Groups usually contain Model Codes from one Vehicle Line but not always (e.g. MN contains both Pacifica and Voyager).


Critical Identifiers

Model Code (6-char)

The primary product identifier. Present in DealerConnect inventory, the ordering wizard, POC PDFs, and the public API. It identifies a body style + drivetrain combination. A single model code hosts multiple trims.

CPP — Customer Preferred Package

A 3-char option code (e.g. 22B, 23B, 22W) representing a specific orderable QOP (Quick Order Package / Customer Preferred Package — these terms are interchangeable). Every vehicle has exactly one CPP applied.

  • Present in all sources: DealerConnect inventory Pkg column, ordering wizard, POC PDF, public API
  • Multiple CPPs can exist for the same marketed trim — the second character encodes powertrain variant (e.g. 22W = 2.0L turbo Willys, 23W = 3.6L V6 Willys)
  • The last character is the trim identifier (see below)

LLP — Lower Level Package

A 3-char abstraction code (e.g. 2TW, 2TD, 2TJ) that collapses all CPP variants for a trim into one value.

  • Present in the public API only (llp field, configurator URLs)
  • Absent from DealerConnect entirely — never attempt to look it up there
  • Multiple CPPs map to one LLP: 22W and 23W both → 2TW
  • The last character is always the same as the CPP's last character for that trim

Trim Identifier (single char)

The last character of both the CPP and LLP. This is the minimal cross-source trim identifier within a model code.

CPP: 22W  →  trim_identifier = W  (Willys)
LLP: 2TW → trim_identifier = W (same)

Trim identifiers are consistent within a model code but not globally unique — the same letter can mean different trims on different model codes.

ccode

A composite string used by the public configurator API (e.g. CUJ202620WLJH74E). Anatomy:

C  U  J  2026  20  WLJH74  E
│ │ │ │ │ │ └── Trim variant character (display-ordering artifact — NOT stable across model codes or years)
│ │ │ │ │ └────────── Model code (6 chars)
│ │ │ │ └────────────── Internal model year code (opaque, ≠ calendar year)
│ │ │ └──────────────────── Model year (4 digits)
│ │ └─────────────────────── Brand letter
│ └────────────────────────── Always "U" (US market)
└───────────────────────────── App source: "C" = configurator, "I" = inventory

The ccode does not appear anywhere in DealerConnect. Do not attempt to use it as a join key against inventory or DealerConnect-sourced data.


Canonical Model Key

(model_year, model_code, trim_identifier)

Where trim_identifier = last char of CPP = last char of LLP.

This is the only identifier that is:

  1. Unique per marketed trim
  2. Present in both DealerConnect-sourced data and the public API
  3. Stable within a model year

Do not use the full CPP as a model key — multiple CPPs map to the same trim. Do not use the LLP as a model key — it isn't in DealerConnect. Do not use the ccode trim variant character as a trim key — it is not consistent across model codes or years.

The model entity in the Stellantis Dagster project is keyed on model_code, model_year, and trim_identifier. The specific CPP is a vehicle-configuration detail stored at the inventory level, not part of model identity.


Common Pitfalls

Trim identifiers may shift between model years. The same marketed trim can have a different trim letter in a different model year. Example: Laredo X on WLJH74 is D in MY2025 (LLP 2TD) and J in MY2026 (LLP 2TJ). In MY2026, D refers to a different trim entirely (Laredo). This is why model_year is a required component of the canonical key — trim letter alone cannot track a trim across years, and a join on (model_code, trim_identifier) without model_year will silently conflate different trims.

The Model name column in DealerConnect inventory always shows the model code's generic name, not the trim. A row with Model = "WLJH74 - GRAND CHEROKEE LAREDO 4X4" and Pkg = 22J is a Laredo X, not a Laredo. The trim is only determinable from the Pkg column.

Model Group allocation does not constrain trim. The allocation report's product label (e.g. "GC LAREDO") describes the model group, not an ordering constraint on trim. A dealer with WM allocation can order any trim on any model code in that group.

Model Groups are not derivable from Model Codes. There is no encoding relationship between the two. The only source of truth for the mapping is the JavaScript arrays on DealerConnect's Fastest Moving Vehicles page, parsed and stored in ai-app-stellantis.dealerconnect.allocations_{dealerCode}.

LLP middle character (T vs D) is not fully characterized. Both appear in the data. Do not attempt to derive or predict it.

The ccode app-source prefix (C vs I) must not be stripped when using ccodes as identifiers. Early pipeline versions stripped it and produced unreliable cross-source matches.


Where Each Identifier Appears

IdentifierDC Inventory CSVDC Ordering UIDC Allocation PDFPublic API
Model Code✓ (Model col)✗ (resolve via model group)✓ (in ccode)
Model Year✗ (contextual)
Model Group✓ (FMV page)
CPP✓ (Pkg col)
Trim identifier✓ (last char of Pkg)✓ (last char of LLP)
LLP
ccode
VON
VIN✓ (post-production)