All Startup Ideas

Vehicle Recall Alert Service

VIN-based recall alerts for used car owners. Enter your VIN once, get lifetime SMS and email alerts the moment NHTSA publishes a recall for your specific vehicle.

Buying a used car means inheriting someone else’s paperwork mess. The previous owner moved three times, their email bounced, and now there’s a critical airbag recall sitting in NHTSA’s database with no way to reach you. Recalls don’t stop when ownership changes — but the notification system still relies on mail sent to whoever owned the car two years ago. Roughly 1-in-5 recalled vehicles stay unfixed for exactly this reason. People drive around with safety defects because nobody told them.

Built for Non-Technical, Solo Founders, Weekend Builders.

Carfax monetizes VIN data at scale but bundles it with full vehicle history; no standalone recall-alert product at sub-$10/mo exists.

A dead-simple service that tracks your VIN permanently. Enter it once, get monitored forever.

Suggested stack: Next.js 14 + TypeScript, Supabase, NHTSA API, Twilio SMS, Resend, Stripe + Vercel Cron. Weekend scope: about 10 hours.

The Problem

Buying a used car means inheriting someone else’s paperwork mess. The previous owner moved three times, their email bounced, and now there’s a critical airbag recall sitting in…

The Solution

A dead-simple service that tracks your VIN permanently. Enter it once, get monitored forever. When a recall hits your specific vehicle, you get an SMS and email instantly — no…

Market Research

NHTSA: 1-in-5 recalled vehicles in the US remain unfixed despite existing alerts — structural notification failure, not a marketing problem.

Competitive Landscape

NHTSA SaferCar / SaferCar.gov — Official government source. Free, authoritative, but reactive. Requires manual VIN lookups, no push alerts, no SMS. The source of truth, not a…

Business Model

Free ($0) — 1 VIN, email alerts only, weekly check frequency

Recommended Tech Stack

Next.js 14 + TypeScript — Landing + VIN entry form + dashboard. Server Actions for VIN validation (calls NHTSA decoder), account creation, and checkout.

AI Prompts to Build This

Copy these build prompts into Claude, Cursor, or your AI coding tool. Create a free account to unlock the full research behind them.

  1. 1. Project Setup

    Build the weekend MVP of "Vehicle Recall Alerts": enter a VIN once, and get a text when a new safety recall is published for your make, model and year. The alert says it may affect your car and points to the official VIN lookup to confirm.
    
    Stack: Next.js (App Router, TypeScript), Tailwind, Supabase (Postgres, Row Level Security, Auth with email magic link), the NHTSA vPIC API to decode a VIN and the NHTSA recalls API for recall notices, Twilio for the text. A Vercel Cron route runs nightly. Deploy on Vercel.
    
    Tables (Row Level Security on, each user reads only their own rows; recalls is shared and read-only):
    - profiles(user_id, phone, sms_opt_in_at)
    - vehicles(id, user_id, vin, make, model, year, decoded_at, created_at)
    - recalls(id, campaign_number, make, model, year, summary, consequence, remedy, report_received_on, fetched_at)  campaign_number is unique per make, model and year
    - recall_matches(id, vehicle_id, recall_id, first_seen_at)  unique on vehicle_id and recall_id
    - alerts_sent(id, match_id, channel, sent_at, delivered_at, provider_sid, status, latency_ms)
    
    Screens: /login, /vehicles (add a VIN and see its open recalls), /settings (phone and opt-in).
    Env vars (names only): NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (server only), TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_PHONE_NUMBER, CRON_SECRET.
    
    Do not build: billing, lifetime or monthly plans, an email alert, a dealer locator, a lifetime tier, matching by anything but make, model and year.
    Done when: npm run dev starts, you can sign in, and the five tables exist with Row Level Security on.
  2. 2. Core Feature

    Build the one feature that proves Vehicle Recall Alerts: one text for a new recall, never twice, with honest wording.
    1. Validate a VIN in code before any call: 17 characters, no I, O or Q, and a correct check digit in position 9. Then decode it with the NHTSA vPIC API to make, model and year, and show a clear message when the decode returns an error.
    2. Save the vehicle. Fetch the recalls for its make, model and year and show every open recall on the vehicle page as "already open". These do not trigger a text.
    3. A nightly cron route (protected by CRON_SECRET) takes the distinct make, model and year combinations of all tracked vehicles, fetches their recalls (cache a response for 6 hours and be gentle with the rate limit) and upserts them by campaign number.
    4. For each recall that is new to a vehicle after the vehicle was added, insert a recall_matches row. The unique key means a vehicle never gets the same recall twice.
    5. Text the opted-in owner: "Recall notice that may affect your [year] [make]: [summary, 100 characters]. Check your VIN: [link]". The link opens the vehicle page, which links to NHTSA's own VIN lookup to confirm.
    6. Record every text in alerts_sent. When Twilio reports delivery, set delivered_at and the latency. If a text fails, retry twice and then show a banner asking the user to check their number.
    Rules: never say a vehicle is definitely affected, because matching is by make, model and year. Honor STOP. Never alert on recalls that were already open when the vehicle was added.
    Empty state: before adding a vehicle, show the VIN field and where to find a VIN.
    Done when: a bad check digit is rejected, a valid VIN decodes, existing recalls show without a text, a new fixture recall texts once, a second cron run texts nothing and a failed text shows the banner.
  3. 3. Landing Page

    Build a one-page landing site for Vehicle Recall Alerts, a text when a recall hits your car.
    Hero: "Enter your VIN once. Hear about a recall the day it is published." Sub: "No mailing list and no manual checks. We watch the official recall notices and text you when one may affect your make, model and year." One button: Join the waitlist.
    Sections: a sample text and vehicle page, how it works in three steps (enter your VIN, we watch nightly, you get a text), and an FAQ on what a possible match means (confirm with the official VIN lookup), which countries are covered (the US first) and how your number is used.
    Waitlist: store the email in a waitlist table in Supabase. No other service.
    Style: Geist, an off-white background, near-black type, one deep blue accent.
    Done when: the page renders on a phone and a submitted email appears in the waitlist table.
  4. 4. Branding Package

    Use a design or image tool for this one. A coding agent cannot draw a logo.
    Brand for Vehicle Recall Alerts: pick a short working name, then design a wordmark and an icon that suggest a car silhouette with a small bell.
    Colors: off-white, near-black and one deep blue. Type: Geist, with Geist Mono for VINs.
    Deliverables: wordmark, icon, two recall chips (already open, new) that differ by shape as well as color, an alert text layout under 160 characters, and one launch graphic.
    Done when: each deliverable is saved in one folder and the two recall chips are distinguishable without color.