A dealer-management tool for US car dealerships. Paste a VIN and get the full NHTSA factory record, 150-plus fields with everything the database is missing flagged, then manage who can use the system through Keycloak.
Search VIN
LEXUS ES (2010)
Available data 33%
All Data
ABS
Not found
ActiveSafetySysNote
Not found
AdaptiveCruiseControl
Not found
AdaptiveDrivingBeam
Not found
AdaptiveHeadlights
Not found
AirBagLocCurtain
All Rows
AirBagLocFront
1st Row (Driver & Passenger)
AirBagLocKnee
1st Row (Driver & Passenger)
AirBagLocSide
All Rows
BodyClass
Sedan/Saloon
Doors
4
DriveType
FWD
EngineCylinders
6
EngineModel
2GR-FE
FuelTypePrimary
Gasoline
Make
LEXUS
Manufacturer
TOYOTA MOTOR MANUFACTURING
Model
ES
ModelYear
2010
PlantCountry
JAPAN
Series
Not found
TransmissionStyle
Not found
VehicleType
PASSENGER CAR
WheelBaseShort
Not found
Small US used-car dealerships run on a stack of browser tabs and a shared spreadsheet. They type the same 17-character VIN into a free lookup site, then re-key the spec by hand. The public data is all there in the NHTSA database; it just comes back as a wall of 150-plus fields, most of them empty for an older car.
The strategy is a wedge, not a suite. VIN decode is the hook, a daily job it does better than the free tools, and the platform it opens onto is inventory and a sales-lead pipeline. Get a dealer decoding VINs in SparkPlug every morning and you’ve earned the right to be where their inventory lives too.
SparkPlug DMS turns the raw decode into something you can read: a summary with make, model, year and a colour-coded Available data %, quick spec chips, and the full record behind one expandable card where every missing field is marked Not found rather than dropped. Access is handled by Keycloak: real login, realm roles, and a Users screen to enable, disable, edit or remove people.
I own product design and the front end, working against a two-backend API (a NestJS passthrough and a .NET Clean-Architecture service). It’s in active build: the decode and identity core is done; inventory and the lead pipeline are next.
Independent dealers already have a system of record they will not rip out. The way in is not a better suite, it is being indispensable for one job they do every day.
How I judge the core. A dealer who has never seen SparkPlug pastes a VIN, understands within seconds what the record is missing, and adds the car to inventory without asking anyone. And the front end builds and runs green with no backend at all, so the product can be shown and iterated anywhere.
I went through the free VIN sites and the incumbent dealer systems on the same task. The free tools dump raw NHTSA fields with no hierarchy; the incumbents bury the decode three screens deep behind a full inventory workflow. Nobody makes the decode itself fast and legible, which is the opening.
Watching how a dealer actually reads a spec sheet set the key interaction. They scan for specific facts, drivetrain, engine, airbags, and they need to know instantly whether a fact is missing from the data or the car genuinely does not have it. That is why every empty field is a visible Not found rather than a hidden row, and why the coverage percentage sits at the top: it tells them whether this decode is worth trusting before they read 150 lines.
Two constraints were set by the client’s reality, not by me: an existing .NET team and a running Keycloak instance. So identity was bought, not built, and the front end was designed to not care which of the two backends answered a request.
Each one traded speed or simplicity now for something the product needs later.
Search VIN
DecodeVinValuesExtended. Works with no SparkPlug backend running.LEXUS ES (2010)
Available data 33%
All Data
ABS
Not found
ActiveSafetySysNote
Not found
AdaptiveCruiseControl
Not found
AdaptiveDrivingBeam
Not found
AdaptiveHeadlights
Not found
AirBagLocCurtain
All Rows
AirBagLocFront
1st Row (Driver & Passenger)
AirBagLocKnee
1st Row (Driver & Passenger)
AirBagLocSide
All Rows
BodyClass
Sedan/Saloon
Doors
4
DriveType
FWD
EngineCylinders
6
EngineModel
2GR-FE
FuelTypePrimary
Gasoline
| Username | Name | Status | Role | Actions |
|---|---|---|---|---|
| mario | Mario Sassine | Active | admin | Disable |
| j.carter | John Carter | Active | sales | Disable |
| l.fischer | Lena Fischer | Inactive | sales | Enable |
The mockups on this page are rebuilt from the real front end (React + Tailwind); the decoded values shown are an illustrative NHTSA-style record, not live data.
What’s next, and what I’d watch. The Available-data % is a proxy, not a verdict: a current-year car can read low simply because NHTSA hasn’t populated it yet, and the UI shouldn’t make that look like a bad VIN. The real value is still ahead: inventory and the lead pipeline are where a dealer’s day actually happens, and the decode is only the wedge that gets SparkPlug onto their screen.