Inspiration

The first time your car breaks down, you freeze. A light you have never seen comes on, the car makes a noise it didn't make yesterday, and you are sitting there with one question: is this dangerous, or can I keep driving?

New drivers get hit hardest. They don't know what the light means, they don't know what is safe to touch, and they don't know what a fair repair looks like. So they panic, get towed when they didn't need to, or walk into a shop and say "it's making a weird noise, fix whatever it is." That sentence is expensive. In a ConsumerAffairs survey of 1,000 US drivers, 78% said they don't always trust their mechanic and about 80% had felt overcharged.

There are AI car apps, but they are downloads behind a paywall, and nobody installs an app on the side of a road. Everyone already knows how to text.

So what if help was just a number in your messages? You text it the way you'd text a friend who knows cars: "my car is shaking and there's a light on, what do I do?"

What it does

CarDrama is an AI car help agent that lives in iMessage. No app, no account. You tell it what the car is doing in words, with a photo, or with a voice memo, and it texts back.

  • It tells you how serious it is, first. Smoke, a soft brake pedal, a fuel smell, a flashing check engine light: it tells you to stop, get safe, and who to call. If you text it while driving, the only thing it says is to pull over.
  • It explains what is most likely wrong in plain language, asking one simple question at a time when it needs to know more.
  • It walks you through the checks that are safe for a beginner, like tightening a gas cap or reading the oil dipstick, and it refuses the ones that aren't, like opening a hot radiator cap or getting under the car.
  • It marks up your own photo. Don't know which thing under the hood is the coolant tank, or where the cruise control is? Send a photo and the same photo comes back with an arrow on the part.
  • It tells you if it's a known problem. "5 other 2023 BMW X5 owners have reported something similar to NHTSA", plus any open recall, which is a free repair at the dealer.
  • It finds help near you. Share your location in one tap and it sends a tow number, or up to three nearby shops or dealers with their phone, website, and an Apple Maps card.
  • It gives you one line to tell the mechanic, so you walk in describing the symptom like someone who knows what they're talking about. That is what makes you harder to overcharge. It can also read a photo of a repair estimate and explain each line.
  • It remembers your car. Insurance and roadside number, mileage, and a dated history of everything that has happened to it. It tracks oil changes and texts you the day one is due.

How I built it

I built CarDrama solo, as one TypeScript service running on Bun.

The iMessage side is Photon's spectrum-ts: messages, photos, voice memos in, and text, marked photos, voice notes, tapbacks, typing indicators, and map cards out. It also uses the native iMessage location request, so finding the nearest shop is one tap.

Safety is written in code, not just asked for in a prompt. A scared beginner will do what the reply says, so the reply has to be safe every time.

  • Before any AI model answers, 25 hard rules look for danger. If one fires, the reply is a fixed, pre-written template, and it sets a minimum urgency the model can never lower.
  • After the model writes a reply, a validator checks it against 15 forbidden instructions and 19 allowed checks, and a second model reviews it. A bad draft is rewritten once, then replaced with a safe fallback.

The urgency that goes out is never lower than what the rules found:

$$ \text{urgency} = \max(\text{rule floor},\ \text{model urgency}) $$

These rules are covered by 1,118 automated tests.

Each model has one narrow job:

  • Claude Sonnet 5.5 writes the reply, in 2 to 6 seconds
  • Claude Haiku 5.5 is the safety classifier and the reviewer
  • Gemini 3.8 Flash reads photos: warning lights, parts, hazards, even which car the photo shows
  • GPT-6 Astra double-checks every part before it gets marked
  • ElevenLabs turns voice memos into text and replies into voice notes

The marked photo is the part I care about most. One model finds the part and draws a box. That box is cropped and shown to a second model that is told nothing about what to expect. The arrow is only drawn if both are confident and both name the same part:

$$ \text{draw arrow} \iff \text{conf(vision)} \ge 0.7 \land \text{conf(verifier)} \ge 0.7 \land \text{same part named} $$

Pointing a beginner at the wrong part is worse than not pointing at all.

Facts come from data, never from the model. Phone numbers come from Google Places. Recalls and owner complaints come from NHTSA. The "5 other owners" number is a database count. If the model tries to write one of these itself, code removes it.

Tiger Data (Postgres with TimescaleDB and pgvector) is the memory: the car's file, its history, 1,549 embedded owner complaints searched by meaning, and a log of every safety decision the system made.

Challenges I ran into

The wrong arrow. Early on, the model reading photos kept pointing at the airbag when asked for the cruise control. Three photos in a row. I stopped guessing and measured: 25 real photos through the whole pipeline with two different vision models. One got 12 of 25 photos marked, the other got 20 of 25 and was twice as fast. I switched that night.

The safety checks were too strict. A driver sent a photo of a plastic shield hanging under the car. The model wrote a good answer twice, and my own safety layer threw both away, because "it could tear off, so call roadside assistance" looked like an instruction to tear a part off at the roadside. The driver got a vague non-answer. Making the checks strict was easy. Making them strict without silencing good advice was the real work.

A false alarm. A voice memo about a crunching noise in the steering wheel was read as "steering failure" and the driver was told to stop driving. The opposite of what a nervous driver needs.

One small change broke every reply. I added a few optional fields to the reply format. The small model accepted it, the main model rejected it, and every reply silently became a canned fallback for over an hour.

People don't talk in scripts. "I have another question" used to wipe the conversation and start over. Real texting jumps around, comes back an hour later, and asks "wait, what did you say that noise was?" It took a lot of work to make the agent keep up.

Accomplishments that I'm proud of

  • Every mark was on the right part. Across two runs of 25 real photos, 39 marks were drawn and all 39 were correct. The second model refused 14 boxes, and 8 of those really were wrong, like a side mirror labeled as a front tire. It knows when it doesn't know.
  • It works on my own car. I sent a photo of my BMW X5's steering wheel with "I'm trying to find the cruise control" and got it back marked in about 6 seconds.
  • The safety layers do their job on the real line. They caught real danger messages and stopped 25 unsafe or overconfident drafts before they were ever sent.
  • It feels like texting a friend. Short replies, one question at a time, a tapback, a voice note when you need to be talked through something. Nothing to install.

What I learned

  • An AI can't catch its own mistakes by rereading them. Every check needs something independent: a second model, a database, the driver's own words, or plain code.
  • When it comes to danger, believe whichever model sees it. When it comes to "you're fine", make them agree. If still unsure, ask the driver.
  • Measure before trusting a model. One small test reversed a decision I was sure about.
  • A prompt asks. Code enforces. Anything a stressed person might act on has to be enforced.
  • The best interface is the one people already have open.

What's next for CarDrama

  • A pixel-precise outline of the part, not just an arrow
  • Noticing patterns: "this is the third time you've mentioned this noise in two weeks"
  • Booking the shop appointment, or calling the dealer about a recall, for you
  • Reading an insurance card from a photo
  • Hands-on guidance for hybrids and EVs, which today get safety triage only
  • Spanish, and full support for drivers with no data, over plain SMS

CarDrama is an AI, not a mechanic, and it says so in its first message. The goal isn't to replace the shop. It's to make sure a new driver never walks into one scared and clueless again.

Built With

Share this project:

Updates

Submission history