MD Motors — Dealership back-office.
Daily back-office for a Vermont used-car dealership. The dealer's existing Google Sheet is the input; the app pulls inventory from it, layers PDF window-sticker import with VIN dedupe, NHTSA decode on-demand per vehicle, and a CSV export ready for the accountant.
Inventory, sales, and profit for a used-car dealer
A Vermont used-car dealer was running the lot on a Google Sheet plus manual paperwork — inventory, sales, and accountant-side reporting were all hand-touched, and PDF window-stickers were re-keyed by hand whenever new vehicles came in.
Built a Next.js back-office that ingests the dealer's existing Google Sheet (read-only feed) into a Postgres-backed store, layered a PDF parser that extracts vehicles from window-sticker dumps and dedupes against the existing VIN list before insert, and gave the dealer an NHTSA decode button per vehicle so unfamiliar VINs can be enriched on demand.
- StackNext.js 15 App Router + TypeScript + Postgres. Cloudflare Turnstile gates the login route against bot traffic.
- Sheets feedGoogle Sheets API is read-only (`spreadsheets.readonly` scope) — the dealer's sheet keeps being the dealer's sheet; the app reads it and persists into Postgres.
- PDF importWindow-sticker PDFs parse into vehicle rows; existing VINs in the DB are fetched up-front so the importer can flag duplicates before insert.
- VIN enrichmentNHTSA decode is a per-row action in the UI — surfaced when the dealer wants to enrich a VIN, not blocked behind a mandatory step.
- PDF → DBWindow-sticker dumps become inventory rows with VIN dedupe in one upload, instead of hand-keying each vehicle.
- CSVAccountant-ready inventory export at `/api/mdmotors/inventory/csv` — `Content-Disposition: attachment`, daily-usable.
- Sheet → DBExisting dealer sheet remains the input; the app never writes back, so the dealer's workflow is preserved.
- Add a profit column to the accountant CSV by reusing `deriveProfit` from the inventory card so the dashboard tile and the export agree.
- Wire automated NHTSA decode on PDF import so a window-sticker upload finishes fully enriched without a per-row button click.
- Bidirectional Sheets sync so updates from the app surface back into the dealer's spreadsheet without breaking the read-only-feed posture.
More from the catalog.
- Maple-glazed duck$32.00
- Roasted carrots$14.00
- Bread + butter$8.00
- Wine pairing × 4$76.00
Split a tab, share a link, settle without IOUs

Vermont news, weather, and road conditions, updated daily
Want one of these for your team?
Two engagements open for Q3 2026. Discovery starts at $24K.