Benton Drones logo Benton Drones

Lead Ingest MVP

A Shopify-aware, self-owned local system for collecting drone delivery simulation signups, consent, addresses, exports, and planning data without depending on Google Forms, PDFfiller, Sheets, or manual Google Earth workflows.

Review pages

Project cockpit

Use these local pages to review the MVP, easiest Shopify launch path, change history, and roadmap.

Current State & Next Steps

Shopify Preview · Domain Setup · API/CLI Preflight · Goals · Judges · Changelog · Roadmap

Built

Signup + Consent

Public signup form stores contact, address, campaign, Shopify context, and versioned consent records in SQLite.

Built

Shopify-Aware

Can capture Shopify storefront context and includes HMAC/signature utilities for app proxy validation.

Built

Admin Protection

Admin and export routes require password login and signed session cookies.

Built

Exports

CSV, GeoJSON, and KML exports support spreadsheet, mapping, and Google Earth migration workflows.

Executive Summary

This MVP proves the core owned workflow: a visitor signs up, consent is captured, the address is geocoded by the real provider chain (US Census primary + Nominatim fallback, cached in the database), data is stored in an owned database (SQLite locally, Neon Postgres in production), and internal users can view/export leads after admin login.

Shopify remains the storefront/presentation layer. The owned backend remains the source of truth for sensitive lead, consent, address, geospatial, and planning data.

How the System Works

Shopify page / app proxy / signup link | v Public signup form with consent + CSRF + honeypot | v Server-side validation + DB-backed rate limiting | v Database (SQLite local / Neon Postgres in prod) |----------------------|----------------------| v v v Signup record Consent record Geocode status | v Admin dashboard + protected exports |--------------|--------------| v v v CSV GeoJSON KML

Local Routes

RouteAudiencePurposeStatus
/overviewInternal/projectThis plain-English system overview.Built
/signupPublicDefault signup page.Built
/signup/<variant>PublicCampaign/neighborhood/partner signup variant.Built
/admin-loginInternalPassword login for protected admin/export access.Built
/adminInternalLead dashboard and export links.Built
/export/csvInternalSpreadsheet-style export.Built
/export/geojsonInternalModern web map/GIS export.Built
/export/kmlInternalGoogle Earth compatible export.Built

What Is Built

Data Ownership

  • SQLite locally / Neon Postgres in production
  • Signup records
  • Consent records
  • Shopify context fields
  • Cluster tables ready

Security Basics

  • Server-side validation
  • Required consent
  • Admin password login
  • Signed session cookies
  • CSRF tokens
  • Honeypot spam trap
  • Persistent token-bucket rate limiting (DB-backed)

Planning Data

  • Real geocoder: Census + Nominatim + DB cache (mock retained for offline tests)
  • Latitude/longitude fields
  • Haversine distance utility
  • Radius clustering utility
  • CSV/GeoJSON/KML exports

Shopify Fit

  • Shop domain capture
  • Customer ID capture
  • Page URL capture
  • App proxy HMAC helpers
  • Signed context token handoff

Current Local Setup

python scripts/init_db.py
ADMIN_PASSWORD=change-me ADMIN_SESSION_SECRET=change-me-too python -m lead_ingest.server

On Windows PowerShell, set environment variables with $env:ADMIN_PASSWORD='change-me' and $env:ADMIN_SESSION_SECRET='change-me-too' before starting the server.

Roadmap

PhaseWhat It MeansStatus
Local MVPOwned signup, consent, admin, exports, Shopify context, and tests.Complete
Real GeocodingUS Census primary + Nominatim fallback, cached in the database. Judge PASS (EVID-GEO-001).Built
Persistent Rate LimitingToken-bucket-in-DB, shared across processes and restarts. Judge PASS (EVID-RATELIMIT-001).Built
JIRA Queue ReplayOn-read sweep + daemon with backoff, dead-letter, idempotency. Judge PASS (EVID-JIRA-002).Built
Production DatabaseNeon PostgreSQL via DATABASE_URL on Render, SQLite fallback locally.Live
NotificationsEmail confirmations + internal alerts: code and queue built; live-send waits on the Workspace SMTP app password.Code built, creds pending
Custom Domainleads.bentondrones.com via Cloudflare + Render custom domain. Needs the human credential session.Human-gated
Production Shopify IntegrationApp proxy signing validation against real Shopify requests.Post-launch
Mapping UIFull map UI for leads, clusters, and service zones beyond the admin preview.Post-launch

Known Production Risks

Plain-English Bottom Line

The MVP now demonstrates the end-to-end workflow Benton Drones needs: collect leads, capture consent, store data in an owned database, preserve Shopify compatibility, protect internal data, and export planning data for operational use.

The next leap is not more random features. HTTPS, production secrets, real geocoding, and the production database are all live — the remaining leap is the one human credential session to cut over the branded domain and activate email + monitoring. Detail lives on the roadmap and completion guide.