Scrutinizer × AdSERP

Each page below replays a complete search session from the AdSERP dataset: numbered eye fixations, mouse cursor path, page scroll positions, and Scrutinizer-simulated peripheral vision — showing what the searcher could actually resolve at each moment. The background image is rendered through Scrutinizer's LGN/V1/DoG foveated pipeline with infinite visual memory accumulation.

AdSERP: 47 participants, 2,776 transactional Google queries, Gazepoint GP3 HD eye tracker at 150Hz. Trials below are prototypical examples of distinct search behaviors.

Positional accuracy: fixation overlay has median <13px offset, max ~45px at page bottom. SERP HTML is re-rendered locally; element heights differ from the original Chrome 110/Windows session due to external resource loading (Maps tiles, product images). Fixation coordinates (FPOGX/FPOGY) from AdSERP are pixel-verified accurate against synthetic test pages.

Pupil LF/HF — Low/High frequency power ratio of pupil diameter oscillations (Duchowski 2026, Butterworth IIR: LF 0–1.6 Hz / HF 1.6–4 Hz, 1s sliding window). Higher values = higher cognitive load. Amber timeline track and color mode.

step through fixations · Space play/pause · drag timeline to scrub · Window selector limits visible fixation history

quick_decider
quick decider
p032-b6-t8
"buy hartleys hartleys lemon jelly 135g"
9 fixations · Scrutinizer rendered
ad_focused
ad focused
p029-b2-t10
"buy nike nike 375833 pro bra"
22 fixations · Scrutinizer rendered
medium_engagement
medium engagement
p016-b3-t1
"buy blues breakers with eric clapton"
60 fixations · Scrutinizer rendered
mouse_follower
mouse follower
p047-b1-t9
"buy dayco dayco wp259k2a timing belt kit"
65 fixations · Scrutinizer rendered
regressive_scroller
regressive scroller
p035-b4-t2
"buy avon anew ultimate 7s cleanser"
61 fixations · Scrutinizer rendered
deep_explorer
deep explorer
p011-b3-t2
"buy playmobil gymnast on balance beam"
89 fixations · Scrutinizer rendered
long_trial
long trial
p037-b2-t5
"buy fusion ms wr600cv dust cover"
276 fixations · Scrutinizer rendered
scanner
scanner
p045-b2-t6
"buy gates gates 22650 lower radiator hose"
312 fixations · Scrutinizer rendered
clean_serp
clean serp
p020-b6-t10
"buy acdelco acdelco 18a753 brake rotor"
230 fixations · Scrutinizer rendered
clean_serp_2
clean serp 2
p047-b2-t6
"buy stens solid state module briggs 397358"
198 fixations · Scrutinizer rendered
satisficer
satisficer
p031-b5-t2
"buy ganz rooster oil bottle by walterdrake"
29 fixations · Scrutinizer rendered
satisficer
satisficer
p049-b2-t6
"buy robert sorby robert sorby 410 sandmaster"
26 fixations · Scrutinizer rendered
satisficer
satisficer
p017-b3-t3
"buy hampton direct microwave egg poacher"
22 fixations · Scrutinizer rendered
optimizer
optimizer
p021-b6-t2
"buy clauss clauss 18429 titanium wire cutters"
54 fixations · Scrutinizer rendered
optimizer
optimizer
p019-b6-t5
"buy dolce gabbana dolce gabbana dg2075 sunglasses"
56 fixations · Scrutinizer rendered
optimizer
optimizer
p021-b2-t10
"buy home win arsenal fc fleece blanket"
9 fixations · Scrutinizer rendered
instant_decision
instant decision
p013-b2-t3
"buy romantic music for cello"
14 fixations · Scrutinizer rendered
instant_decision
instant decision
p026-b4-t9
"buy shimano shimano bhaltair reel bag medium"
14 fixations · Scrutinizer rendered
instant_decision
instant decision
p032-b4-t9
"buy epakitin epakitin powder 180gm"
14 fixations · Scrutinizer rendered
regressive
regressive
p004-b2-t4
"buy acdelco acdelco 6k458 fan belt"
50 fixations · Scrutinizer rendered
regressive
regressive
p007-b6-t8
"buy dermalogica dermalogica active moist 3 5oz"
50 fixations · Scrutinizer rendered
regressive
regressive
p035-b1-t8
"buy imak imak arthritis gloves small"
50 fixations · Scrutinizer rendered
forward_only
forward only
p014-b6-t8
"buy alessi alessi birillo toothbrush holder"
50 fixations · Scrutinizer rendered
forward_only
forward only
p034-b2-t3
"buy portal"
50 fixations · Scrutinizer rendered
forward_only
forward only
p027-b3-t6
"buy denso 673 1306 ignition coil"
50 fixations · Scrutinizer rendered
scanner
scanner
p038-b5-t9
"buy copernicus piezo electric rocks"
57 fixations · Scrutinizer rendered
scanner
scanner
p010-b4-t7
"buy vdo vdo pm151 blower motor"
59 fixations · Scrutinizer rendered
scanner
scanner
p031-b3-t9
"buy timken timken 1932s seal"
46 fixations · Scrutinizer rendered
deep_click
deep click
p024-b3-t5
"buy lego lego dinosaurs mosasaurus 6721"
50 fixations · Scrutinizer rendered
deep_click
deep click
p035-b4-t1
"buy spy spy optic discord square sunglasses"
50 fixations · Scrutinizer rendered
deep_click
deep click
p024-b5-t5
"buy m a c mac lipglass prrr"
50 fixations · Scrutinizer rendered
How this was built

Each background image is a full-page foveated render produced by Scrutinizer, a neuroscience-based peripheral vision simulator. Scrutinizer models the human visual system's resolution falloff from fovea to periphery using a pipeline inspired by the lateral geniculate nucleus (LGN), primary visual cortex (V1), and difference-of-Gaussians (DoG) spatial frequency filtering.

Infinite visual memory mode accumulates every fixation across the entire scanpath. As each fixation is replayed, the foveal region at that position is "remembered" — remaining sharp while everything else degrades through the peripheral pipeline. The final image shows exactly what the participant could have resolved across their full search session: sharp where they looked, degraded where they didn't.

Pipeline:

  1. The interesting trials script identifies prototypical search behaviors from 2,776 AdSERP trials
  2. The AdSERP importer parses fixation CSVs (page-space coords from Gazepoint GP3 HD at 150Hz), mouse events (evtrack pageX/pageY), scroll timelines, and trial metadata — reconciling two coordinate systems (coordinate reference)
  3. The fullpage gazeplot script walks each fixation through Scrutinizer's Electron-based WebGL pipeline with TEST_VISUAL_MEMORY=-1 (infinite accumulation), then tile-captures the full page at each scroll position and stitches them
  4. The batch gazeplot mode bulk-loads all fixation positions into the visual memory buffer at once (instead of walking them one-by-one through the render loop), then tile-captures the page — reducing capture time from minutes to seconds per trial
  5. The interactive overlay is generated as self-contained HTML with the gazeplot PNG as background
  6. The saliency export CLI (docs) computes per-fixation saliency and Rosenholtz feature congestion using the same Oklab DoG + local variance pipeline as the real-time renderer — but headless in Node.js, no GPU required (~100ms/image)

Multi-track timeline: The timeline strip shows five parallel data streams for each fixation: Saliency (visual pop-out at gaze location), Clutter (Rosenholtz feature congestion), Pupil (dilation from 150Hz pupillometry), Scroll (forward/regression direction + depth), and Dwell (fixation duration). Bar height encodes intensity within each track; color encodes the signal value. Scrub across fixations to see how visual complexity, cognitive load, motor behavior, and attention duration co-vary in real time.

DOM-anchored fixation positioning: Fixation coordinates from the eye tracker are in screen-pixel space (1280×1024), but the SERP was displayed at 1422 CSS pixels (90% display scaling). Rendering at a different width causes content reflow, shifting elements vertically. Instead of coordinate transforms, each fixation is anchored to the DOM element it landed on: during the build step, generate-anchors.js loads each SERP in Playwright at the original window width, uses elementFromPoint to map each fixation to a CSS selector + offset, then the build script re-resolves those anchors at the render width. The fixation dot lands on the correct element regardless of layout width. This approach was inspired by DOM-based event logging (Edmonds, 2003) — the same principle that anchors interaction events to page structure rather than screen coordinates.

Data: AdSERP — Latifzadeh et al., 2,776 transactional Google SERP queries, 47 participants, Gazepoint GP3 HD eye tracker, simultaneous mouse + scroll + gaze recording. Dataset on Zenodo.