Case study · 2024 · Marketing site

A marketing site that talks back — and qualifies leads while it does

An IT consultancy site for an APAC services firm. A conversational chatbot replaces the contact form, a video hero replaces the stock photography, a testimonial carousel replaces the wall of logos. The whole stack runs on Next.js with thirty-plus shadcn primitives and a state machine that turns every visitor into a qualified lead.

  • ClientAPAC IT consultancy
  • IndustryMarketing site · IT consultancy
  • Year2024
  • Engagement6-week build · ongoing iteration
Helio marketing site — a hero with a video background and a chat widget open in the corner, the agent asking whether the visitor wants cloud migration, internal tools, or something else.
01 — At a glance
0
Contact formsLead capture is conversational — name, intent, hand-off in one thread.
5-state
Chatbot machineWelcome → name → intent → info collect → hand-off. Clean, debuggable, extensible.
30+
shadcn primitivesA complete in-house component library — not a CDN-loaded UI kit.
Summary

Most IT services marketing sites are a hero, a grid of capabilities, a wall of logos, and a contact form. We replaced the contact form with a conversational chatbot that opens, qualifies, captures, and hands off to sales — and rebuilt the rest of the site around it. Next.js 15 with thirty-plus shadcn primitives, Framer Motion entrance work where it pays off, Embla for the testimonial carousel, and a chatbot state machine clean enough to read.

The problem

Procurement was held together with Excel and goodwill.

The firm runs an IT consultancy in a high-volume APAC market. Their old site read like every other consultancy site — generic hero, services grid, case studies, contact form. The fill rate on the contact form was ~1%, which the marketing lead suspected was less about the offer and more about the channel. People don't fill out forms when they're partway through deciding. They ask a question, and the friction of typing it into a structured form kills the intent before it lands.

The brief, plainly: replace the form. Build the lead-capture surface around the way prospects already behave — they open a chat, they ask a question, they want a fast answer, and they're willing to share their context if the conversation feels like a conversation. The chatbot is not a gimmick; it's the actual product.

People don't fill out forms when they're partway through deciding. They ask a question. The chatbot is not a gimmick; it's the lead-capture surface.

The rest of the site needed to come along too. The capabilities grid had to be specific, not generic. The hero had to communicate the firm's register (technical, regional, established) without resorting to stock photography. The testimonial carousel needed to ship a real social proof flow, not a static logo wall.

Helio's chatbot state machine in action — welcome message, name capture, intent routing into cloud migration vs. internal tools vs. other, lead summary.

Five states, typed transitions. The chatbot is a state machine in code, not a rented widget.

02 — Why us

Why they chose Synara

Most agencies that quoted this work shipped marketing sites that were beautiful and identical. The firm wanted something distinguishable — a real shadcn-grade component library underneath, a chatbot built as a state machine rather than a third-party widget, animations calibrated to the brand rather than to a Dribbble shot. We were comfortable in all three registers and could ship them in a single coherent design system.

We also took the chatbot brief literally. The team that proposed embedding Intercom or Crisp was solving a different problem. The brief was a *state machine* embedded in the site — debuggable by us, extensible by the firm's team, ownable as code rather than rented from a SaaS. That's a frontend engineering shape, not a tool-procurement shape.

03 — What we built

A three-portal procurement platform — buyer, supplier, admin.

Helio marketing site rendered on a MacBook on a teakwood desk in a quiet office at early evening — hero with a video background and a chat widget open in the corner.
01

Conversational lead capture as a state machine

Welcome → name → intent qualification → info collection → hand-off. Each transition is a typed state with explicit guards and a side-effect contract. Adding a new intent path (e.g., 'cloud migration vs. internal tools') is a state-extension change, not a rewrite.

02

Video hero that loads cleanly

A short, looping video background plays at hero scale with a content-aware fallback poster for slow connections. The video is encoded for the actual playback profile and lazy-mounts behind the LCP.

03

A complete in-house component library

Thirty-plus shadcn primitives — buttons, dialogs, cards, sheets, dropdowns, command palettes, navigation menus, hover cards, tooltips, popovers — composed into the marketing surfaces. Theme-tunable, fully typed, no CDN dependency.

04

Embla testimonials with animated reveals

A horizontally-scrolling testimonial carousel using Embla under the hood. Each testimonial card has its own entrance animation, calibrated for a single read rather than a constant rotation.

05

Services grid with specific outcomes

Each capability card pairs a category with a concrete outcome rather than a generic adjective. Animated entrance via Framer Motion, sticky CTA that converts to the chatbot when the visitor commits.

06

Performance budget enforced at build

Lighthouse runs in CI on every PR. Bundle size budgets per route. Image transforms via next/image. The result is a site that loads in under two seconds on a 3G profile — important for the firm's market.

Helio's services grid — five capability cards with animated reveals, each pairing a category with a concrete outcome rather than a generic adjective.

Specific outcomes, not generic adjectives. The grid does the qualifying work the homepage hero usually skips.

04 — Architecture

In plain English, why each choice.

Frontend
Next.js 15.3 with the App Router and React 19. Tailwind for the styling layer. shadcn/ui primitives (thirty-plus) composed into a custom marketing component library. Framer Motion for entrance animations on cards, hero text, and carousel items. Embla Carousel for the testimonials.
Chatbot state machine
An in-house state machine — explicit states, typed transitions, side-effect contracts. Conversation state lives client-side until hand-off; hand-off posts a structured payload to the firm's CRM. The whole machine is ~300 lines of TypeScript and a single React component.
Forms + validation
react-hook-form with Zod schemas at the boundary. The few moments the visitor types something (name, email, message body) are validated synchronously, with Sonner toasts on submit success or failure.
Hero video
Self-hosted MP4 with a poster image. Video lazy-mounts after LCP. The hero text uses Framer Motion for the entrance and is decoupled from the video so the text is readable instantly even if the video is still loading.
Routing + content
Static routes for the marketing surfaces — home, services, work, about, contact. Content lives in TypeScript modules so a copy edit is a code commit and a Vercel preview, not a CMS round-trip. For a stable marketing site this is faster and more reliable than a headless CMS would be.
Hosting
Vercel with the edge-cache hot for marketing routes. The chatbot hand-off endpoint runs on a server function. Analytics via Vercel Analytics with a minimal cookie footprint.
05 — Outcomes

What changed after launch.

0
Contact formsConversational lead capture replaces the form entirely.
5-state
Chatbot machineWelcome → name → intent → info collect → hand-off.
≤ 2s
Mobile load (3G)Performance budget enforced in CI.
30+
shadcn primitivesA real in-house component library, not a rented widget.

MethodologyPerformance metrics are CI-enforced with Lighthouse and bundle-size budgets per route. Lead-capture metrics are tracked in the firm's CRM downstream of the chatbot hand-off endpoint.

The chatbot turned out to be the entire sales motion. People who used to bounce now talk to us. It feels like our site, not someone's template.

Marketing LeadAPAC IT consultancy
06 — What’s next

Case-study deep dives with embedded media. A blog with technical depth that matches the firm's actual engineering register. And a small client-portal surface where ongoing engagements can be reviewed by the customer.

Stack
  • Next.js 15
  • React 19
  • Tailwind
  • shadcn/ui
  • Framer Motion
  • Embla Carousel
  • react-hook-form
  • Zod
  • Sonner
  • Vercel

A marketing site shouldn't read like everyone else's marketing site.

If your services firm is converting at single digits on a generic template — the answer is rarely 'better copy on the same shape.' We can scope a marketing site with conversational lead capture and a real in-house component library in 6–10 weeks.

Start a conversation