← back to the council hall
Works of the council · portfolio piece the first
Benton Drones — Lead Intake
every inquiry geocoded, filed to the board, and on the dashboard before the kettle whistles
live at leads.bentondrones.com
The Trade, and the Need
Benton Drones flies FPV and aerial work out of Bentonville, Arkansas; their storefront runs on Shopify. But a storefront takes orders — it does not take customers. Inquiries scattered across inboxes, each one retyped by hand, each one at the mercy of somebody remembering to follow up.
The ask: one front door for every lead, and a pipeline that files each lead itself — located, assigned, and visible on a board the whole crew trusts.
Built With
Languages & core
- Python — standard library only at the core; zero pip installs to run the app
- SQLite built in — the whole state machine in one file
- HTML/CSS intake form, styled to the brand
Platform & integrations
- Geocoding — every lead pinned to place
- Jira — leads filed as actionable tickets automatically
- Render hosting — Docker deployment, Let's Encrypt TLS
- Neon Postgres path via psycopg2 when scale asks; SQLite until it does
- fpdf2 — true PDF exports per lead; HTML print view as fallback
The End-to-End Pipeline
how Spruce Grove OS carried it from a spoken sentence to a live subdomain
- The brief was spoken, not written. Goals recorded as voice, transcribed on-device through the grove's dictation loop, and turned into a working charter — the club's first question asked of the work itself.
- The brand was studied before a line was written. An agent surveyed Benton Drones' live Shopify theme — typeface, palette, corner radii, CDN behavior — and wrote the design-system analysis the build would follow. The intake page looks like their shop because it was built from their shop.
- The agent built; the human gated. Sessions of the grove wrote the server, the pipeline, and the tests; every cutover step passed through human review before it touched DNS. A runbook was written so carefully it warns about the typo a person might make in the domain name.
- Tests before trust. Playwright end-to-end drives the form the way a customer does. Quality gates ran in-session, not on a hope.
- DNS, verification, TLS. CNAME at the registrar, domain verified in Render, certificate issued — then the whole pipeline was verified live, end to end: form → geocode → Jira → dashboard.
- It stayed maintained. Follow-up voice notes became changelog entries; the launch checklist lives in the repo beside the code it shipped.
Why It Holds
Stable
- Core dependencies: none to install — the fewer moving parts, the fewer 3 a.m. surprises
- SQLite state with a Postgres upgrade path already wired
- Dockerized: the same image locally and in production
Secure
- Secrets outside the code; DNS and mail records never touched by automation
- TLS by default; subdomain isolated from the storefront's systems
- Rate-limit aware by design — the brand study read Shopify's limits before scraping anything
The method generalizes to any table so long as every party's perspective is heard before the build: the owner's cash-and-time reality, the crew's follow-up habits, the customer's one-finger patience. Ask the standing questions first; the software is the minutes of that meeting.