All Case Studies
Technical Build Story· 3 weeks· $3,900 CAD

How We Built TrustDrive

GPT-4o Vision inspection platform. Mobile-first PWA. 3 weeks.

Base44ReactGPT-4o VisionStripe CheckoutQR Code GenerationVIN Lookup APIMobile-First PWA
View Full Case Study (Outcomes & ROI) →

The Problem

Canada's private vehicle market (Kijiji, Facebook Marketplace, AutoTrader private listings) processes billions in transactions per year with almost no trust infrastructure. Sellers can't credibly prove condition. Buyers can't verify without hiring a mechanic or paying $40–$80 for a Carfax report that covers title history only — not actual physical condition.

Architecture Overview

TrustDrive is architecturally the simplest of our five projects, but the AI integration is the most technically novel. The core flow: seller uploads photos → GPT-4o Vision analyzes each → analysis aggregates into a report → report generates a QR code → seller pays to publish the report → public QR URL serves the report to buyers.

We built it as a mobile-first PWA. No native app — the entire inspection is done in Safari or Chrome on a phone, which can access the camera directly. This avoided the App Store review delay and let us ship faster. The trade-off is no push notifications, but sellers don't need them — they complete the inspection once and share the report.

Database Design

Inspectionseller_id, vin, year, make, model, mileage, status, report_id, created_date, expires_date
InspectionPhotoinspection_id, zone, photo_url, ai_assessment, ai_flags[], ai_confidence, analyzed_at
InspectionZonename, label, description, required_photos, prompt_text
Reportinspection_id, qr_code_id, public_url_slug, overall_condition, summary, flags[], published, paid, stripe_payment_id, view_count
VINDatavin, year, make, model, trim, engine, recalls[], history_flags[]
SellerDashboardseller_id, total_inspections, total_reports, total_views

The InspectionPhoto entity is the core of the platform. Each photo gets its own AI assessment record — zone, AI assessment text, specific flags detected, and a confidence score. This granularity lets the Report aggregate individual photo assessments into an overall condition summary and lets buyers drill into specific zones. We stored the AI output as structured JSON in the ai_flags array rather than raw text, which made report rendering much cleaner.

GPT-4o Vision Integration

GPT-4o Vision is the only AI model used in TrustDrive. Each uploaded photo goes to a backend function that passes the image URL and zone context to GPT-4o Vision via Base44's InvokeLLM with a structured JSON response schema.

The prompt is zone-specific. For a tire photo, the prompt asks GPT-4o Vision to assess tread depth (estimate percentage remaining), look for uneven wear patterns that indicate alignment issues, check for sidewall damage, and flag anything unusual. For an engine bay photo, it checks for fluid leaks (identify the likely fluid), aftermarket wiring, signs of overheating, missing components, and rust. The response schema returns: condition (good/fair/poor/unknown), flags (array of specific concerns), confidence (0–1), and summary (plain English sentence).

One key implementation detail: photos are uploaded to Base44 storage first, and the storage URL is passed to GPT-4o Vision rather than sending the raw file. This keeps the backend function stateless and avoids base64 encoding large images in the request payload.

Stripe Pay-Per-Report

TrustDrive uses Stripe Checkout for a simple one-time payment per published report. The pricing model was a deliberate choice — subscriptions would have deterred private sellers doing a one-time vehicle sale. Pay-per-report ($19.99 CAD) keeps the barrier low.

The flow: seller completes inspection → clicks 'Generate Report' → Stripe Checkout session created with inspection_id as metadata → on checkout.session.completed webhook, Report entity is created with published = true → unique public URL slug generated → QR code generated → confirmation email sent with the QR code image and the public URL. The public report page (/report/:slug) requires no login — any buyer can view it by scanning the QR code.

Technical Challenges

GPT-4o Vision consistency on low-quality photos

Private sellers take photos in poor lighting, at odd angles, with dirty lenses. GPT-4o Vision handles this better than expected but returns 'confidence: low' on the worst photos. We added a photo quality check — if GPT-4o Vision returns confidence under 0.3, we prompt the seller to retake that photo before finalizing. This significantly improved report quality.

Mobile camera access on iOS vs Android

iOS Safari and Android Chrome handle file inputs and camera access differently. We used an input[type=file][accept='image/*'][capture='environment'] approach that opens the camera on mobile and the file picker on desktop. Testing across iPhone Safari, Android Chrome, and desktop browsers took more time than expected.

Report manipulation prevention

A seller could theoretically complete an inspection with good photos, generate a report, then swap photos to look better for buyers. We prevent this by: (1) locking the Inspection entity after report generation (status = locked), (2) storing the report generation timestamp and comparing it to photo upload timestamps, and (3) including individual photo analysis in the public report so buyers can see the AI assessment of each specific photo.

Lessons Learned

GPT-4o Vision needs zone-specific prompts — a generic 'assess this vehicle photo' produces far worse output than 'this is a tire photo — assess tread depth, wear pattern, and sidewall condition'.
Store photos in cloud storage and pass URLs to Vision APIs — never base64 encode images in API payloads if you can avoid it.
Mobile camera input is a CSS and UX problem as much as a code problem. Test on real devices from week 1, not week 3.
Pay-per-use beats subscription for one-time-use consumer products. Subscription friction kills conversion for users who only have one vehicle to sell.

Want the outcomes, ROI, and client testimonial?

The full case study covers results, metrics, and what the client said.

Full Case Study

Related

Want to Build Something Similar?

Free 30-minute call with Ryan. Fixed quote before we hang up.

$100/hr CAD all-inclusive. 2–6 week delivery on Base44.

Book Free Discovery Call

ESTIMATE DISCLAIMER

Any estimates, pricing proposals, or preliminary assessments provided through this website, AI chat, or email are non-binding estimates only and do not constitute formal quotes. Estimates are subject to change and are provided on an "as-is" basis without guarantee. Official quotes are provided only in writing by Level 44 Labs and are subject to revision based on final scope clarification.

QUOTE & PROJECT TERMS

All formal quotes are subject to errors and omissions. Final project scope, timeline, and costs may change based on requirements discovery, technical constraints, third-party dependencies, and client-requested modifications. A formal written agreement must be executed before work begins. Discovery calls are informational only and do not constitute project commitment.

LIABILITY LIMITATION

Level 44 Labs and its representatives shall not be liable for any indirect, incidental, special, or consequential damages arising from estimates, quotes, website content, AI-generated responses, or service delivery. Our total liability is limited to the amount paid for services rendered. Client assumes all risks associated with third-party services, integrations, and platform dependencies.

NO WARRANTIES

All estimates, preliminary advice, and website information are provided "as-is" without warranty. Level 44 Labs does not warrant accuracy, completeness, or suitability for any particular purpose. Clients are responsible for verifying all technical requirements independently.

INTELLECTUAL PROPERTY

Custom work delivered under formal agreement remains the property of Level 44 Labs until payment in full is received. Third-party libraries, frameworks, and Base44 platform code are governed by their respective licenses.

© 2026 LEVEL 44 LABS · ALL RIGHTS RESERVEDBUILT ON BASE44