Skip to main content

Michael Palmer

Dealership intelligence built by someone who has run the dealership

Twenty-five years in dealerships came first, followed by the technical work to model them properly. ARPI combines that operating experience with analytics and software engineering. You can explore my GitHub portfolio (opens in a new tab) to see other projects I’ve built across AI, data, and software development.

My work sits at the intersection of automotive retail, analytics, AI, and software engineering. For my professional background, experience, and current work, visit my LinkedIn profile (opens in a new tab).

  1. Dealer systemsDMS, CRM, inventory, marketing
  2. Governed modelConformed keys, declared grain
  3. KPI layerBoth sides of every ratio
  4. Management actionA figure you can interrogate
The middle two stages are the work. Dealerships already have the first, and every manager already wants the last.

Deterministic synthetic data.Granite Auto Group is fictional.Real-engine validation pending.How this is governed

Automotive retail experience

Sales, finance, management, and the systems underneath all three

More than 25 years selling cars, writing deals in finance, managing departments and administering the systems the numbers come out of. Enough to know which reports get used and which get closed without reading.

  • Sales
  • F&I
  • Dealership management
  • CRM and DMS administration
  • Inventory and lead operations

Four system families, each with its own idea of what a unit is and when it counts. That disagreement is why the management questions on this site read the way they do.

Technical transition

Computer science retraining, applied to a domain already understood

Computer science study and technical retraining, then the work in this repository: Python for the generators and validation, PostgreSQL and SQL for the warehouse and reporting layer, TMDL and DAX for the semantic model, TypeScript and Next.js for this site.

The direction matters. Learning the technology to model a business already understood produces different decisions from learning a business to practise the technology, and the difference shows up in the exclusion rules rather than in the architecture diagram.

Portrait pending

No approved photograph is committed to this repository, and this site does not use a stock image of a person on a page that names one.

Michael Palmer

Automotive retail operations, then analytics engineering.

README.mdauthorView README.md (author) on GitHub (opens in a new tab)
Domain
Automotive retail, franchise and independent
Systems worked in
CRM and DMS administration, inventory, lead management, desking
Building with
Python, PostgreSQL, SQL, DAX, TMDL, TypeScript, React, Next.js
This project
Synthetic data, MIT licensed

Analytical philosophy

A number a manager cannot interrogate is a number they will not act on

Four positions, each enforced somewhere in this repository rather than merely held.

  • Show the arithmetic, not the conclusion.

    Every KPI states its formula, both sides of its ratio, its date basis and its null rule.

  • Publish the limitation next to the measure.

    Each caution is a required field on the KPI it applies to, so it travels with the number.

  • Rank people carefully or not at all.

    Volume alone never ranks an employee. Lead quality, traffic, tenure and mix change what a number means about a person.

  • Prove it, then say it.

    Pending is reported as pending. Static validation proves the model's shape and is never presented as proving its arithmetic.

Three decisions that came from the floor, not from a dataset

Calls that cannot be made by someone who has not had to defend a gross number to a general manager.

  1. 01A manager asks

    Why is total gross holding while front-end gross is collapsing?

    In the repositoryKPI-GRS-001 / 002 / 003

    Front-end, back-end and total gross stay separate through the warehouse, the reporting views and the KPI layer. They are never summed early.

    A store holding total gross while front gross collapses is in a materially different position from one where both are steady. Combining them destroys the diagnosis, and the diagnosis is why the report was opened.

  2. 02A manager asks

    Which of my salespeople are actually performing?

    In the repositoryKPI-SLS-001 interpretation caution

    Volume alone never ranks a person in this model. The employee measures carry an interpretation caution on the measure itself, not in a document.

    A leaderboard built on volume rewards whoever the lead routing favours and punishes whoever is closing hard deals slowly. Publishing one loses the sales floor in a week.

  3. 03A manager asks

    How much aged inventory am I actually carrying?

    In the repositoryKPI-INV-003 and KPI-INV-004

    Daily snapshots at vehicle, store and day grain. Median age leads and the mean is published beside it, because the gap between them is the finding.

    Inventory age is right-skewed. A handful of two-hundred-day units drags the mean up and makes a healthy lot look sick, or hides a bad tail inside a comfortable average.

Why ARPI exists

To demonstrate the work on artefacts rather than on assertions

Eight capabilities, each one a file a reviewer can open. No proficiency rating, because a self-assessed percentage tells you nothing the code does not tell you better.

docs/research.mdresearch evidence baseView docs/research.md (research evidence base) on GitHub (opens in a new tab)

On the fictional dealer group

Granite Auto Group is invented. Three stores with different mixes, so a group-versus-store comparison has something to compare. No figure in this project describes a real business.