andersson.consulting0:00
LIVE 0:00 · 3 EVENTSBook 20 minutes
MSG 01Triggersession_startChannelwebSent—VariantARule—Statusarmed

You’ve been a prospect for 0:000:00.You’re a lead now. It took 0:000:00.You were my prospect. Not any more.

I design and ship lifecycle programs — the CRM, the growth loops and the AI that runs them — for brands and scale-ups in Sweden, Denmark and Norway.

I’m Alexander Andersson, a CRM and lifecycle marketing consultant. This page runs a lifecycle program on you, in the open: profile, rules, messages, an off switch. Click around and watch the panel.

Free, on Google Meet. You leave with what I’d fix first.

LAST MESSAGE SENT TO YOUMSG 01
Welcome. You’re Prospect #1.
This site is a lifecycle program and you’re in it, on every page. Five rules are armed and watching this tab. The first fires after 15 seconds on screen unless you click something.
NEXT R1 Skimmer fires in 0:15 unless you click
ON THE RECORD · 15+ YEARS SENIOR CRM
IKEA Ingka Group · Head of CRM, 30+ markets
Bauer Media Group · Head of CRM, 20+ brands
Tibber · Vivino · Schibsted · Compricer
ON THE RECORD · 15+ YEARS SENIOR CRM
IKEA Ingka GroupHead of CRM · 30+ markets
Bauer Media GroupHead of CRM · 20+ brands, 6 markets
TibberEnergy-tech · 4 markets
Vivino · Schibsted · CompricerAlso: CDON · Adobe · HP
LOG3 EVENTS
———
———
———
Full log ↓
MSG 02Triggerin_viewChannelwebSentqueuedVariantA · defaultRuleR2 watchesStatusarmed

Receipts.

CRM work from Tibber, Bauer and IKEA. Every number wears a label saying where it came from.

R/01 · TibberEnergy-tech · 4 markets · ~550k customers

Referral program lifts inviters 2.6× and referrals 37% in its first week

2.6×
more customers sending invites
Client-reported · Tibber
opening logs receipt_opened
R/02 · Bauer Media GroupPublishing · 20+ brands · 6 markets

CRM climbs from zero to past a fifth of divisional revenue

0→20%+
CRM’s share of divisional revenue
Client-reported · Bauer
opening logs receipt_opened
R/03 · IKEA Ingka GroupRetail · Head of CRM · 30+ markets

Member proposition moves from discounts to engagement

No number.
opening logs receipt_opened
R/04 · Spark — own buildAI email & content tool · Braze

Flagship AI feature goes unused because the copy is already good enough

No number.
A lesson instead.
Observed · own build
opening logs receipt_opened
MSG 03Triggerin_viewChannelwebSentqueuedVariantARule—Statusarmed

I’ve been the person who owns CRM. Now I do it for you.

Alexander AnderssonAlexander Andersson
ALEXANDER ANDERSSONMALMÖ · SE

For fifteen-plus years I’ve run CRM from the inside — the person the numbers land on. Head of CRM at IKEA Ingka Group across 30+ markets. Head of CRM at Bauer Media Group across 20+ brands in six markets. At Tibber — energy-tech, four markets — the referral program and Spark, the AI email tool I built on Braze.

Now I work independently, from Malmö, for a small number of clients at a time across Sweden, Denmark and Norway. I don’t hand over decks. I build the program, wire it into your stack and leave it running. When AI helps, I build the tool myself.

— Alex

  • IKEA Ingka GroupHead of CRM30+ markets
  • Bauer Media GroupHead of CRM20+ brands · 6 markets
  • TibberEnergy-tech4 markets · ~550k customers
  • Vivino · Schibsted · CompricerAlso on the recordalso: CDON · Adobe · HP
MSG 04Triggerin_viewChannelwebSentqueuedVariantpendingRuleR4 watchesStatusarmed
01 · Max 2 clients

Fractional Head of CRM

Senior CRM leadership without the hire. I sit in your team, own the program and ship it.

Two clients at a time. Never three.
Fractional Head of CRM in detail →
02 · Fixed scope

Lifecycle & retention program

One defined program — journeys, triggers, measurement — designed, built and live in your stack.

Ends with a running program.
Lifecycle & retention program in detail →
03 · Productized

AI marketing audit

Where AI pays off in your CRM and marketing — and what to build first.

A ranked build list.
AI marketing audit in detail →
TOOLS · WHAT I BUILD WITH
Braze · Klaviyo · Salesforce Marketing Cloud Next · Databricks · XGBoost · MLflow · Python · Cloudflare
Hands on keyboard. The p(book) formula on this page is the toy version of what runs on Braze, Databricks, XGBoost and MLflow.
TERRITORY · WHERE I WORK
Sweden · Denmark · Norway
Based in Malmö, a short train ride from Copenhagen. Clients across all three, in English or Swedish.
MSG 05Triggerin_viewChannelwebSentqueuedVariantARuleallStatusarmed

How this page works.

Five stages, five rules, a propensity score, one win-back and an off switch. The same mechanics I’ve built in Braze and the rest of the stack — pointed at a website visitor, with the wiring left visible. It follows you across the site: every page you open is a signal, carried from page to page in this tab’s memory.

  1. 01YOUArrivedLanded. No clicks yet.
  2. 02EngagedFirst click of any kind.
  3. 03EvaluatingTwo receipts, or one program.
  4. 04IntentA receipt and a program.
  5. 05Bookedbooking_confirmed fired.
SEQUENCE · SEND STATE PER RULE0 FIRED · 6 ARMED
  1. R1SkimmerARMEDwaiting for you
    IF 15 s on screen, zero clicks
    THEN send “Skimming? Fair.” · in-page
  2. R2Proof-seekerARMEDwaiting for you
    IF receipts_opened ≥ 2
    THEN send “Two receipts in.” · in-page
  3. R3AI-curiousARMEDwaiting for you
    IF interest.ai ≥ 1
    THEN send “The AI bit, without the slideware.” · in-page
  4. R4ReadyARMEDwaiting for you
    IF program_viewed and 40 s on screen
    THEN send “You’ve read the offer.” · in-page
  5. R5ReturnerARMEDwaiting for you
    IF back after ≥ 10 s away from this tab
    THEN send “Welcome back.” · in-page
  6. WB1Win-backARMEDwaiting for you to leave
    IF pointer heads for the tab bar after 12 s, on any page · once · not booked
    THEN draft “You left at m:ss. Fair.” · copy picked by p(book), then rewritten by Claude from your scoring card · email, +24 h
SUPPRESSIONBooking suppresses all sales rules. Anything unfired stands down and onboarding starts. Turning tracking off disarms everything and wipes the profile.
SCORING · p(book)ESTIMATE
p(book) = 1 / (1 + e−logit)
logit = −3.20 + Σ weight × signal
cap 0.92 · = 1.00 after booking · = 0 when tracking is off
How this score works, weight by weight →
RIGHT NOW, WITH YOUR NUMBERS
signalweightyoulog-odds
receipts_openedreceipts you opened · 0–⁠4+0.550+0.00
programs_viewedprograms you looked inside: the card, or its own page · 0–⁠3+0.850+0.00
pages_readpages beyond the home page, 15 s or more on screen · cap 4+0.350+0.00
opened_matchopened the program marked as your match+0.400+0.00
book_intentclicks toward booking (a book button, a time), email or phone · cap 2+0.600+0.00
read_minminutes reading: a card open, or a page on screen · cap 3+0.300+0.00
active_minminutes on screen, input in the last 30 s · cap 5+0.200+0.00
scroll_depthfurthest point on screen, home page · 0–⁠1+0.900+0.00
came_backreturns after 10 s or more away · cap 2+0.350+0.00
copied_textcopied text · the length is logged, never the text+0.300+0.00
idle_minminutes without input, after a 30 s grace · cap 4−0.250+0.00
exit_intentheaded for the tab bar, or pressed leave−0.600+0.00
intercept−3.20
logit−3.20
p = σ(−3.20) = 0.039
p(book) · 1 bar / 2 s4% now · peak 4%

A logistic model with hand-set weights: the same shape as a real propensity score — signals in, log-odds, a probability out. Nothing from the analytics feeds back into it, so there’s nothing to train it on. The real thing learns its weights on Databricks, XGBoost and MLflow — that’s what I build with.

EVENT STREAM · NEWEST FIRSTSOME EVENTS GO TO MY ANALYTICS · THE LOG ITSELF STAYS IN THIS TAB · 3 EVENTS
MSG 06Triggerin_viewChannelwebSentqueuedVariantARuleconversionStatusarmed

Reply: book 20 minutes on your CRM.

If you know what leaks, we go straight to it. If the whole program needs work, we go through it, onboarding to win-back, and I tell you where I’d start. — Alex

LENGTH20 minutes · Google Meet
WHENMon–Fri · 09:00–17:00 Stockholm time
TERMSfree · what we look at stays confidential
EMAIL[email protected] →
PHONE
ELSEWHERELinkedIn →
STAGE 01 · ARRIVEDp(book) 4%
WB1TRIGGERexit_intent at 0:00CHANNELemailSEGMENTcold · p 0.04SUPPRESS IFbooking_confirmed
WOULD SEND +24 h · NOT SENT — no address on file
COPY · template
FROMAlexander AnderssonTOProspect #1SUBJECTYou left at 0:00. Fair.

Hi,

You opened 0 of 4 receipts, looked inside 0 of 3 programs, got 0% of the way down the page and headed for the door. Leaving is why win-back emails exist, and why this one is short.

If a flow of yours leaks, reply. I’ll tell you what I’d change first.

— Alex

P.S. One win-back, then silence. That’s the rule.

Book 20 minutes instead