The problem
Junk removal has a pricing problem. Traditional operators quote estimates by phone, then send a crew to inspect, then send a written quote — a workflow that loses jobs to faster competitors and misprices a meaningful share of what shows up. ScanJunk needed a way to give honest, instant prices the moment a customer photographs the pile in their garage, and to do it across an entire metro area without growing a phone bank to match. The constraint from day one: the platform had to feel familiar to a customer who has used Uber and DoorDash, but who has never used a junk removal service in their life. No phone calls. No "we'll call you back." Photograph it, see a price, book a window.
The architecture
We built the pricing engine on OpenAI's GPT-4o Vision model, scored against an internal calibration set so quotes stay accurate as supply and disposal costs shift. The backend runs entirely on Cloudflare Workers — no servers to maintain, sub-50 ms response times at the edge, and capacity that scales by request rather than by provisioned VMs. Transactional data lives in Cloudflare D1; photos and digital signatures in R2; Stripe handles checkout; Firebase Phone Authentication keeps signups frictionless. On the front end we shipped four separate clients, each one purpose-built rather than a webview wrapper: a customer web app in Next.js, a native iOS app in SwiftUI, a native Android app in Kotlin and Jetpack Compose, and a driver operations app in React Native (Expo) because crews iterate fastest with a shared cross-platform codebase. Every layer is independently deployable.
Engineering discipline
A platform this broad fails if quality lives in only one developer's head. We built over 1,300 automated tests across the Workers API, the web client, and the mobile apps — every booking flow, every pricing edge case, every payment state transition exercised in continuous integration before code reaches production. GPS tracking and digital signature capture in the driver app are end-to-end tested against a simulator. The admin dashboard, used by ScanJunk's operations team to dispatch crews and reconcile payments, is treated as a first-class application rather than an afterthought. None of this is glamorous — but it's why a single-region launch in San Joaquin County can confidently expand to neighboring counties without a rewrite.
Where it lives
ScanJunk is live at scanjunkremoval.com, with the iOS and Android apps in their respective stores. The platform processes photo-priced jobs end-to-end — quote, booking, payment, dispatch, completion, receipt — without a human in the loop until the driver shows up. Tobala Labs continues to ship new features monthly: route optimization, seasonal pricing rules, recurring service bookings, multilingual support. We approach every engagement the same way: build the smallest correct version first, ship it to real users, expand on what works. ScanJunk is the proof point. We'd be glad to walk through any of these technical decisions in depth if you're evaluating a similar build — write to [email protected] or use the contact form below.