Back to work
Product · Marketplace car alerts

Carplow

Watches Facebook Marketplace for each saved search, grades every listing with Claude against market value, and emails the grades you pick. Live for a small group of friends: Next.js on Vercel, AWS CDK back end.

Live2026Architect and builder
Carplow search page: a saved search for a 1986 to 1987 Toyota 4x4, the plow truck clearing toy cars while a tachometer shows the sweep in progress, and graded listings below

Problem

Finding a fairly priced used car on a marketplace means refreshing searches, remembering what you saw yesterday, and doing mental math on mileage and condition for every listing. Good cars go in hours.

The marketplaces offer saved searches but no judgment: no sense of whether a price is fair for the mileage, whether a listing is really a parts car, or whether it looks like a scam.

Approach

  1. 01

    Define a watch profile (make, model, years, radius, budget) and collect matching listings on a schedule with Apify, so the system does the refreshing.

  2. 02

    Grade every listing with Claude against market value, adjusted for mileage and condition, and flag car-versus-parts, toys and scam signals. The grade is explained in plain language, not just a score. The model provider is a setting: Amazon Bedrock or the Anthropic API.

  3. 03

    Alert on what matters: new listings that grade well and price drops on listings already being watched, by email through SES.

  4. 04

    Keep the infrastructure small and reproducible: everything on AWS is defined in CDK, and the dashboard is a Next.js app on Vercel reading from DynamoDB.

Architecture

gradeApifyMarketplace listingsLambda runnerFilter · dedupeDynamoDBListings · profiles · gradesSES alertsNew · price dropClaude gradingValue · condition · scamsNext.js dashboardVercel

Apify collects listings on each search's schedule; a Lambda filters them, sends each new one to Claude for grading and saves the result in DynamoDB; SES sends alerts; the Next.js dashboard on Vercel reads the same table. All AWS resources are defined with CDK.

Same engine for motorcycles: motoplow.com

Built with

  • Next.js
  • Vercel
  • AWS CDK
  • DynamoDB
  • Lambda
  • Amazon SES
  • Claude (Bedrock or Anthropic API)
  • Apify

Outcome

Live for a small group of friends. Each search sets its own schedule (from manual to monthly) and which grades trigger an email; every run has a hard dollar cap.

Being tuned on real listings: logged-out Marketplace results are thin, so search quality and grading rules are the current focus.

The same engine now runs Motoplow at motoplow.com, the motorcycle version: watch profiles, grading and alerts carried over, with the rules tuned for bikes.

Decisions

  • CDK for all AWS resources over console setup

    because the whole stack can be torn down and rebuilt in minutes, and the diff is reviewable.

  • A grade with an explanation over a score alone

    because a number nobody trusts gets ignored; a sentence that says why gets acted on.

Next

Pueblo Unido

A listings site and an AI agent that answers buyers in English and Spanish, qualifies leads, books viewings and hands off to Diana, the agent, when a person adds value. Live for a working brokerage.