Your AI shopping companion
Meet Lens.
One agent that works for you — before, during, and after every purchase. Lens consults every frontier model, every retailer, and every public dataset, and gives you the one answer that actually fits.
Grounded in peer-reviewed research: 18 AI models, 382,000 shopping trials, submitted to Nature. AI shopping assistants pick non-optimal products 21% of the time and confabulate reasons 86% of the time. Lens is the fix.
Lens is on it…
Sarah's Monday.
One user, one companion, four touchpoints. Every Lens hand you see below is real, installable today, and wired to the same backend — the same triangulated spine, the same watchers, the same profile.
-
☀️ 9:14 AM · ChatGPT
Sarah asks ChatGPT for an espresso machine under $400.
ChatGPT recommends a De'Longhi. A small ◉ Lens pill slides into the corner of the response bubble. Sarah clicks. Lens opens inline: "Spec-optimal for your criteria is a Breville Bambino. The 'stainless-steel' claim is misleading — the housing is plastic, only the boiler is stainless. 2 of 3 other frontier AIs disagree with ChatGPT." Sarah types "make it quieter" — the ranking re-computes with the new weight.
Install the Chrome extension Works onchatgpt.com,claude.ai,gemini.google.com,perplexity.ai, andamazon.com(Rufus). -
🛒 2:41 PM · Marriott.com
Sarah books a hotel. Checkout sneaks in a $49/night resort fee.
The product page said $249/night. The cart says $298. Lens's extension catches the delta silently and pins a small badge near the subtotal: "Hidden cost. Covered by the FTC Junk Fees Rule (16 CFR Part 464) for short-term lodging. Draft a complaint?" Sarah taps Draft — Lens pre-fills a reportfraud.ftc.gov form with her booking details and an itemized receipt ready for expense dispute.
See how the dark-pattern scanner works 24 dark-pattern packs + 16 regulation packs shipped. Every badge cites the rule it triggers. Silent unless there's something worth interrupting for. -
📬 Friday 7:00 PM · Inbox
Sarah's weekly Lens digest arrives.
"Across your last 10 AI-assisted audits, Lens picked +$312 / +0.15 utility over the AIs. 3 subscriptions auto-renew next week — want drafts for the ones you'd cancel?" Sarah scans, taps the two she forgot she signed up for. Lens drafts two cancellation letters with the correct state-law citations and sends them from her Gmail.
Connect Gmail for receipts + weekly digest Read-only scan for receipts and subscription mail. Send-scope only for drafts you explicitly approve. Revoke any time atmyaccount.google.com. -
📱 Two months later · Push
Sarah's phone buzzes during lunch.
"CPSC recalled the Roborock S8 you bought in February. Lens drafted a Magnuson-Moss return letter and filled in your purchase details. One tap to send." Sarah taps. The letter hits Roborock's authorized-service address. Three weeks later, refund arrives. Lens logged the intervention to her welfare ledger.
Install Lens on your phone (PWA) See Your Shelf Progressive Web App: Share → Add to Home Screen on iOS, ⋮ → Install app on Android. Push notifications require an installed PWA on iOS 16.4+.
Lens is the consumer's independent agent across every point of every purchase.
Every fact Lens shows you is triangulated from at least two independent public sources. No affiliate links. No ranking bias. No proprietary catalog. The schema, the sources, the pipelines, the crons, the agents — all open, all below, all live.
Three places Lens works for you
Before you buy
The Lens chat. Tell Lens what you want, paste what another AI said, or drop a product URL. Lens runs the 5-stage pipeline below and returns one transparent answer you can adjust in plain language.
While you shop
The Lens extension. Watches every retailer page for dark patterns, hidden fees, fake sales, counterfeits, fake reviews, and breach history. Silent unless there's something worth interrupting for.
After you buy
The Lens watchers. Cloudflare crons cross-match recalls, price drops, subscription renewals, and firmware advisories against your purchases. Draft letters and claims ready when you wake up.
The data spine
Every claim Lens makes triangulates across multiple independent sources. If one source lies or goes stale, Lens catches it.
Triangulation — example
How Lens establishes consensus on a price (same pattern for specs, recalls, reviews).
The 5-stage audit pipeline
-
1
Extract adaptive thinking
Parse the user's stated criteria + any cited AI claims into a weighted utility function with per-criterion confidence.
-
2
Search sku_catalog FTS5 + live web_search fallback
First hit: the indexed SKU spine (shown above). Fallback: Opus 4.7 web_search_20260209 for unindexed categories.
-
3
Verify 1M context
Every AI claim + every candidate spec loaded in one window. Knowledge packs inject confabulation patterns, dark-pattern regex, regulation citations.
-
4
Rank deterministic math
U = Σ wᵢ·sᵢ. No LLM. Tell Lens in plain language what to change ("make it quieter", "budget is tight at $300") and the ranking re-computes live with every contribution visible.
-
5
Cross-check Claude Managed Agent
Parallel fan-out to GPT-4o + Gemini + Llama via a separate Worker. Where labs disagree, Lens shows the map.
The 8 agents
Interpreter
Intent extraction from text / voice / image
workflow/specs/audit.ts → extract
Researcher
Live web search + spec retrieval + catalog lookup
workflow/specs/audit.ts → search
Auditor
Claim + dark-pattern + provenance verification
passive-scan + verify
Ranker
Deterministic utility math (no LLM)
workflow/specs/audit.ts → rank
Watcher
Recall / price-drop / firmware / renewal crons
cron/jobs.ts
Advocate
Drafts refund, cancel, and FTC-complaint letters
returns/, subs/, intervention packs
Historian
Aggregates audits → welfare delta + public ticker
ticker/, repo files in db/
Translator
Legal → plain, spec → criterion score
interpreter + auditor prompts
How it stays fresh
Cloudflare Cron Triggers fire the dispatcher. Dispatcher reads data_source, picks ingesters whose cadence is due, runs up to 2 in parallel. Every run is logged to ingestion_run with row counts, error samples, duration.
*/15 * * * *ingest.dispatch · every 15 minutes — rotate through due data sources7 9 * * *recall.watch · daily 07:09 UTC — match new recalls to purchases17 */2 * * *price.poll · every 2h — detect price drops inside price-match windows23 10 * * *subs.renewal-watch · daily — 7-day pre-charge alerts31 7 * * 1firmware.watch · weekly — CVE + vendor advisory scan41 * * * *ticker.aggregate · hourly — k≥5 anonymized disagreement buckets13 6 * * 1pack.maintenance · weekly — validator + enricher + regulation-watcherInstall the companion
Lens ships as three surfaces. Pick the one that fits when you're shopping.
Chrome extension
One-click "Lens this page" on every retailer site. Captures the full page, Opus 4.7's 3.75 MP vision parses every field even when robots.txt blocks scraping, and the audit drops in-place.
Bonus: silent dark-pattern badges at checkout. Opt-in multi-page shopping session that stitches related visits into one audit.
Download .zip →Then in Chrome, go to chrome://extensions, turn on Developer mode, click Load unpacked, and select the unzipped folder. Store submission pending review.
Mobile PWA (not a native app yet)
Honest scope: there is no App Store / Play Store listing. Lens ships today as a Progressive Web App — a website your phone browser can pin to the home screen, with offline shell, push notifications, share-sheet target, and camera input. Native wrapper is post-hackathon work.
To install the PWA on your phone, open the URL on the phone, then:
- iOS Safari: tap Share → Add to Home Screen
- Android Chrome: tap ⋮ → Install app
lens-b1h.pages.dev
Web dashboard
Paste any AI shopping answer from ChatGPT, Claude, Gemini, Rufus, Perplexity. Lens audits the claims against live catalog data and returns a utility-math ranking you can retune in plain language ("make it quieter", "budget tight at $300") in about 20-30 seconds — faster when your category is already indexed in the spine.
Bonus: profile export, so your preferences move with you.
Open the web app →How Lens learns your preferences
Five layers, from a single sentence to years of revealed-preference signal. All local unless you sign in to sync.
Shopping-session mode (extension, opt-in)
One click when you start browsing. Lens buffers a session_id across the next few pages you visit, and the multi-page audit surfaces dark patterns that require seeing the whole flow — not just one page.
- Bait-and-switch: price you saw on the product page ≠ cart subtotal. Lens captured both.
- Hidden fees: the
$49 destination amenity feeonly appears at checkout confirmation. Lens has the full chain. - Forced continuity: the free-trial dark pattern that auto-upgrades on step 5 of 6. Lens saw step 5.
- Drip pricing: item A → cart → shipping add-on → service fee → tip → total is 40% higher. Lens has every increment.
Pages in a session are stored only for the session duration (default 30 min). All excerpts pass the per-host consent gate. Revoke any time in extension settings.
Trust posture
- ✅ Open source under MIT. Every source file, every schema, every prompt is public at github.com/FelipeMAffonso/lens.
- ✅ No affiliate links, ever. Every retailer URL Lens returns is scrubbed of
ref=,tag=,utm_*, and other monetized-redirect params. Enforced in code. - ✅ No ranking bias. Utility math is deterministic, inspectable, and retunable in plain language. The formula is the spec.
- ✅ Every claim sourced. Every fact has a visible source link + timestamp. If the source goes stale, the claim is flagged.
- ✅ k-anonymity on aggregates. The public disagreement ticker never publishes a bucket with fewer than 5 contributing audits.
Every purchase deserves an agent working for you.
Lens is open source, consults every frontier AI in parallel, and never stores your queries. Tell Lens what you're shopping for and get the answer that actually fits.
Ask Lens