Live simulation

See the behavior we package.

How the data is made

Synthetic shoppers that actually browse.

Polanyi sends AI shoppers, each with its own goal, budget, and taste, to a real storefront. They search, compare, and reject like real customers, then stop before payment. Every decision becomes event data your recommender can learn from.

1 — Generate a population

Statistically grounded AI shoppers

1PopulationStatistically grounded2GoalA different objective each3BrowseReal commerce environments4CaptureStructured behavioral data5Your RecSysAugment sparse interactions#482134 · Chicago, ILPhysical therapist#037761 · Tucson, AZRetired teacher#275627 · Austin, TXData analyst#519045 · Columbus, OHER nurse#661219 · Athens, GAStudent#109338 · Richmond, VAParalegal#780452 · Fresno, CAFarm manager#330731 · Brooklyn, NYUX designer#445823 · Boise, IDBarista#902167 · Sarasota, FLRetired engineer#221440 · Minneapolis, MNHR manager#813629 · Denver, COSoftware engineerMatched to real-world demographicsCensus-grounded ages, places, jobs, interestssite diagnosisshop.example.comvertical: marketplacesearch_compare_selectSearch, compare, pick onebrowse_deals_saveBrowse deals, save favoritesgift_within_budgetFind a gift within budgetcompare_and_abandonCompare, then walk awayEach shopper gets one template,personalized to their location,budget and interests.0unique goals from 4 templatesshop.example.comSearchUnder $130TrailRoadTrail Runner X$119Road Glide 2$142Tempo Lite$109Summit GTX$165Cloud Pace$128Daily Trainer$95Waiting for a shopperSEARCH→FILTER→VIEW_ITEM→COMPAREREJECT→LIKE→ADD_TO_CART→SELECTSTOP12 independent sessions, one browser eachShoppers never talk to each other. No shared state.event streamidlerecsys_events.jsonl0 events · 0 sessions+ .parquet, personas.jsonSynthetic behavioris_synthetic: truetraining_use: offline_sandbox_onlyYOUR EXISTING PIPELINEPolanyi exports the data. You own the model.Training datasparse first-party logsYour ranking modelretrained and evaluated by your teamwaiting for dataRecommendations for #4821popularity baseline (illustrative)14K Smart TV0.822Wireless earbuds0.743Air fryer XL0.694Trail Runner X20.415Running socks, 3-pack0.336Foam roller0.22export

Agent #4821 · now browsing

syn_4821

Age

34

Location

Chicago, IL

Occupation

Physical therapist

Interests

Trail running, podcasts

Personality

Methodical

Preference

Price-conscious

Goal

Find running shoes under $130

Behavioral trajectory · 0 of 9 events captured

SEARCH→FILTER→VIEW_ITEM→COMPARE→REJECT→LIKE→ADD_TO_CART→SELECT→STOP

What you take home

Each run exports personas.json, recsys_events.jsonl (and .parquet) and summary.json. You bring them into your existing training and evaluation pipeline. Polanyi never touches your model.

Step by step

From a population of agents to a better recommender.

Here is each step in detail, using a real session our agents ran on amazon.com: who the agents are, what they set out to do, what they did, and what you receive.

01Population

We start with people who look like your market.

Every agent is built from a detailed synthetic persona: an age, sex, home town, education, job, household, hobbies and habits. The population is drawn so that, taken together, it matches real-world statistical distributions such as census data.

That matters because a recommender learns from the crowd. If the crowd skews young, urban or affluent, so do the recommendations. Matching the real mix means the behavior you get back reflects the shoppers you actually serve.

  • Grounded in real data. Demographics follow published distributions rather than a writer's guess.
  • Tunable to you. Narrow the population to your markets, age bands or customer segments.

Agents sorted by age vs. real-world share

18–2425–3435–4445–5455–6465+
Mary, 28Alicia, 29Deeva, 85three of the agents you'll meet below

Each dot is one released agent. Dashed outlines show the U.S. adult age mix (approximate census shares); agents are drawn so the two line up. The same holds for sex, region, education, occupation and household.

02Goal

Each agent gets a reason to shop and a real browser.

An agent with nothing to do produces noise. So each one gets a concrete shopping goal that fits who they are: their persona, their budget style and what your store sells. Mary, a budget-minded 28-year-old in Madison, sets out to find wireless headphones and compare them properly.

Then we hand them a real web browser pointed at a real store. There is no script and no fixed path. The agent reads the page, decides where to go next and changes its mind, just as a person would.

  • Different goals, different journeys. Gift buyers, deal hunters and careful researchers each move differently.
  • Safe by design. Agents stop before sign-in, checkout or payment. Nothing is bought.

How one agent's goal is written

Persona
Mary Alberti, 28
Madison, WI · counter worker · weekend runner
Budget style
Budget-sensitive
Open to one worthwhile upgrade
Store
amazon.com
Search, filters, reviews, delivery
Shopping goal

03Browse

They browse the way people really do.

Once inside, the agent shops. Mary searched, sorted by price, narrowed to over-ear models, re-sorted by reviews, skimmed five results, opened four product pages and compared a $40 pair against $200–$450 alternatives before choosing the soundcore Q20i.

Depending on the store, agents also save and like items, pass on ones that don't fit, add to cart, rate and write reviews. What they skip says as much as what they pick: Mary looked at AirPods and Bose, then walked away from them.

  • Comparison, not just clicks. Back-and-forth between products is where real preference shows up.
  • The reasons come too. Each session ends with the signals behind the choice, like price and battery life.

Mary's real session · 17 recorded events

StartFilterScanInspectPickLearn
00/17
soundcore Q20i
4.5★ · 45.6k reviews · 40h with ANC
$39.99
Apple AirPods Max 2
4.5★ · 1k reviews · up to 20h
$429
Bose QuietComfort Ultra
4.3★ · 2.9k reviews · up to 30h
$449
Sony noise-cancelling
4.2★ · 20.1k reviews · up to 30h
$198

Recorded on amazon.com, October 2026. Darker dots carry stronger preference signal.

04Capture

Every action becomes a clean, labeled event.

We record each step as a structured event: what happened, to which product, in what order, and how strongly it signals preference. Mary's 17-step session became 17 rows of training data.

Not every action means the same thing, and the labels say so. Seeing a product is exposure, not interest. Opening it is a weak signal. Saving, adding to cart, choosing or reviewing is strong. Your model learns the difference instead of treating every click alike.

  • Kept separate from your customers. Synthetic events carry their own IDs and are never joined to real people.
  • Only what was observed. We don't invent dwell time or scroll depth the agent didn't actually produce.

One recorded event, as delivered

{
"event_type": "item_selected",
"item_id": "B0C3HCD34R",
"signal_strength": "very_strong",
"feedback_class": "implicit",
"sequence_index": 15,
"actor_id": "syn_mary_alberti_…",
"is_synthetic": true,
"training_use": "offline_sandbox_only"
}

How strongly each action counts as preference

Saw it in results
item_impression
Weak
Opened the product page
item_viewed
Weak
Searched or filtered
search · filter
Medium
Saved or liked it
save
Strong
Added it to cart
cart_add
Strong
Chose, rated or reviewed it
selected · review
Very strong
05Your RecSys

Your recommender learns from far more behavior.

Most stores have the same problem: a few shoppers generate most of the data, and most products, especially new ones, have little or no history. Recommenders struggle there, so they fall back on bestsellers.

Synthetic journeys fill those gaps. You add them alongside your own user data to warm up a new model, give new products their first signals, and test ranking changes offline before real customers see them.

Personalize
Recommendations that fit new and returning shoppers, not just your heaviest users.
Convert
More relevant products surfaced earlier, so more sessions end in a purchase.
Lift revenue
Better ranking across the whole catalog, including products with no history yet.

Your interaction data, before and after

123456789newnewnew
User 1User 2User 3User 4User 5User 6Agent 1Agent 2Agent 3Agent 4Agent 5Agent 6
Recorded interactions
12
Products with behavior
7/12
Your users Synthetic agents No signal yet

Illustrative. Each row is a shopper, each column a product, each filled square a recorded interaction.

Next step

Build a recommendation system before history arrives.

We’ll show you how Polanyi Labs packages synthetic behavioral data for your catalog and drops into the stack you already have.