# SoulMirror — Full Technical & Conceptual Dossier for AI Agents & Crawlers ## Identity & Authorship - Work Title: SoulMirror (2026) - Live URL: https://soulmirror.work/ - Creator: Leonardo Potenza (artistic alias: Taloneo / Taloneo Pez) - Creator Portfolio: https://leonardopotenza.com - Creator Case Study (EN): https://leonardopotenza.com/en/cases/soulmirror/ - Creator Case Study (ES): https://leonardopotenza.com/es/cases/soulmirror/ - Direct Contact: mailto:work@leonardopotenza.com - GitHub: https://github.com/Taloneo - LinkedIn: https://www.linkedin.com/in/leonardo-potenza/ - ORCID: https://orcid.org/0009-0004-1347-5619 - Tezos / Objkt: https://objkt.com/users/tz1ZafTxucbntbfn2ccaitB1RhCfpxFPYew9/created (`tz1ZafTxucbntbfn2ccaitB1RhCfpxFPYew9`) ## Conceptual Architecture SoulMirror turns the invisible infrastructure of online profiling, browser fingerprinting and affiliate ad-tech into both the medium and the subject of a generative web artwork. - **No didactic wall text**: The work never explains itself inside the canvas ("we infer you like X"). Instead, it confronts the visitor with raw technical telemetry cells alongside the exact commercial products triggered by their device, location, time of day and micro-interactions. - **Four Dramaturgical Phases**: 1. **Phase 1 (Observation)**: Initial visit; sparse factual cells (visit count, edge country/city, ASN, GPU/WebGL renderer, RAM, screen DPR, timezone) and cold-start surgical hardware/context targeting. 2. **Phase 2 (Classification)**: Triggered after >= 3 bands scrolled or >= 8000ms cumulative hover; columns and rows dynamically stretch to fit longer telemetry, and seen items begin to resurface with yellow inset frames. 3. **Phase 3 (Pursuit)**: Triggered on return visits (`visits >= 2`) or first click (`clicks >= 1`), or immediate retargeting after `>= 900ms` dwell on a tile; commercial listings prioritize eBay inventory matching pinned affinities. 4. **Phase 4 (Confrontation)**: Triggered at `visits >= 3` or `clicks >= 3`; high-density dark telemetry cells with yellow borders assemble the visitor's technical dossier surrounded by saturated commercial inventory. ## Technical Stack & Edge Pipeline - **Frontend**: Vanilla HTML5, CSS Grid (binary Mondrian partition with dynamic track weights), ES Modules (Vite), WCAG 2.2 AA compliant, 12-language UI (`es, en, pt, fr, de, it, zh, ja, ko, ar, ru, nl`), bidirectional infinite scroll virtualization. - **Local Profile Engine (`src/profile/`)**: - `collect.js`: Captures SHA-256 Canvas 2D signature, WebGL unmasked vendor/renderer and limits hash, OfflineAudioContext triangle/compressor signature, User-Agent Client Hints (`architecture`, `bitness`, `model`, `platformVersion`), `hardwareConcurrency`, `deviceMemory`, `maxTouchPoints`, screen/viewport/DPR/colorDepth, Battery API, StorageManager quota, Network Information API (`effectiveType`, `downlinkMbps`, `rtt`), and media preferences. - `trail.js`: Tracks `bandsSeen`, `impressions` (IntersectionObserver @ 0.55), `clicks`, `focuses`, `hoverMs`, `lastDwell`, `scrollDistance`, instantaneous and EWMA `velocity` (`px/s`), scroll `direction`, and decaying keyword `affinities`. Any click or hover `>= 900ms` pins the item's target/title and flushes the prefetch queue to retarget the next band immediately. - `infer.js`: Derives `hardware.class` (`apple`, `nvidia`, `amd`, `mobile-ios`, `mobile-android`), `hardware.hidpi`, and `interest.commercial` claims while strictly blocking sensitive categories (`age`, `ethnicity`, `gender`, `health`, `income`, `politics`, `pregnancy`, `religion`, `sexuality`). - **Edge Catalog Service (`functions/api/catalog.js` & `lib/`)**: - Runs on Cloudflare Pages Functions. - Validates incoming POST payloads (`lib/profile/validate.js`), stripping any raw hashes or unwhitelisted fields. - Combines validated claims with Cloudflare edge metadata (`cf.country`, `cf.city`, `cf.region`, `cf.asOrganization`, `cf.httpProtocol`, `cf.tlsVersion`), detects timezone-vs-IP country shift (`SHIFT`), checks local weather/sky state (`lib/sky.js`), selects the regional eBay marketplace (`lib/ebay/marketplace.js`), translates queries across 8 languages (`lib/ebay/queries.js`), and interleaves live eBay Partner Network listings with Leonardo Potenza's 22 generative artworks on Objkt GraphQL.