Daily Craigslist repricing desk for used car dealers
Open one screen each morning to see every live vehicle listing with its engagement, days on lot and cost per contact, then reprice or rewrite on the spot.
Build me an app I open every morning to run the Craigslist repricing desk for my used car dealership. I have bulk posting access in the For Sale By Dealer category and my vehicle inventory lives in a Google Sheet. This app is where I decide which listings to reprice, which to rewrite, and which to take down. It is a working surface I sit in front of, not an unattended automation, so nothing should run on a schedule and every change to a listing happens because I clicked something.
The main screen is a single table of all my live Craigslist postings. Build each row from Craigslist Get All Postings Stats for the 30 day engagement numbers (impressions, views, contacts, favorites) and Craigslist Get Posting Status so I only see postings that are actually live, with expired, removed, and deleted ones filtered out of the default view. Use Craigslist Get Single Posting Stats when I open a single row and want its numbers refreshed on their own rather than reloading the whole table.
Join that against my vehicle inventory in Google Sheets using Get Values. My sheet has one row per vehicle and includes the Craigslist posting ID, so match on that column. Every table row should also show VIN, days on lot, cost basis, and current asking price from the sheet. Let me configure the spreadsheet ID, the tab and range, and which column holds each field, and persist that configuration so I set it once. If a posting has no matching sheet row, or a sheet row points at a posting ID that is not live, show it in a small reconciliation section under the table instead of silently dropping it, because that mismatch is usually a data problem I want to fix.
Compute these columns on top of the joined data: contacts per day over the reporting window, days since the last contact, days on lot from the sheet, and an estimated cost per contact. Cost per contact is the per posting fee divided by contacts in the window, using a per posting fee I can set in app settings and change at any time, defaulting to something sensible like 5 dollars since dealer vehicle ads typically run a few dollars each. When a posting has zero contacts, do not divide by zero: show the full fee as spent with no contacts to show for it and sort those to the worst end. Highlight the cost per contact when it goes above a threshold I can configure, so I can see at a glance which vehicles are burning budget.
I need to sort and filter this table hard, because the whole point is to make stale units float to the top. Give me sortable columns for contacts per day, cost per contact, days on lot, and total contacts, plus quick filters for zero contacts in the last seven days and days on lot over 45. Let me combine filters, and give me a default view on open that surfaces the stale and expensive units first so my morning starts with the problem cars. Show a few summary tiles across the top: live postings, total contacts in the window, blended cost per contact, and how many units are over the days on lot threshold.
Clicking a row opens a detail panel for that vehicle. Populate it with Craigslist Get Posting Body, Get Posting Price, and Get Posting Images, alongside the engagement numbers and the inventory context already in the row so I can see cost basis and asking price while I decide. From that panel I want to drop the asking price with Edit Posting Price, rewrite the description with Edit Posting Body, add a photo with Upload Image, lead with the best shot using Reorder Images by dragging the images into the order I want, and take a sold unit down with Delete Posting. Ask me to confirm before deleting, and show the current price and the margin over cost basis next to the price field so I never cut below what the unit cost me without knowing it. After any edit, refresh that posting's data so the panel reflects what is actually live on Craigslist rather than what I typed.
Never let me edit the VIN. Craigslist locks the VIN after the original posting in the dealer category, so display it as read only text in both the table and the detail panel, and if I try to change it explain that fixing a VIN requires taking the listing down and posting the vehicle again. Do not build a VIN field into any edit form.
Two things about the engagement data that need to show up in the interface. Craigslist stats only cover a rolling 30 day window that runs through midnight UTC yesterday, so label the window on screen and never imply the numbers include today. And the counts are all requests rather than unique viewers, so note that these are relative signals for ranking listings against each other, not a count of individual shoppers.
Two hard constraints on scope. There is no create posting operation available, so this app manages existing postings only: do not build anything that creates, schedules, or reposts listings, and do not offer it in the interface. And a posting can hold at most 24 images, so block uploads past that limit with a clear message instead of letting the call fail.
Persist my settings across sessions: the per posting fee, the days on lot and no contact thresholds, the cost per contact highlight threshold, the sheet configuration, and my last used sort and filters, so the app opens the same way every morning.
What does this prompt do?
- One table of every live listing showing 30 day impressions, views, contacts and favorites next to the VIN, days on lot, cost basis and asking price pulled from your inventory spreadsheet.
- Sort and filter so stale units float to the top: contacts per day, no contacts in the last seven days, and anything sitting on the lot longer than 45 days.
- An estimated cost per contact on every row, based on the per vehicle posting fee you set, so you can see which listings are burning budget.
- Click any row to open a detail panel where you can drop the asking price, rewrite the description, add a photo, lead with your best shot, and take a sold unit down.
What do I need to use this?
- A Craigslist account with bulk posting access in the For Sale By Dealer category
- A Google account with your vehicle inventory in a Google Sheet
- A column in that sheet holding the Craigslist posting ID for each vehicle, so listings and inventory line up row by row
- The posting fee you pay per vehicle, which drives the cost per contact math
How can I customize it?
- Change the staleness thresholds, such as 45 days on the lot and seven days with no contacts, to match how fast your lot actually turns.
- Set the per vehicle posting fee to whatever your market charges, since dealer vehicle ads commonly run a few dollars each and some categories cost more.
- Point the app at different columns in your sheet if your inventory also tracks trim, mileage, or a floor price you never want to drop below.
FAQs
Can I create new Craigslist listings from this app?
How current are the engagement numbers?
Do views and contacts count each shopper once?
Can I correct a VIN that was entered wrong?
Does my inventory have to be in Google Sheets?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.
Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.
See the projected bounce rate for any outbound send before it goes out, and keep the launch button locked until the list is clean enough to be safe.
Pick any date range and see what each device in your home actually cost to run, not just how many kilowatt-hours it used.
Search three months of global coverage on your topic, rank the outlets actually writing about it, and draft a tailored pitch for each one.
Stop guessing which cars to reprice.
Open one screen each morning and see exactly which listings have gone quiet and what each one is costing you.