top of page

How We Used AI to Shortlist Used Cars in 2026

  • Writer: Harshal
    Harshal
  • 4 hours ago
  • 4 min read

n8n, OpenAI, and Cursor workflow to extract specs, rank options, and choose showrooms

We wanted to avoid overpaying for a used car and avoid months of manual comparison. For this, my wife and I built an AI agentic workflow that extracted relevant details from used car listing pages and turned the results into a shortlist of cars and showrooms worth visiting. The workflow reduced both price risk and research time. AI helped us research 144 cars virtually within a few days, and took just 1 minute to process each car listing.

We captured our prioritized list for 2026 here. Below, I cover the automation workflow and what we learned building it.

You need 8 minutes to read this.

AI-assisted car comparison illustration with a yellow selected car.
AI-assisted car comparison illustration with a yellow selected car.

Related:

Problem Context

Like 2021, we wanted a used car to reduce depreciation and upfront cost. We considered several brands. Listings were everywhere. The same make and model often came in different SKUs with different option packages, like mileage and number of owners. We had to find a SKU that covered our must-haves and, when possible, our nice-to-haves.

Research became the bottleneck. We faced a trade-off: overpay and decide quickly, or spend too long comparing the wrong details. We wanted deep research and a decision in a few hours, not a few months.


MVP Attempt

We created a ChatGPT custom project and uploaded our list of priorities. We pasted secondhand car listings into the project and asked the AI to analyze each listing against our priorities. We used the AI output to write a spreadsheet note: which criteria the SKU met and which it missed.

It worked for the first few options. It showed us that AI could evaluate a SKU from listing information once we defined the criteria clearly.

This MVP approach couldn't scale as the number of listings grew. The work became repetitive and we struggled to keep the output consistent enough to compare cars side by side.

But it proved that AI could evaluate a SKU from listing information once we defined the criteria clearly. MVP's purpose accomplished.

Solution via n8n automation

We built an n8n workflow that turned messy listing pages into structured data we could decide from. We sent either:

  • A listing URL (when scraping worked)

  • Pasted webpage content (when the site blocked scrapers)

From there, an AI agent extracted the key fields, for example mileage, year, price, etc. The agent forced the output into a fixed CSV structure. Then the workflow appended the row to a Google Sheet.

When the workflow failed, we reported the error back. That feedback loop helped us update the automation instead of relying on "hope it works" iterations.

n8n workflow to parse car listing pages and extract relevant details
n8n workflow to parse car listing pages and extract relevant details

Filling Missing Car Specs

Not every listing included the specs we needed.

When a row lacked a detail, the AI agent used web search tools (Perplexity and Serp API) to fill the gap. It focused on specs that varied by model or trim, like boot space and rear-seat width. After that, the rows became comparable.

Trust and verification

Structured rows can still be wrong: scraper gaps, bad trim mapping, stale manufacturer data, or a model mixing specs across trims. We did not treat the sheet as authoritative on day one.

Early on we spot-checked some listings against the sheet and the original pages. We ran a tighter loop at first: we gave the workflow pasted page text more often than bare URLs. Scrapers were the weakest link, and pasted text gave the agent the same text we saw. We stress-tested the automation. When outputs were repeatable and sane, we let the workflow carry more of the load and we pulled back human-in-the-loop steps. Verification stayed proportional: we stayed cautious while the pipeline was new, and we used a lighter touch once we trusted the shape of errors we had already flushed out.

From Data to a Shortlist

Extracted data still overwhelmed manual analysis. We used Cursor to turn the Google Sheet into a practical decision step.

Cursor wrote a Python script that grouped listings, highlighted what stood out, and recommended:

  • which showrooms to visit next in person

  • which brands or makes and models to consider beyond what we already saw

This helped us go from individual listings to structured data to actionable insights. The workflow automated collection, normalization, and first-pass comparison. Final buying judgment stayed manual.

Python script's input and output
Python script's input and output

Tech Stack

  • n8n for workflow orchestration.

  • Telegram and n8n ChatHub for input.

  • Tavily AI web scraper for URL extraction.

  • OpenAI for structured field extraction.

  • Perplexity and Serp API for filling missing specs.

  • Google Sheets for storing and comparing rows.

  • Cursor to generate a Python script for shortlist analysis.

the transformation from a car listing to a spreadsheet to an AI recommendation
the transformation from a car listing to a spreadsheet to an AI recommendation

Learnings

  • Some sites were messy enough that we could not fetch them with scrapers. Examples included YouTube, LinkedIn, Facebook, and many e-commerce sites, including Smyths Toys and second-hand car purchase websites. In those cases, we either built a complicated fix or used a short-term human-in-the-loop workaround. We handled it by copy-pasting listing information from the page.

  • Some integration platforms had their own nuances. For example, when we used Telegram as our entry point, it split long messages into two parts. Empirically, both parts triggered the workflow separately but they shared the same timestamp. I built a workaround pub/sub mechanism (simple queue using a n8n datatable) to join those parts before processing.

  • When we saw repeated parsing failures, we surfaced them to the Builder and the AI coding agent. Most failures came from the n8n structured output parser. I started reporting that parser error back to Telegram where I could review it and fix the workflow.

  • Telegram sometimes could not handle markdown data. For those cases, I added a fallback to plain text.

  • The n8n workflow turned messy listing pages into consistent rows. But, to reach more accurate decision, we decided to use AI coding agents. Cursor helped us use that data to choose the next showrooms and models. We avoided overpaying without losing months to manual comparison.

Related:


bottom of page