Debugging AI personalization — how-to
An Einstein score looks wrong, a generated copy field is blank, or an agent answers confidently and incorrectly. The diagnostic is always the same: figure out which surface produced the value, then walk down to the layer where it actually breaks. The AI-personalization debugging playbook.
A value is wrong, blank, or surprising, and an AI surface produced it. An Einstein persona looks off for a contact you know well. A generated subject-line field is empty for half the audience. An Agentforce agent stated something confidently false about a customer. The instinct is to blame "the AI" — but each of the three surfaces fails at a different layer, so the first diagnostic step is always the same: which surface produced this value, and what does that surface actually read?
Step 0 — Which surface is this?
[ Einstein score / persona ] → reads your tenant's engagement history
[ Generated copy field ] → an external model call wrote (or failed to write) a DE
[ Agent answer / action ] → Agentforce read the Data Cloud unified profileEach surface has a different layer to walk down. Name the surface first; then follow the matching path below.
Einstein score looks wrong
An Engagement Scoring persona, an STO time, or a Content Selection pick that doesn't match what you'd expect.
- Is there enough history under it? The most common cause is a thin engagement history — a new Business Unit, a low-volume program, or a contact with almost no sends. The model extrapolates from little and reports a confident score anyway. Check the volume before anything else. (See gotchas — gotcha 1.)
- Is the model reading the data you think? Confirm the feature is scoped to the right Business Unit and the engagement it's learning from is the engagement you mean — not a test BU, not a sending pattern that changed last month.
- Did the sending pattern just change? A model trained on one cadence scores oddly right after a big shift (a new program, a frequency change). It re-learns; the transient is expected.
If history is adequate, the BU is right, and the pattern is stable, the score is probably telling you something true that contradicts your intuition — which is the point of having it.
Generated copy field is blank or wrong
A field an external model was supposed to populate is empty, garbled, or stale. This is a data-flow bug, debugged like any AMPscript blank — walk the layers.
[ External model call (Script Activity) ]
↓ writes
[ Data Extension field ]
↓ Lookup at render time
[ Email / CloudPage output ]- Is the value in the DE? Look at the row for an affected SubscriberKey.
- Blank in the DE — the model call failed or never ran for this contact. Check the Script Activity log: a non-200 status, a timeout, a rate-limit error partway through the run (the classic half-personalized send — gotcha 9). If you wrote a fallback on failure, this should show the fallback, not blank; if it's truly blank, the failure path is missing.
- Correct in the DE — the generation worked; the bug is at the render/Lookup layer. The
Lookupkey or DE name is wrong, or the field's being read before the Automation that fills it has run.
- Is it wrong rather than blank? A non-deterministic model produced a bad output that no spot check caught (gotcha 8). This is why generation belongs ahead of time with validation and, for customer-visible copy, human approval — so a bad output is caught in the DE, before the send, not in an inbox.
- Did the run finish? A rate limit returning errors partway leaves the first N contacts personalized and the rest blank. The symptom is "blank for everyone after a certain point." Throttle and retry the unfilled rows.
Agent answered confidently and wrong
An Agentforce agent stated something false about a customer, or took an action on the wrong one. The agent is rarely the bug — the model under it usually is.
- Could a human analyst get this right from the unified profile? Ask the same question of the Data Cloud profile by hand. If a human also can't get a coherent answer, the bug is the data model, not the agent — identity didn't resolve, a relationship isn't modeled, an object isn't documented. The agent inherited the gap. (See the Data Cloud architecture gotchas.)
- Is identity resolved correctly? Two customers merged, or one split, produces an agent that's confidently wrong about who it's discussing. Check resolution before blaming the reasoning.
- For a wrong action: trace the action's approval and audit trail (gotcha 5). An agent that acted without a gate is a governance bug, not a model bug — the fix is the guardrail, not the prompt.
Quick reference
| Symptom | Surface | First thing to check | |---|---|---| | Persona / score looks off | Einstein | Engagement history volume under the model | | Copy field blank for some contacts | External model | Script Activity log — rate limit / failure path | | Copy field blank at render only | External model | Lookup key / DE name / Automation order | | Copy field wrong, not blank | External model | Validation + approval before the DE write | | Agent confidently wrong | Agentforce | Can a human answer it from the profile? | | Agent acted wrongly | Agentforce | Action approval gate + audit trail |
Related
- Marketing Cloud AI gotchas — the failures this page diagnoses
- Einstein for Marketing Cloud — what the scores need to be trustworthy
- Calling external AI from CloudPages — the generation pattern, with the failure path
- Agentforce and Marketing Cloud — why the data model decides the answer
- AI Style Guide — the discipline that prevents this debug session from happening twice