FaceTwin
An art piece disguised as an AI product. Three AI ‘face twins’ come from a friend’s public photo. The reveal shows it was public all along. Uploaded faces are destroyed within 24 hours.
- 191
- visitorslast 90 days · as of 2026-08-03
- 60
- pranks sentall-time · as of 2026-08-03
- 41
- visitorslast 30 days · as of 2026-08-03
Source: the cross-project traffic dashboard (Amplitude, bot-filtered) · read 2026-08-03



Who it's for
Anyone who wants to prank a friend — and, underneath, anyone willing to sit with why the prank works.
The problem
People believe a link can find strangers who share their face. That belief is the exhibit: it only holds because we've stopped expecting our photos to be private.
What it does
The sender pastes a public photo URL. AI generates three altered variants of that face, each degraded to pass as a real photo found online. The victim gets a link to what looks like a working face-search product, watches three "matches" appear with confidence scores, and then the reveal lands: every match was them, and the source photo was already public. Every uploaded face is destroyed within 24 hours.
What I did
An art piece about surveillance, run with the same discipline as the products — and its instruments turned out to be lying too.
Built the illusion in two layers: prompts that describe mundane real-world scenes, then a degradation pass under one of six profiles, so each of the three fakes reads as a different found photo. The piece dies the moment an image looks AI-generated.
Arrived at three fixed prompts by deleting words. Every defensive instruction pulled the model toward the thing it was told to avoid; nine dead ends are recorded as final so no session re-explores them.
Ruled the 40-day zero a demand drought only after a production probe ran the whole funnel clean — then fixed the four latent defects the same audit surfaced, none of which had caused the zero.
Made the advertised 24-hour self-destruct real when an audit found it was never scheduled: an hourly cron, 632 stored objects down to 4, rows scrubbed in place so the public tally never moved.
Code-gated the landing stats line to render nothing below 300 all-time creations. A number that needs apology copy is not worth showing.
What happened
Dated results, zeros included.
- a zero, published0
- pranks sent in 40 days — ruled an engagement drought by a production probe, and recorded as one2026-06-17 → 2026-07-27 · as of 2026-07-27
- a zero, published0 of 48
- victim responses stored vs pranks revealed — the column was varchar(8), so every insert since launch had failedlaunch → 2026-07-27 · as of 2026-07-27
- 167
- all-time creations at the July read — below the 300 gate, so the landing stats line renders nothingas of 2026-07-27
- 632 → 4
- stored objects after the purge that made the 24h self-destruct realas of 2026-07-27
- 126 MB → 135 kB
- storage footprint — on an art piece about surveillance, the retention promise is the productas of 2026-07-27
What's next
A face-detection gate on upload — reject non-face uploads before paying for a generation. Top of the standing priorities queue.