Red-Teaming Shopping Data with FutureX
Use FutureX to build a surveillance pricing audit lab that compares prices across incognito sessions, VPNs, and simulated income signals to expose price personalization.

Developers trust that the price they see is the price everyone sees. In practice, retail endpoints routinely return different numbers to different clients, and the differences are engineered to be hard to observe. The 2025 FTC staff report on surveillance pricing documented how merchants blend location, device fingerprints, purchase history, and inferred income into real-time price adjustments. What the FTC study does not tell you is how to verify those claims on your own machine. This developer guide closes that gap: you will use FutureX, the agentic coding assistant inside FIM, to turn your local environment into a surveillance pricing audit lab that autonomously scrapes and compares prices across incognito sessions, VPNs, and simulated income signals.
Why Your Shopping Data Is a Price Signal#
Price personalization is not a single algorithm; it is a family of techniques that estimate willingness to pay from behavioral data. A retailer may show a higher price to a shopper on a premium device in an affluent ZIP code, and a lower price to a new visitor in an incognito window. The signal sources are mundane: headers, client hints, IP geolocation, loyalty cookies, and the timing of your visit.
The FTC study examined retail, travel, and food delivery platforms and found that data brokers feed pricing engines with hundreds of derived attributes. The opacity is the real problem. Because the models are proprietary, the only reliable way to know whether a price was personalized is to compare offers across controlled identities. That requires an agentic workflow — the kind FutureX is built for. The agent writes the browser automation, rotates the network path, and keeps the audit reproducible.
Building the Audit Harness with FutureX#
Start by giving FutureX a task spec that describes the audit: a list of product URLs, a set of identity labels, and the proxies to use. FutureX scaffolds a Python project with Playwright, then implements the session loop for you. Each loop iteration opens a fresh browser context, visits the product pages, and records the rendered price.
Session and Identity Rotation#
Each audit identity needs a clean browser context. Incognito sessions give you a blank cookie jar, but they share a network path with your real traffic. To diversify the path, route each identity through a different VPN endpoint or residential proxy. FutureX can manage a proxy pool from environment variables and rotate the exit node on every run.
The key detail is isolation. Do not let contexts share localStorage, service workers, or HTTP cache. In Playwright, that means creating a fresh browser.new_context() per identity and never reusing it across runs. If a merchant tags the browser fingerprint, a stable user agent and viewport per identity will keep the simulation consistent.
Simulating Income and Device Signals#
To feed the pricing engine the same inputs a real shopper would send, you have to control the observable variables. The most common proxies are geography, device class, and session history. A minimal identity matrix might look like this:
@dataclass
class AuditIdentity:
label: str
proxy: str
zip_code: str
device: str
loyalty: bool
IDENTITIES = [
AuditIdentity("income_low", "us-nyc-01", "11201", "android", False),
AuditIdentity("income_high", "us-sfo-01", "94105", "iphone", True),
AuditIdentity("control", "us-den-01", "80202", "desktop", False),
]FutureX translates this matrix into Playwright launch arguments: geolocation, timezone, user agent, and locale. You should also randomize the order of visits and add human-like delays. Otherwise the pattern of requests becomes its own fingerprint.

Source: hklaw.com
Collecting and Normalizing Price Observations#
Raw HTML is not comparable. A price is only meaningful once it is mapped to a SKU, a variant, and a unit. The pipeline has four stages: fetch, extract, normalize, store. Fetching is the web scraping layer: a request with retries, rate limiting, and a cap on concurrent sessions. Extraction pulls the price from JSON-LD structured data or from the rendered DOM. Normalization converts currency strings such as $1,299.00 into integer cents and attaches metadata.
Store every observation with the identity label, the timestamp, the proxy endpoint, and a hash of the page. A simple SQLite table is enough for a single-product audit; Parquet files are better once you scale to hundreds of SKUs. FutureX can generate the schema and the SQL migration, then adapt the parser when a merchant changes their markup. That adaptability is what makes an agentic audit sustainable: when a selector breaks, the agent reads the new DOM and patches the scraper.
Respect the practical limits of web scraping. Keep request rates low, honor robots.txt, and prefer lightweight privacy tools such as rotating user agents and temporary email aliases over aggressive evasion. The goal is to observe the merchant's public pricing behavior, not to stress the infrastructure.

Source: stateofsurveillance.org
Analyzing the Price Differential#
Once you have a tidy table of prices, the analysis is straightforward. For each SKU and variant, compute the median price per identity label. If one identity consistently pays more than another for the same product, you have evidence of price personalization. Use log fold change to express the difference, and a bootstrap or Mann-Whitney test to check whether the gap is stable across repeated runs.
Do not over-interpret a single observation. Prices fluctuate for legitimate reasons such as inventory, promotions, and regional taxes. The strength of the audit is the identity matrix: when income_high and income_low see different prices on the same SKU in the same hour, the identity variables are the most likely explanation. FutureX writes the analysis script and regenerates the report as part of the audit, so the methodology stays identical run after run.
Running the Audit as a Scheduled Experiment#
An audit is only useful if it repeats over time. Wire the FutureX workflow into a nightly cron job or a GitHub Actions schedule that triggers a fresh identity matrix, appends the observations, and posts a summary to Slack. Because the harness lives in your local environment or a CI runner, you control the data end to end.
Treat the audit as a red-team exercise against your own shopping data. Check the terms of service for the sites you test, keep the traffic footprint minimal, and publish only aggregated findings. The point is to inform consumers and regulators — including the ongoing follow-up to the FTC study — about how pricing actually behaves. A well-run surveillance pricing audit gives you the receipts.

Source: ftc.gov
Conclusion#
Red-teaming your own shopping data is the fastest way to learn whether price personalization affects your wallet. With FutureX, the entire surveillance pricing audit lives in a reproducible pipeline: identity matrix generation, browser automation, proxy rotation, web scraping, normalization, and statistical comparison. Start small with one retailer, three identities, and a one-week schedule, then broaden the audit to more SKUs and geographic proxies. The tools you build here are privacy tools in their own right — they turn opaque pricing into data you can see, measure, and question.
Related reading

Beat Surveillance Pricing with a FutureX Counter-Agent
A practical vibe-coding walkthrough for building a FutureX counter-agent that simulates shopping sessions with varied digital fingerprints, exposes surveillance pricing, and auto-reports violations to regulators.
surveillance pricing5 min read

The Terminal Renaissance: Why FutureX Fits the TUI Comeback
Developers are returning to keyboard-driven, lightweight interfaces, and FutureX's terminal-native agent is built for the terminal UI comeback.
terminal ui comeback6 min read

FutureX vs. the IDE: Terminal-Native Agents Win the Benchmarks
Terminal-native agents dominate SWE-bench and Terminal-Bench because autonomous coding is about executing and iterating in a real environment, and FutureX is built for exactly that.
terminal-native coding agent7 min read