← Cory Graves Portfolio
Full-Stack Software · Systems Design

An entire business,
running on software
I built.

Not a website — a self-contained operating system for a local service business. It takes a lead, prices the job from a live materials database, checks it against the legal scope, dispatches the crew, schedules the work, collects payment, pays out the subs, tracks margin, and keeps a private line open to every worker — all from one server I designed, coded, and host myself.

Role
Design + Full-Stack Dev + Systems
Stack
Flask · SQLite · Caddy
Scope
Brand → App → Ops → Infra
Size
~2,200 lines · 8-table DB
The customer-facing instant-quote builder
01 — The brief

A one-person business that runs like a franchise.

The owner is a coordinator: he wins the job, then dispatches subcontractors and crew to do it. That model only works if the paperwork disappears — quoting, scheduling, dispatch, payment, payout, and follow-up all have to happen without a back office. So I built the back office: a single system that runs the whole operation, customer-facing and internal, on infrastructure that costs almost nothing to run.

02 — The operating loop

Lead to payout, one system.

Lead intake & classify
Materials-priced quote
Legal-scope gate
Schedule-slot booking
Crew / sub dispatch
Payment collection
Worker payout
Margin tracking
Review & repeat follow-up
03 — What I built

The moving parts.

▸ Materials-priced quote engine

An instant estimate priced against a live materials database (a Palm Coast Home-Depot pricing corpus) — labor + materials + minimum-hour rules → a firm price and deposit in ~1 minute.

▸ Legal-scope gate

The software enforces the Florida handyman exemption in code — caps the job value, blocks licensed trades, and detects job-splitting (one remodel disguised as small tickets) and refuses it. Compliance as a feature.

▸ Schedule + dispatch

A schedule-slot / capacity engine books the work and assigns crew or subcontractors, with job-state transitions tracked end to end.

▸ Private messaging

A built-in thread system — a private line to every worker and sub, plus a message channel on each customer quote. Not a bolt-on chat app; part of the operating record.

▸ Payments & payouts

Customer payment collection (Stripe-ready), subcontractor payout tracking, and live margin on every job — the numbers that keep a coordinator solvent.

▸ Secure operator portal

A password-gated back office (hashed auth, sessions, tokens) over the whole database — the owner runs the business from a phone.

▸ Automated comms

Twilio SMS + email notifications: quote sent, booking confirmed, crew dispatched — the follow-ups happen on their own.

▸ Bilingual + AEO

Full English / Spanish (server + client), and answer-engine optimization — an llms.txt plus 14+ JSON-LD schema types so Google and AI assistants read the business correctly.

04 — Architecture

A single rules core, a thin skin.

The hard rules live in one place: a single rules engine owns quote math, minimum-hour and margin checks, the legal-scope gate, schedule-slot accounting, job-state transitions, and payout calculation. Everything the customer or the owner sees is a thin presentation layer over that engine — so the numbers are always right and the same logic can drop onto the next business unchanged.

ServerFlask (Python) behind gunicorn — ~2,200 lines, hand-written
DataSQLite operations database (8 tables)
HostingSelf-hosted, Caddy reverse proxy, automatic HTTPS — the box is mine
CommsTwilio SMS · transactional email · quote-thread messaging
PaymentsStripe-ready · deposits · subcontractor payouts · live margin tracking
Front endHand-coded, mobile-first, bilingual (EN / ES)
Discoverabilityllms.txt + 14+ JSON-LD schema types (LocalBusiness, OfferCatalog, PriceSpecification, ReserveAction, FAQPage…)
ReusableMulti-site by design — one core, per-business config
quotesbookingsjobsworkersmaterialsadmin_usersactivity_logmessages
05 — Identity

A warm face on a hard machine.

I designed and animated the mascot too. The homeowner sees a friendly badge and a one-minute quote; underneath it is a compliance-gated dispatch platform. Brand and engineering, from the same hand.

06 — The takeaway

Not a site. A product.

One person designed the brand, wrote ~2,200 lines of back end, modeled the database, stood up the server, and shipped a business that runs itself — then built it to be reused for the next one. That's the whole thesis: I art-direct the launch and engineer the machine that runs underneath it.

See it running

Live now.

Visit the live site ↗
palmcoasthandyman.us