AIProductFeb – May 2025
A vehicle maintenance tracker with a Gemini-backed assistant that explains services in plain language. One model call, rendered verbatim, with no verification layer between the answer and the screen.
Next.js · Vercel · JavaScript · Convex · Gemini API · NextAuth · Resend · Tailwind CSS

Vehicle maintenance is confusing and expensive. Most people don't know when to service their car, what maintenance actually means, or whether they're being overcharged by mechanics. Missed maintenance leads to costly repairs; unnecessary maintenance wastes money.
Existing solutions are either too technical (maintenance manuals), too generic (calendar reminders), or vendor-locked (dealership apps). People need a personal maintenance assistant that speaks plain English and keeps their specific vehicle history.
I built FIXR as a personal vehicle maintenance companion that tracks service history, sends intelligent reminders, and provides AI-powered advice through "Fixy," a mechanic assistant that explains maintenance in everyday language.
The app uses a dashboard-first interface showing a vehicle health score, pending tasks, and AI-generated maintenance suggestions based on mileage and service history. Each suggestion includes cost estimates and the reasoning behind the recommendation.
Integration with Google Maps helps users find nearby mechanics with ratings and reviews. The AI assistant can analyze service quotes, explain technical terms, and help users decide whether recommended service is actually necessary.
Why Convex over Supabase or Firebase? Convex provides real-time reactivity with a better TypeScript experience. Queries automatically update when data changes, perfect for maintenance reminders that depend on mileage and time. The reactive queries mean no manual cache invalidation.
Why Gemini API? Honestly, it was the model I had free API access to, and a sentence of plain-language explanation is not a hard generation task. I don’t have a benchmark putting it ahead of the alternatives here, and claiming one would be inventing it. The system prompt supplies vehicle context and asks for cost awareness, a safety-first framing, and hedging when unsure — which shapes the output but enforces nothing, because nothing checks the result.
The reminder system uses Convex scheduled functions that run daily, checking each vehicle's maintenance schedule against current mileage and time since last service. Resend handles email delivery with customizable notification preferences.
NextAuth with database sessions provides secure authentication. I chose the Credentials provider for email/password auth, storing hashed passwords in Convex. Session tokens are HTTP-only cookies to prevent XSS attacks.
The Google Maps integration uses the Places API to search for mechanics within a configurable radius, filtering for high ratings and returning detailed information including hours, phone numbers, and user reviews.
Challenge: AI hallucinations about maintenance costs and schedules — still open, and the one I’d fix first. What exists is prompt instruction telling the model to hedge on specs it isn’t sure about, which is the model policing itself. An unenforced instruction is a preference, not a constraint, and I shouldn’t have been counting it as one. I also made it worse once: an early prompt told the model to defer to the owner’s manual when unsure, and I replaced that with an instruction to give specific figures when confident — solving a vagueness complaint by removing the caution instead of adding a way to check. The disclaimer that does exist only renders on the empty state, so it disappears the moment an answer appears. Lesson: a safeguard you can’t point at in code isn’t a safeguard.
Challenge: Users input mileage inconsistently (some regularly, some sporadically). Solution: Added mileage estimation based on time and average driving patterns, with clear UI indicators when using estimated vs. actual mileage.
Challenge: Email deliverability for reminders. Solution: Switched from SendGrid to Resend, implemented proper SPF/DKIM records, and added a digest option to reduce email volume (weekly summary instead of individual reminders).
Challenge: Mobile users needed quick access while at mechanics. Solution: Built a progressive web app with offline support for viewing service history, even without internet connection.
Key Lesson: AI is powerful for explanation and advice but needs guardrails for factual information. Users trust the app for maintenance decisions, so accuracy is critical.
If I rebuilt this, I'd add OCR for service receipts (snap a photo to auto-populate service details) and integration with OBD-II readers for automatic mileage tracking.
Eight projects, four with a model in the loop.