Both are fair. Here is the honest answer to each — and the one distinction that matters in both cases.
Product analytics platforms give you full cross-session behavioral history per user — event timelines, user profiles, funnel analysis. They can tell you "this user visited pricing three times across four sessions over two weeks." That data is real, it exists today, and your team already pays for it. It is a fair question to ask.
Product analytics data lives in a dashboard. A human reads it, decides what to do, and triggers an email or a task — hours to days after the session ends.
Even with cross-session history, product analytics platforms process the current session's events 15–30 minutes after the SDK flushes. By then, the user has converted, churned, or left.
Product analytics data is siloed per customer. Your behavioral history never informs another company's model — and theirs never informs yours. Every company learns only from itself.
This is a real and valid approach. Appending recent page URLs or event names to the agent system prompt gives the LLM some behavioral context, it is fast to build, it requires no third-party SDK, and for a prototype or low-volume product it might be genuinely sufficient. Any engineer who raises this question has thought about it and is not wrong to ask.
Passing 5 URLs to an LLM means the LLM classifies intent on every request, inside the context window, non-deterministically. The same sequence can produce different inferences across runs.
The last 5 page visits is single-session only. A returning user on visit four, with a clear purchase trajectory across prior sessions, looks identical to a first-time visitor.
Raw page URLs give the LLM zero adversarial signal. A refund exploiter researching policy exceptions looks identical to a legitimate support query in a 5-URL list.
LLMs are generative models doing a discriminative task on integer sequences they have no pre-trained understanding of. Passing [102, 102, 504, 202, 301] to an LLM requires natural language wrappers on every call and still produces a language-model approximation of what a purpose-built sequential classifier computes precisely.
LLM intent inference from 5 URLs takes 800ms–2,000ms per call in production (p95 under load: 3,000–5,000ms). This is added directly to the user's perceived wait time before the agent responds. Every session. Two-call architectures (classify then respond) double this.
Adding 350 tokens of raw behavioral context to every agent call costs real money at volume — and the token overhead grows if you want richer context.
An LLM inferring intent from raw URLs is non-deterministic. The same behavioral sequence produces different intent inferences across runs — you cannot rely on it for consistent agent behaviour.
5 URLs in a system prompt is a prototype. It doesn't handle cross-session trajectory, adversarial detection, OOD signals, or scale beyond a few thousand sessions cleanly.