Spectare reads intent and assembles personalised content at render time. No A/B tests, no segments, no training data required.
What you are looking at
This is a server component. The headline, subheading, and CTA above are not static strings or client-side injections. They were fetched from POST /api/assemble/ssr at render time, and the slot values were mapped directly to the existing HTML elements before the page was sent to the browser.
The pattern
const heroSlots = assembly.find(c => c.component === 'HeroStatement')?.slots ?? {};
const ctaSlots = assembly.find(c => c.component === 'CtaStrip')?.slots ?? {};
const headline = heroSlots.headline as string ?? 'Default headline';
const ctaLabel = (ctaSlots.primary as { label: string })?.label ?? 'Get started';
// These render as plain HTML: no script, no attribute, no DOM swap.
<h1>{headline}</h1>
<a href={...}>{ctaLabel}</a>Try it
Add UTM params and reload to see the intent change:
Ready to add server-side personalisation to your stack?
Live conversion data, updated every 8s