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.

Add to priorities:
What a day with Lens looks like

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.

  1. ☀️ 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 on chatgpt.com, claude.ai, gemini.google.com, perplexity.ai, and amazon.com (Rufus).
  2. 🛒 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.
  3. 📬 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 at myaccount.google.com.
  4. 📱 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+.
The machine behind Lens

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.

indexed SKUs
categories
data pipelines
healthy now
recalls tracked
regulations in force
price discrepancies caught
brands indexed

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.

Lens data-spine topology diagram CPSCrecalls FCCequipment EPAEnergy Star WikidataSPARQL OpenFood+OpenLib ...18more sku_source_link one row per (sku, source) · price · specs · confidence · timestamp sku_catalog canonical identity · fts5 fuzzy triangulated_price median / p25 / p75 / n_sources
Loading live source status…

Triangulation — example

How Lens establishes consensus on a price (same pattern for specs, recalls, reviews).

SourceValueObservedConfidence
Retailer PDP (amazon.com)$249.99live fetchhigh
Keepa 90-day median$239.00hourlyhigh
Manufacturer MSRP (delonghi.com)$249.95weekly sitemaphigh
BLS CPI small-appliance index ±σ$241–258 plausiblemonthlymedium
Wikidata P2284 (price)$2492026-02-15medium
Consensus: $249 ±2%. Any single source deviating >15% fires a discrepancy row and shows a "verify before checkout" flag on the audit card.

The 5-stage audit pipeline

  1. 1

    Extract adaptive thinking

    Parse the user's stated criteria + any cited AI claims into a weighted utility function with per-criterion confidence.

  2. 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. 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. 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. 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 sources
7 9 * * *recall.watch · daily 07:09 UTC — match new recalls to purchases
17 */2 * * *price.poll · every 2h — detect price drops inside price-match windows
23 10 * * *subs.renewal-watch · daily — 7-day pre-charge alerts
31 7 * * 1firmware.watch · weekly — CVE + vendor advisory scan
41 * * * *ticker.aggregate · hourly — k≥5 anonymized disagreement buckets
13 6 * * 1pack.maintenance · weekly — validator + enricher + regulation-watcher

Install 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
Scan to open Lens on your phone
On desktop? Scan this with your phone camera.
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.

L1
Goal parsing. Opus 4.7 adaptive thinking extracts weighted criteria from one sentence. 5 seconds.
L2
Adaptive clarification. When confidence is low, Lens asks 2-4 conjoint-style binary tradeoff questions. Converges 5× faster than classical preference elicitation.
L3
Explicit editing, in plain language. Tell Lens what to change ("care more about quiet", "budget is tight at $300"). Lens parses the change into weight deltas and re-ranks live. No sliders. No forms. Your call is final.
L4
Revealed-preference updating. After 5-10 audits, Lens learns from what you actually pick over what it ranked top. If you chose the #2 over the #1, the weight that discriminates them adjusts.
L5
Cross-category transfer. Meta-preferences (durability, repairability, country of origin, ethical supply chain) carry from one category to the next. New category, informed priors.

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 fee only 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