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.

Role
Design, front-end, SEO and edge AI
Platforms
4 websites · Theme Studio admin · Cloudflare Workers
Stack
React 19 · Vite · Next.js (static) · GSAP · Lenis · Cloudflare Workers, KV & Workers AI · JSON-LD
  • Workers AI
  • Technical SEO
  • Structured data
  • Motion design
  • Admin tooling
  • Edge caching
  • Cron & KV
Agency site with its AI assistant open, and the Theme Studio almanac counting down to Diwali

Product screens with sample data. Names and figures inside the screens are illustrative.

01

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
02

What I built

01

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.

Agency homepage with the AI assistant answering an export question
02

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.

Theme Studio almanac with a year wheel and upcoming festivals
03

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
Theme Studio editor
04

Sites built to rank

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

Foundry homepage with festival decoration
05

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.

Pump series shown hanging at their maximum depth

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.

  1. 01Visitor asks a question
  2. 02Worker trims history to the last 8 messages
  3. 03Llama 3.1 8B fast
  4. 04falls back to GLM 4.7 flash
  5. 05falls back to Llama 3.3 70B
  6. 06Answer, plus WhatsApp handoff
Pump product page with a draggable performance curve

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
04

Key decisions

  1. 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.

  2. Small model first

    Most questions are simple, so the fastest model answers them; bigger models are only the fallback.

  3. Effects only load when live

    Festival code is split out and loaded only while a theme is active, keeping normal page loads light.