Static sites · SEO · AI chat
Business Websites & Festival Theme Studio
Four fast marketing sites for an agency, a steel foundry and two pump brands, with an AI chat assistant on the edge and a Theme Studio that dresses the sites for 31 Indian festivals on a schedule.
- Workers AI
- Technical SEO
- Structured data
- Motion design
- Admin tooling
- Edge caching
- Cron & KV

Product screens with sample data. Names and figures inside the screens are illustrative.
The problem
Indian businesses decorate for festivals. Their websites usually don't, or someone edits the site by hand and forgets to switch it back. And visitors with questions at midnight get a contact form.
- 31
- Festivals scheduled
- 3
- Models in the AI fallback chain
- ~20
- Schema.org types
What I built
An assistant that knows the services
The agency site answers questions about branding, web and growth from its own service knowledge, and hands the conversation to WhatsApp with the question already typed when a person should take over.

A year of festivals at a glance
The almanac shows every scheduled festival on a circular year, counts down to the next one, flags festivals that still need dates, and fills the next 12 months in one click.

A studio that schedules the decorations
Each festival has a palette, greeting, motif and researched dates. Admins pick a window, toggle up to 9 effects (arrival scene, diyas, cursor, particles, greeting) and see the real site in a live preview.
- Brand colours never change; reduced-motion visitors get the greeting only
- Intensity from 0.2 to 1.6, priority from 0 to 9
- Locked-down admin with signed sessions and lockout

Sites built to rank
Per-page titles, canonicals and structured data (Manufacturer, Product, OfferCatalog, BreadcrumbList, BlogPosting and more), auto-generated sitemaps and WebP imagery.

Catalogues people can actually use
60 pump models in 10 series hang on a depth chart filtered by bore size and supply phase, and each product page has a performance curve you drag to read head and flow. Enquiries open a pre-filled WhatsApp message.

03 AI integration & engineering
An AI desk on a static site, and a festival engine
The sites are static for speed, so everything dynamic runs on Cloudflare Workers: a chat assistant on Workers AI with model fallback, a newsletter on KV with a weekly cron, and a theme API that decides which festival is live.
- 01Visitor asks a question
- 02Worker trims history to the last 8 messages
- 03Llama 3.1 8B fast
- 04falls back to GLM 4.7 flash
- 05falls back to Llama 3.3 70B
- 06Answer, plus WhatsApp handoff

Pump product page with sample data.
Fallback across three models
A fast small model answers first; if it fails, the Worker retries on the next model, so the chat keeps working during an outage.
Guardrails in the Worker
History capped at 8 messages of 1,200 characters, input at 1,500, replies at 400 tokens. The assistant never quotes prices and hands those questions to a person.
Handoff, not a dead end
One tap continues on WhatsApp with the visitor's question already typed, so the team picks up with context.
Newsletter without a server
Sign-ups stored in KV, and a weekly digest sent by a cron trigger every Monday at 09:00 UTC.
Shortest window wins
Overlapping festivals resolve by priority, then window length, so a one-day festival shows through a week-long one.
Cached at the edge
The public theme is cached for 60 seconds and never past the next change; festival code loads only while a theme is live.
- Agency site
- Next.js static · ~42 pages · 20 industry pages
- Foundry site
- React 19 · Vite · on a Worker
- Pump sites
- HTML · GSAP · 2 Workers
- AI
- Workers AI · 3-model fallback
- Themes
- 31 festivals · 6 families · 9 effects
- SEO
- ~20 schema types · auto sitemaps
- Data
- Cloudflare KV · cron triggers
- Admin
- Signed sessions · lockout after 8 tries
Key decisions
Static first, edge for the rest
Pages ship as static files; only chat, newsletter and themes need a Worker, which keeps the sites fast and cheap to run.
Small model first
Most questions are simple, so the fastest model answers them; bigger models are only the fallback.
Effects only load when live
Festival code is split out and loaded only while a theme is active, keeping normal page loads light.
