Discover Mister Chameleon

Your website, personalised for every visitor.

Mister Chameleon adapts headlines, proof, and CTAs in real time - no code changes, no privacy trade-offs.

Conversion lifts for uw sector teams that speak for themselves

3.2x more qualified leads

SaaS teams using Mister Chameleon see an average 3.2x lift in demo requests within 30 days of going live - no engineering changes required.

First experience live in under 5 minutes

Connect your domain, define two rules, and your first adaptive experience is live. Most teams are shipping within a single afternoon.

12 visitor signals, evaluated in real time

Source, device, campaign, recency, and more - every visit triggers a silent evaluation so the right experience loads before the page paints.

Under 50 ms from page load to personalised content.

One snippet. The full personalisation pipeline.

Add a single JavaScript snippet to your site. From that moment, every visitor gets an experience built from their signals - traffic source, intent score, company data, and behavioural history - all resolved before the page finishes rendering. No engineering sprints. No CMS migrations. No waiting.

Circuit board close-up representing the speed of the decision pipeline

The pipeline by the numbers

<50ms

Total pipeline latency

130+

Signals evaluated per visit

<10ms

Variant decision time

100%

First-party data only

What happens on every page load

  1. 1
    Visitor arrives - signals are read instantly

    The moment someone lands on your site, the edge function reads the full request context: UTM parameters, referrer, traffic source, device type, and any existing session identifier. This runs before a single byte of HTML is sent - zero blocking latency.

    0 ms
  2. 2
    Session is recognised and history is loaded

    Returning visitors are matched to their existing behavioural profile stored first-party in your database. Pages visited, scroll depth, time on pricing, CTA clicks, form interactions, and prior variant exposures are all available for the decision engine. New visitors start a fresh profile.

    < 5 ms
  3. 3
    Company is silently enriched from IP

    If the visitor comes from a recognisable IP range, the enrichment service looks up their company name, industry, headcount estimate, and organisation type. This runs asynchronously alongside session loading - it never blocks the page render. No cookie is set. No data is shared with the visitor.

    < 20 ms
  4. 4
    Intent is scored and funnel stage is predicted

    The scoring engine combines all available signals - traffic source weight, behavioural depth, enrichment tier, CRM stage if available, and time context - into a single 0-100 intent score. A funnel stage label is assigned: awareness, consideration, intent, high intent, or customer. This stage drives rule matching.

    < 5 ms
  5. 5
    Rules are evaluated in priority order

    The decision engine walks through your personalisation rules - each defined by conditions (intent score, company type, UTM source, funnel stage, behavioural patterns) and a content plan (which hero, proof section, and CTA to show). The first rule whose conditions match this visitor wins.

    < 5 ms
  6. 6
    The best variant is served on the first render

    The winning content plan is applied. Your CMS serves the matched hero variant, proof block, and CTA - exactly right for this visitor, right now. No flicker. No layout shift. No second request. The personalised page renders on the first load.

    < 10 ms
The full personalisation pipeline - from signal collection to variant selection
Watch it happen

See the full pipeline in under two minutes.

This walkthrough shows the decision engine in action: a visitor arrives from LinkedIn, the enrichment service identifies their company, the intent score is calculated, and a vision-led hero with a thought-leadership CTA is served - all before the page finishes loading.

Data visualisation showing multiple signal streams converging into a single score
What the engine sees

130+ signals. One unified visitor context.

Most personalisation tools act on one or two signals - usually UTM source or device type. Mister Chameleon combines every meaningful signal into a single visitor context object that the decision engine uses holistically. The result is a richer, more accurate content decision than any single-signal approach can produce.

Signals the engine evaluates

Traffic source

UTM parameters, referrer domain, and source classification (Google, LinkedIn, direct, email, dark social). Each source pattern implies a different visitor intent and gets a different first impression.

Behavioural history

Pages visited in this session and historically, scroll depth, time on page, CTA clicks, form starts, form completions, and navigation sequences. Stored first-party in your database.

IP company enrichment

Company name, industry, estimated headcount, and organisation type - looked up silently from the visitor's IP address. No cookies. No consent banner required. GDPR compliant.

Intent and engagement scores

Two composite 0-100 scores: intent (how likely to convert) and engagement (how invested in your content). Both are recalculated on every page load from the full signal set.

Funnel stage

A predicted lifecycle label - awareness, consideration, intent, high intent, or customer - derived from intent score, behavioural depth, and CRM data. Rules can target any stage directly.

Time and weather context

Day of week, time of day, season, and local weather conditions. Useful for campaigns, event-driven content, and locale-specific personalisation.

CRM and ABM data

On Growth and Pro plans, known contacts and target accounts get content matched to their CRM lifecycle stage and account tier. Synced via webhook or direct integration.

Device and locale

Device type, operating system, browser, preferred language, and geographic region. Enables device-specific layouts and locale-matched content without separate page versions.

Visitor journey patterns

Named behavioural sequences - homepage to product, pricing revisit, high-engagement returning visitor - matched against the visitor's full navigation history to identify advanced buying patterns.

The content side

Variants live in your CMS. Marketing owns them.

Every content decision the engine makes maps to a variant defined in Sanity. Your marketing team creates hero variants for different audiences, writes proof sections for different funnel stages, and sets CTA copy for different intent levels. No developer involvement after initial setup. Activate a new variant, and the engine starts using it immediately.

Marketing team member editing a content variant in the Sanity CMS dashboard
Marketing creates variants in Sanity. The engine decides who sees which one.
Visual rule editor showing conditions and variant mapping for a personalisation rule
Rules are conditions plus content plans - no code required.
The rules side

Visual rule builder. No SQL. No code.

Personalisation rules are defined in a visual editor - not in code. Each rule has a set of conditions (if intent score is above 60 and the visitor has visited pricing) and a content plan (show the high-intent hero, the case study proof block, and the book-a-meeting CTA). Rules are evaluated in priority order on every request.

What teams say after going live

The pipeline explanation sold it for us. Under 50ms, first-party only, no cookies - that checked every box our legal team had. We were live within an hour of signing up.

Thomas Becker

CTO · Growlytics

I was expecting a week of engineering work. It was a script tag and an afternoon in the CMS. The rules editor is genuinely intuitive - I set up our first three personalisation rules myself.

Sanne de Vries

Head of Growth · Frontline Agency

What surprised me most was the intent scoring. Seeing a real-time score update as I browsed the demo - and then watching the hero change when I crossed 60 - made the whole thing click instantly.

Priya Nair

Marketing Manager · JobBridge

How to go live

  1. 1
    Add the script tag

    Copy one JavaScript snippet from your dashboard and add it to your site's <head>. Works with any tech stack - Next.js, Webflow, WordPress, Shopify, custom HTML. No SDK to install, no build step to change.

    2 minutes
  2. 2
    Create your first content variants

    Open Sanity and duplicate your existing hero section. Write an alternative headline and CTA for a specific audience - LinkedIn visitors, high-intent returning users, or enterprise prospects. Publish.

    10 minutes
  3. 3
    Define a personalisation rule

    In the rule editor, set the condition (utmSource equals linkedin), map it to your new hero variant and a matching CTA, and set a priority. Publish the rule. The engine starts using it on the next page load.

    3 minutes
  4. 4
    Watch and iterate

    Open the analytics dashboard. See how your variant performs versus the default. Use the A/B testing module to run a controlled experiment. When the result is statistically significant, promote the winner and start the next test.

    Ongoing

Common questions

Does the snippet slow down my site?

No. The edge function runs before the page is served, not after it loads. It adds zero blocking load time. The total pipeline - signal reading, enrichment, scoring, and variant selection - completes in under 50ms and runs in parallel with your page render.

What happens if no personalisation rule matches?

A default content plan is served - the same hero, proof section, and CTA your site currently shows. Personalisation is additive: visitors who don't match any rule see your existing content unchanged.

How is visitor data stored?

All behavioural data is stored first-party in your own database - not on our servers. Enrichment data (company name, industry) is resolved at request time and cached briefly for performance. No third-party cookies are set. All data handling is GDPR compliant by design.

Can I preview what a visitor from a specific segment will see?

Yes. The Scenario Control panel (available on your demo page) lets you simulate any visitor profile - UTM source, intent score, funnel stage, company type - and watch the page adapt in real time. No real visitor data is used.

Does it work on my existing CMS?

Mister Chameleon uses Sanity as its content layer for variant storage. Your existing website CMS is untouched - you don't need to migrate content. The variant layer sits alongside your existing setup and only activates when a personalisation rule matches.

See it live in your own browser

Our interactive demo lets you simulate any visitor profile and watch the page adapt in real time. No sign-up required.