The numbers speak for themselves
Vault-backed numbers. No presentation-grade estimates. Each one is reconcilable to the founder's own reporting.
- Repos shipped
- 3
- Analytics endpoints live in the production API
- 13
- Marriott-brand property deployments confirmed
- 2
Three-tier SaaS architecture: a Flask/Streamlit prototype proving the data shape, a production Flask/Pandas API ingesting CSV exports from hotel sensor hardware via AWS S3, and a Remix/React/Prisma operator dashboard. Roughly 700 combined commits between Oct 2024 and May 2026.
SRC: Vault projects/1-hospitality-analytics-platform.yaml, 2026-05-16
Thirteen REST endpoints on the Python production API covering weekday, shift, hourly, monthly, and weekday-shift breakdowns of conversion and utilization, plus per-UA-ID dwell time, asset-level utilization, property-level retail sales, and the S3 file listing endpoint.
SRC: Vault technical companion, 2026-05-16
Spring Hill Suites (Pleasanton CA, ZIP 94588) and Fairfield Inn & Suites (Nashville TN, ZIP 37203). Both addresses are wired through the production Python API, the property selector in the Remix dashboard, and the per-property UA ID asset tables.
SRC: Vault notes.md, frontend code confirmation, 2026-05-16
Edifice monthly revenue
The full homepage, shown two ways
Two side-by-side screenshots of the long homepage. Hover the desktop card to slowly scroll the screenshot top to bottom, so visitors see the entire page without leaving this one.
-
Desktop · full homepage after rebuild
-
Mobile-first after rebuild
How the engagement unfolded
-
-
Production Python API: CSV ingestion + S3 + 13 analytics endpoints
Oct 2024 – Feb 2025 -
Remix frontend dashboard: auth, multi-property, draggable chart grid
Oct 2024 – May 2026 -
Dual-property launch on insights.edifice.ai
2025 – 2026
What we built
What was holding them back?
-
01
Off-the-shelf retail analytics tools do not handle hotel marketplaces
-
02
Sensor and POS data arrives as CSV exports, not a live feed
-
03
Multi-property breakdowns require per-property UA ID mapping
-
04
Operators want to rearrange their dashboard, export everything, and slice by date
Before and after
Funnel collapse: we removed a full page from the path to purchase.
What we built to fix it
Each fix maps to a specific lift in the funnel.
-
Custom Python analytics API modelled to the hospitality retail surface
-
S3-backed CSV ingestion with a file upload UI for the operator
-
Remix dashboard with multi-property selector and per-property UA ID tables
-
Drag-to-reorder chart grid, date range context, CSV and PDF export
What it was built on
Tools picked for the job, not for the resume.
-
Remix v2 + React 18Frontend framework
-
Tailwind CSS v3Styling
-
D3.js v7Charting
-
react-dnd v16Dashboard UX
-
Prisma v6 + PostgreSQLORM + database
-
Flask v3 + Pandas + NumPyPython analytics API
-
AWS S3 (aioboto3)File ingestion
-
Heroku + DockerDeployment
-
JWT + bcryptjsAuthentication
-
PapaParse + jsPDF + html2canvasCSV / PDF export
Speed is a revenue lever, not a vanity score
Every Muscled build is engineered to the same standard. The numbers below are the published industry benchmarks we design against, not stand-ins for any one client's figures.
- +8.4%
- 2.4%
- +10-20%
SRC: DELOITTE / GOOGLE
SRC: SHOPIFY PERFORMANCE DATA
SRC: SHOPIFY MOBILE BENCHMARKS
// OUR PERFORMANCE GATE we don't ship unless field Core Web Vitals hold: LCP ≤ 2.5s · INP ≤ 200ms · CLS < 0.1 (p75, mobile)
The techniques behind a build like this
Data pipeline & analytics API
- Flask + Pandas production API
- AWS S3 CSV ingestion
- 13 REST endpoints
- DataProcessor base class
- Weekday / Shift / Hourly / Monthly summaries
- WeekdayShiftBasedSummary
- UtilizationDataProcessor
- PropertyDataProcessor
- America/New_York timezone normalization
- Per-property UA ID mapping
- aioboto3 async S3
- gunicorn production server
Operator dashboard UX
- Drag-to-reorder chart grid (react-dnd)
- Shared DateRangeContext
- Multi-property selector
- KPI summary tiles (Revenue / Conversion % / Avg Bounce)
- Custom date range picker
- 8 D3 chart components
- InvokeBounceChart
- InvokeConversionBounceSales
- InvokeConversionBounceTurnout
- InvokeMarketplaceAssets
- InvokeUtilizationChartNine
- InvokeUtilizationGuestTurnout
- InvokeUtilizationMarketplaceTurnout
Auth, export, integrations
- JWT + bcryptjs auth
- CSV export (PapaParse + xlsx)
- PDF export (jsPDF + html2canvas)
- Prisma v6 + PostgreSQL user model
- Sign-in / sign-up flow
- File upload UI for sensor CSVs
- Per-chart CSV export
- Dashboard snapshot to PDF
- Date-diff aware filters
Build & deployment
- Heroku + Docker
- insights.edifice.ai
- 3-repo architecture
- heroku.yml + Procfile (Python API)
- Dockerfile (Remix frontend)
- Node.js ≥ 20
- Express.js v4 backend
- CORS-locked production domain
- ~700 combined commits
- Oct 2024 – May 2026 build window
One build. Multiple markets.
Same theme code across markets, with localized pricing, currency, and region-specific content routed automatically.
Spring Hill Suites — Pleasanton CA
Marriott property · 7270 Johnson Drive, ZIP 94588Spring Hill Suites — Pleasanton CA screenshotServed from the same Shopify Markets build. Dedicated capture not included.Fairfield Inn & Suites — Nashville TN
Marriott property · 901 Division Street, ZIP 37203Fairfield Inn & Suites — Nashville TN screenshotServed from the same Shopify Markets build. Dedicated capture not included.
Every section, built mobile-first
The full build is many numbered sections, each designed for the phone first. The rail below shows a sample. Scroll horizontally to step through.
What the work delivered
Each number is reconcilable to the founder's own reporting.
- Repos shipped
- 3
- Analytics endpoints live in the production API
- 13
- Marriott-brand property deployments confirmed
- 2
Three-tier SaaS architecture: a Flask/Streamlit prototype proving the data shape, a production Flask/Pandas API ingesting CSV exports from hotel sensor hardware via AWS S3, and a Remix/React/Prisma operator dashboard. Roughly 700 combined commits between Oct 2024 and May 2026.
SRC: Vault projects/1-hospitality-analytics-platform.yaml, 2026-05-16
Thirteen REST endpoints on the Python production API covering weekday, shift, hourly, monthly, and weekday-shift breakdowns of conversion and utilization, plus per-UA-ID dwell time, asset-level utilization, property-level retail sales, and the S3 file listing endpoint.
SRC: Vault technical companion, 2026-05-16
Spring Hill Suites (Pleasanton CA, ZIP 94588) and Fairfield Inn & Suites (Nashville TN, ZIP 37203). Both addresses are wired through the production Python API, the property selector in the Remix dashboard, and the per-property UA ID asset tables.
SRC: Vault notes.md, frontend code confirmation, 2026-05-16