AI Déjà Vu MVP

Train an image classifier in your browser. It's stored in IndexedDB and survives reloads. Every prediction fires a switchable onMatched / onNotMatched action — console, webhook, both or off.
No server, no upload, no API key. Inference and training both run locally.
Train on your own examples → open the Studio — camera / image files for photos, mic / audio files for sounds, your own labels, live inference with the same webhook actions.

1 · Train

no model yet — train one above.

2 · Stored models IndexedDB

3 · Match rule & actions

Cross-origin endpoints need CORS. Failures are logged, never thrown.

4 · Run inference

draw a shape
or use a generated sample
no prediction yet

Payload sent

Event log persisted

timeruleclassconfdelivered

Activity

booting…

How it works

A frozen feature extractor turns each image into a vector; a small softmax head (81 parameters for v2) is the only thing trained. That's the Teachable Machine architecture, and it's why the model is a few KB and fits in a database row.

v1 is included deliberately as a broken control. It uses absolute gradient orientation, so rotating a square moves its embedding further than changing the shape does — within-class variation exceeds between-class separation and no amount of training can fix it. v2 measures orientation relative to the shape's centroid and scores ~52 points higher with 8.6× fewer dimensions.

Integrity checks run on every training. The important one is that shuffled labels must collapse to chance — with more features than samples, a head that memorised noise would still score high on permuted labels. If that check fails, the accuracy number is not trustworthy.