Doodle Duel.
Draw. It guesses on every stroke.
A shad0w image table reads your drawing as pixels and names it in microseconds, right in this tab: no neural network, no server, no GPU. It learned from … doodles people drew for Google's Quick, Draw! game, finished and half-drawn, and it says "I know!" only when its answer is certified.
On doodles it never saw.
… held-out drawings from the same game, the same twelve words.
Pixels to items to a certified answer.
The same idea shad0w uses for text, applied to images. Your drawing is rendered to a small picture; 256 "ferns" compare pairs of nearby pixels, a coarse grid records where the ink is, and a perceptual hash catches near-duplicates. Those become item numbers, exactly like words in a sentence, and the table adds up what each item says about each word. No convolution, no model download beyond the table itself.
- Teacher. Here, the word each player was asked to draw (the game's label). In your app the teacher is your vision model: shad0w learns its answers, and the certificate is against that model.
- Certified means confident enough to pass a test set in advance: on certified answers it disagrees with the teacher at most 5% of the time (90% confidence).
- Where it works. Drawings, icons, product photos, screens of a known app: images where the layout of light and dark tells the class. On natural photos (CIFAR-10) the pixel table certifies nothing and defers everything; there, an optional CLIP tier certified 73% at ~28 ms instead of a vision model's 2.6 s.
- Data. Google's Quick, Draw! dataset (CC BY 4.0), the drawings the game itself recognised.
from shad0w.vision import ImageSpec
photo = shad0w.decision("category", options=[...], llm="openai/gpt-6-luna", image=True) # your vision model teaches
photo(pixels) # numpy array or PIL image: answered in microseconds once certified, else asked
photo.train()