You know exactly the meme you mean.
Now find it before the moment passes.
Memex is a personal meme archive with natural-language search. Upload anything. Skip the tags, skip the folders. Type what you remember (“guy looking back at girl”, “dog calm in fire”) — get the meme back.
The name is a nod to Vannevar Bush’s 1945 essay on a machine that augments memory. Same idea — applied to how people actually talk now.
The whole product is one loop.
Pick a file. That’s it. No title, no tags, no description, no confirmation screen. The meme appears in your library instantly.
POST /api/memes ├ accept: image/* + gif └ → meme.id (status: pending)
A background job runs the file through CLIP and writes the embedding to a vector store. You watch the status flip pending → ready in real time.
job.run() ├ validate → CLIP encode ├ pgvector upsert └ → status: ready
Type what you remember. Top 10 results above the relevance threshold, ranked by cosine similarity to your query embedding.
GET /api/search?q=… ├ encode(q) · CLIP ├ ANN · cosine · k=10 └ → ranked results
The AI is the organization.
Folders are a 1980s answer to a 1980s problem. We don’t write down what memes are about — we just know. Memex maps every image into the same embedding space as language, so the question “what was that one with the dog and the fire?” returns the dog with the fire.
No tagging. No retroactive cleanup. No “I’ll organize it later.” The whole point is that you don’t.
Coming soon.
Hold the mic, describe the meme out loud. Speech-to-text feeds the same embedding pipeline — no LLM in between.
Paste a tweet or post. We extract the image, embed it, and search-it works the same as anything you upload.
Programmatic access to your library and the search service. Keyboard extensions, MCP servers, anything you can wire up.
Premium tier. Memex finds groupings in embedding space — recurring formats, emotional tones, visual themes you never named.
Per-user libraries replace the v0 stubbed test account. Bring your own data, leave with your own data.
SigLIP 2 upgrade adds 100+ languages. Search Japanese memes in English; the embedding space already lines up.
Search is a service, not a feature.
Natural-language → meme matching is the value. It lives behind a clean API boundary the web app already consumes. When auth ships, the same endpoints become public — no rewrite, no migration.
$ curl https://api.memex.so/search \
-H "Authorization: Bearer $KEY" \
--data '{"q": "dog calm in fire", "k": 10}'
{
"model": "clip-vit-l/14",
"threshold": 0.30,
"results": [
{ "id": "m_4f2a", "score": 0.91, "url": "..." },
{ "id": "m_91be", "score": 0.74, "url": "..." },
{ "id": "m_2c3d", "score": 0.61, "url": "..." }
]
}