khairold
← Back to Work

QuoteCraft

A mobile-first quoting app for trade contractors — send a professional branded quote from your phone in under 3 minutes. Expo + Convex, built for the field.

March 2026
ExpoReact NativeConvexNativeWindTypeScript

The Problem

Small trade contractors — landscapers, plumbers, electricians, handymen — spend their days on job sites, not in offices. But every quoting tool assumes they’re at a desk.

The market is weirdly bifurcated. On one end, tools like Joist ($8–32/mo) are single-user and feature-locked. On the other, Jobber ($169+/mo for real quoting), Housecall Pro ($79–189/mo with a 3.2★ Android app), and ServiceTitan ($245–500/technician/month with a $5K–50K implementation fee) are built for large operations. LMN has a 2.7★ rating on Google Play.

There’s a documented gap: no modern, mobile-first quoting tool exists at $29–49/month. Reddit threads across r/Landscaping, r/plumbing, r/Contractors, and r/SweatyStartup tell the same story — contractors cycling through 5–10 tools, none of them good enough on mobile.

QuoteCraft targets that gap. The promise: a contractor creates and sends a professional branded quote from their phone, on a job site, in under 3 minutes of signing up.

The Approach

Target: landscapers first

Landscaping is the launch vertical — ~658K small businesses in the US, highest quote volume among trades, strong online communities, and seasonal urgency that drives tool adoption. The plan is to get landscaping right, then expand to plumbing, electrical, and general contracting.

Built for the field

Every design decision starts with: this person is standing in a yard, phone in one hand, probably in sunlight.

  • 56dp touch targets on primary actions — contractors work with gloves
  • 17–18sp text on key data (amounts, names, totals) — readable in bright sunlight
  • One-handed operation — critical actions in the bottom half of the screen, nothing important in the top-left corner
  • Numeric keyboard auto-opens on all price and quantity fields — no keyboard switching
  • Button-based line item reorder instead of drag — sustained precision gestures don’t work with wet or gloved hands

Tech stack

LayerChoiceWhy
AppExpo (React Native)Single codebase — web first, same code goes native when ready
BackendConvexReal-time sync out of the box — quote status updates push to the contractor’s phone instantly
StylingNativeWind (Tailwind for RN)Tailwind mental model, works on web + native
AuthEmail magic link (Convex Auth)Zero marginal cost, one tap to authenticate
EmailResendTransactional quote delivery, 3,000 free/month
PaymentsPolar.sh (Merchant of Record)Handles US sales tax, no US entity needed, 4% + $0.40

Convex was the key architectural choice over Supabase. Quote status changes (Draft → Sent → Viewed → Accepted) need to feel instant — Convex’s real-time subscriptions make that automatic. No polling, no WebSocket setup, no stale UI.

The app launches web-first on EAS Hosting. Same Expo codebase compiles to native iOS/Android via EAS Build when ready — no rewrite needed.

What the MVP does

The core loop is tight: create a client, build a quote, send it.

Quote builder — line items with description, quantity, unit, unit price, labor/materials flag. A pricebook lets contractors save common items (pre-seeded with landscaping defaults) and insert them with a search. Live subtotal/tax/total updates as they type.

PDF generation — professional branded output with the contractor’s logo, company name, license number, and a non-binding estimate disclaimer. Generated on-device, attached to the email.

Send and track — email delivery via Resend. Before sending, an explicit confirmation screen shows the client’s name and email — a “wrong client” safety check. After sending, the contractor sees real-time status updates as the client views and responds.

Public quote page — clients receive a link to app.getquotecraft.com/q/[quoteId] where they can view the full quote and accept or decline. The page also serves as an acquisition channel — a subtle “Get QuoteCraft free” CTA for quote recipients who are contractors themselves.

Free tier — 5 quotes/month at no cost. Enough to get hooked, not enough to run a business on. Core tier at $29/month unlocks unlimited quotes.

Onboarding

The 3-minute target drives the flow: email → magic link → company name → trade type → logo (skippable) → tax rate → license number (skippable) → straight into the quote builder with a pre-populated demo client. Every optional field has a prominent skip button. No marketing upsells during onboarding.

Current State

QuoteCraft is under active development. The MVP feature set is built — auth, onboarding, quote builder, client management, pricebook, PDF generation, email delivery, public quote page, status tracking, free tier gate. The app works end-to-end.

Current work is UI polish — the app started functional but visually rough. I’m working through a systematic pass: visual elevation (shadows, card depth, background hierarchy), replacing all emoji with a proper vector icon set (Lucide), adding haptic feedback and toast notifications, and ensuring every interaction feels responsive and intentional.

Not yet deployed. Not yet validated with real contractors — the demand case is built from secondary research (Reddit threads, app store reviews, competitor pricing data), not customer conversations. That’s the next step: 10 cold conversations with landscapers in Sun Belt metros, then unmoderated test sessions with a working build.

The honest assessment: the market has been validated. The product has not. The gap exists. Whether QuoteCraft fills it the right way is what launch will answer.

What I’ve Learned So Far

  • Convex is excellent for this use case. Real-time quote status, TypeScript end-to-end, built-in file storage, scheduled functions — it removes a lot of infrastructure decisions. The trade-off is a steeper initial learning curve than Supabase’s REST model.
  • Expo web-first is the right launch strategy. No App Store review cycles, simpler payments (no RevenueCat), faster iteration. The same code goes native later — that optionality is worth a lot.
  • Field UX is a different design discipline. Touch targets, text sizes, one-handed reach zones, keyboard modes — these aren’t nice-to-haves, they’re the product. A tool that’s unusable in sunlight with dirty hands isn’t a tool for contractors.
  • The pricing gap is real and durable. Enterprise tools can’t go downmarket without gutting features. Simple tools can’t go upmarket without rebuilding. A purpose-built $29/month tool with excellent mobile UX has room to exist.