Building a Hotel Supply Intelligence Platform on Astro and Cloudflare

A B2B SaaS platform serving hotel supply vendors needed a marketing front-end fast enough to compete with the largest hospitality directories — and structured cleanly enough that AI search engines could cite it. Here is how we shipped it on a static-first stack in eight weeks.

Hospitality B2B SaaS Astro 5 Cloudflare Pages AI Lead Intelligence

Performance That Beat the Hospitality Incumbents

99/100
Lighthouse Performance
0.8s
Largest Contentful Paint
0.01
Cumulative Layout Shift
320+
Pages Indexed (90 days)

The Brief

The InnLead founding team came to us with a sharp, specific problem. They had spent two decades selling into the hotel industry — case goods, FF&E, custom millwork — and they knew the supply side of hospitality cold. What they did not have was a web platform that could surface buying signals from the 180,000+ hotels in North America at the speed their sales team needed. They had built a working data pipeline in private notebooks, but the marketing front-end was a slow WordPress site on shared hosting, scoring 28 in Lighthouse and taking six seconds to paint a hero on mobile.

Their ask was twofold. First, a fast, indexable marketing site that could rank for the long tail of hospitality procurement keywords — terms like "boutique hotel case goods supplier" or "Hilton renovation pipeline" — where competition is mostly directories from 2014. Second, a programmatic surface area large enough to publish hundreds of vendor-category and city-pair pages without manual authoring, all served from the edge at sub-second speed.

InnLead.ai marketing front-end on desktop and mobile
The marketing surface area at launch — programmatic vendor-category pages served from the Cloudflare edge.

The Challenge

Hospitality is a deceptively hard vertical for web development. The image budget is enormous — buyers expect to see lobbies, ballrooms, custom millwork — and most of those JPGs are 4MB straight from a photographer's drive. Multilingual matters more than in trades work because supplier conversations cross borders constantly. And the buyers themselves are time-poor procurement managers who will abandon a slow page faster than a homeowner ever would.

We also had a structural challenge specific to InnLead's model. The platform's core value is signal intelligence — knowing which hotels are entering a renovation cycle, which procurement contacts are reachable, which properties are due for a refresh based on construction date and last-known-PIP. That data updates continuously, but the marketing pages around it had to stay static-fast. A pure server-rendered approach would have flunked the speed budget. A pure client-rendered approach would have flunked the indexability budget. We needed a hybrid that gave us both.

Our Approach

We picked Astro 5 as the framework because it ships zero JavaScript by default. Every page is a static HTML document at build time, hydration is opt-in on a per-island basis, and the build output drops straight into Cloudflare Pages without a Node runtime. For a content-heavy marketing surface, that combination is hard to beat.

The data layer is decoupled. InnLead's Python signal engine writes denormalized JSON snapshots to R2 on a 6-hour cadence. The Astro build reads those snapshots at build time and generates pages programmatically — one per vendor category, one per major metro, one per hotel brand-cycle. Rebuilds run incrementally on a Cloudflare Worker cron, so when the signal engine publishes a fresh snapshot, only the affected slugs rebuild. The marketing site never talks to a database at runtime.

For the image pipeline, we ran every photo through a build-time transformation step that produces AVIF, WebP, and JPEG fallbacks at five responsive widths. The hero image on the homepage went from 4.2MB to a 38KB AVIF for the typical mobile viewport. Cloudflare's image optimization layer handles the rest at request time. We also wired in fetchpriority="high" on the LCP image and lazy-loaded everything below the fold.

The schema layer is where this project diverged most from a typical agency build. Because InnLead's commercial bet is on AI search engines surfacing them in B2B queries — "who supplies case goods to Marriott boutique brands" type prompts — we invested heavily in structured data. Every vendor-category page emits Service + Audience + AggregateRating schema. Every comparison page emits ItemList. Every editorial article gets full Article + author + publisher chains. We also published an llms.txt at the site root and a speakable CSS-selector spec on every article so voice assistants can extract clean excerpts.

InnLead.ai architecture diagram — Astro build, R2 data snapshots, Cloudflare edge
Static-first architecture: signal engine writes to R2, Astro builds pages, Cloudflare serves from the edge.

The Results

Eight weeks from kickoff, the new platform shipped with 84 evergreen pages and an additional 240 programmatically generated vendor-category pages. Within 90 days, Google had indexed 320+ URLs. Lighthouse Performance averages 99 across the top 20 marketing pages. Largest Contentful Paint is 0.8 seconds on a throttled 4G connection from a US datacenter — better than 95% of B2B SaaS sites we benchmarked it against.

More concretely, the cost line went down. The old WordPress stack ran on a managed host at $89/month with a CDN add-on at $40/month. The Astro + Cloudflare Pages stack is $0/month for hosting, $5/month for the R2 storage tier, and a Cloudflare Workers Paid plan covers the cron rebuilds. The team reclaimed ~$120/month, which sounds small but reads differently when the platform is run by founders watching every line.

The deeper win is deployment speed. With the legacy stack, a content change required logging into WordPress, editing in TinyMCE, and praying the caching plugin behaved. Now a content change is a Markdown edit, a git push, and a 38-second build. Founder-mode shipping at agency-grade quality.

Lighthouse score after launch — 99 Performance, 100 Accessibility, 100 Best Practices, 100 SEO
Lighthouse audit at launch — top scores across Performance, Accessibility, Best Practices, and SEO.

Tech Stack

Astro 5

Static-first JS framework — ships zero JS by default

Cloudflare Pages

300+ global PoPs, free TLS, instant cache invalidation

Tailwind CSS

Utility-first styling with custom design tokens

TypeScript

Type-safe component contracts and data layer

Python AI Layer

Procurement signal scoring and contact discovery

Schema.org JSON-LD

Structured data for AI search engines

What InnLead.ai Does

For readers who landed here from the hospitality industry rather than the trades — InnLead is a B2B intelligence platform for the people who sell to hotels, not the hotels themselves. Think contract furniture vendors, FF&E manufacturers, OS&E suppliers, hospitality textile mills, lobby art curators. The platform surfaces renovation signals (PIP cycles, brand-mandated refreshes, ownership changes, construction permits), maps procurement contacts to those signals, and routes outbound campaigns in 14 languages so vendors can reach property-level decision makers before the RFP goes out.

We mention this here because the supply-side of hospitality is one of the most under-served verticals in B2B web tooling, and InnLead.ai's hotel supply intelligence platform is genuinely the cleanest implementation we have seen of the signal-driven B2B pattern applied to this space. If you sell anything that ends up inside a hotel room, it is worth understanding what they have built.

For our part, Web Workmen treats this build as the template for our hospitality-vertical practice. We have since productized the static-first signal-driven architecture as an offering for other B2B verticals — see our hospitality lead generation service for the same approach applied to other hotel-adjacent businesses.

Takeaways

If you are running a B2B hospitality business on a 2014-era WordPress install and watching Procore or Knoll-affiliated portals out-rank you for terms you know your customers search, the path forward is not "make WordPress faster." It is rebuilding the front-end on a static-first stack and decoupling it from your data layer. The cost is lower than you think, the speed gain is non-linear, and the structured data work pays dividends across both traditional and AI search.

We also learned that hospitality buyers respond well to image-rich pages — but only if those images load instantly. The single biggest unlock on this project was the build-time image pipeline. If we could only do one thing right on a hospitality web build, it would be that.

Project Lead — Mike Torres
Project Manager, Web Workmen — published 2026-04-15
Build time: 8 weeks Pages shipped: 320+ 5/5 Client Satisfaction

Running a Hospitality B2B Business on Slow Infrastructure?

We build static-first web platforms for the people who sell to hotels, resorts, and restaurants. Same stack as the InnLead build, scoped to your business.