MD Motors: inventory, sales and profit for a used-car dealer
A Vermont used-car dealer ran the lot from a Google Sheet and paperwork, and every new window sticker was typed in by hand. MD Motors reads the sheet, imports the stickers and gives the accountant an export they can use.
- Client
- A used-car dealer in Vermont
- Year
- 2025
- Platforms
- Web
- Our role
- Design and engineering
- Stack
- Next.js, TypeScript, PostgreSQL, Google Sheets API
- See it
- Behind the client’s login
The problem
Inventory, sales and the reports the accountant needed were all kept by hand in a Google Sheet and on paper.
Window stickers arrived as PDFs, and each vehicle on them was typed into the sheet again before it could be sold.
What we built
A back-office web app that reads the dealer’s Google Sheet into its own database without ever writing to it, so the sheet keeps working the way the dealer is used to.
Window-sticker PDFs are parsed into vehicle rows, and VINs already in stock are flagged as duplicates before anything is saved. A decode button per vehicle fills in details from NHTSA when the dealer wants them.
The dealer’s Google Sheet stays the source. VIN details are decoded per vehicle, only when the dealer asks.
How it is built
A Next.js application on PostgreSQL. The Google Sheets connection is read-only by design, and the login route is protected against bots.
- Stack
- Next.js App Router, TypeScript and PostgreSQL, with Cloudflare Turnstile on the login route
- Sheets feed
- Google Sheets API with a read-only scope. The app reads the dealer’s sheet and never writes back to it
- PDF import
- Window-sticker PDFs become vehicle rows, checked against existing VINs before insert
- VIN details
- NHTSA decode is a per-vehicle action, available when needed rather than a required step
- Export
- An inventory CSV download in a format the accountant can open directly
Results
Window-sticker uploads become inventory rows in one step, with duplicates caught, instead of each vehicle being typed in.
The accountant gets a CSV export of the inventory, and the dealer’s sheet stays as it was.
What is next
- Add a profit column to the accountant’s export, using the same calculation as the inventory card.
- Decode VINs automatically during PDF import, so an upload finishes fully filled in.
- Two-way sync with the dealer’s sheet, without giving up the read-only default.
- Design and engineering
- 802.software
- Project lead
- Baris Taskiran
- Verified
- Against the running code on
Related service: Internal tools and business systems