Volunteer Engagement
PostSecret: making 14,000 anonymous secrets searchable
PostSecret is one of the longest-running community art projects on the web, built on secrets people mail in on postcards. The platform turns two decades of that archive into a searchable experience, with search that understands meaning, not just keywords. I am the volunteer technical lead and primary engineer, working directly with founder Frank Warren.
- Volunteer Technical Lead
- WordPress + Qdrant + embeddings
- ~14,000 anonymous secrets
The decision that was stuck
The situation
Frank Warren owns PostSecret outright. There is no board, no CTO and no technical staff to hand a question to, and after twenty years the archive had become roughly 14,000 images with no way to explore them. The authority to decide what happened next was entirely his. The basis for deciding was not there, and the stakes were unusually asymmetric: anonymity is the entire premise of the project, some submissions should never be public at all, and the obvious technical answer, load it into a database and add keyword search, would have flattened the work into a list.
What I decided
- Search runs three ways at once and blends into a single ranked list, rather than making a reader choose a mode. Most of the archive's meaning does not survive keyword matching.
- The platform is custom WordPress plugins on Automattic's Pressable, so a small team can operate it inside the tools it already uses instead of inheriting a bespoke stack from a volunteer.
- Moderation is a visibility gate inside the pipeline, not a step somebody remembers. New items arrive as "needs review" and are never public until vetted.
- Every change writes to an audit log, because an archive built on anonymity has to be able to answer what happened to a given card.
What shipped
Unified full-text, semantic and faceted search across roughly 14,000 secrets, with a query parser and a ranking method that blends the three into one result set. A classifier that tags every secret across six facets. Embeddings in a Qdrant vector database powering semantic search and the "similar secrets" surface. A cloud ingestion path with duplicate detection and front-and-back pairing. A severity-tiered moderation queue behind a single visibility gate. A schema-migration system for the custom data model, and the front end that surfaces all of it.
What is still open
I have not left this seat, so there is no closing account yet. What is open today: the archive keeps growing, which makes ingestion and moderation a standing operation rather than a one-time migration, and ranking quality across the three blended modes is still being measured against the search-evaluation tables rather than settled. This is volunteer work on a weekly cadence, which is the honest constraint on how fast any of that moves.
Overview
For twenty years, PostSecret has collected secrets that strangers mail in on homemade postcards. The collection grew into one of the most recognized community art projects on the internet, but it lived as images with no real way to explore it. The digital archive makes the whole body of work searchable while protecting the anonymity and sensitivity the project is built on.
- ~14,000 anonymous secrets brought into a single searchable archive
- Search that understands meaning: semantic, full-text, and faceted search merged into one ranked result set
- A classifier tags every secret by topic, feeling, meaning, style, location, and vibe
- A moderation pipeline keeps sensitive submissions out of public view by default
- Built on WordPress, hosted on Automattic's Pressable
The project
PostSecret's archive is unlike a normal content library. Every item is anonymous, emotionally charged, and submitted in trust. The design problem was to make two decades of that material explorable without ever flattening it into a generic database.
Two decades of postcards
- Thousands of physical cards, front and back
- Years of submissions with uneven metadata
- No structured way to browse by theme or feeling
Hard to explore
- The collection lived as images, not searchable text
- Keyword search alone misses meaning and tone
- Readers could not follow a thread across years
Sensitive by nature
- Anonymity is the whole point and must be preserved
- Some submissions are not appropriate for public view
- Moderation has to be built in, not bolted on
The archive and search
Search is the heart of the experience. A single query runs three ways at once and the results are blended into one ranked list, so a reader can search by exact words, by meaning, or by browsing facets, and still get one coherent answer.
| Mode | What it does |
|---|---|
| Full-text | Classic keyword search over the transcribed text of each secret |
| Semantic | Meaning-based search using embeddings stored in a Qdrant vector database, so a query finds related secrets even with no shared words |
| Faceted | Browse by classifier-assigned facets: topics, feelings, meanings, style, locations, and vibe |
| Unified ranking | A query parser detects intent and a ranking method blends the three modes into one result set |
The same engine powers "similar secrets" on the detail page and a faceted homepage feed that renders the archive in an editorial layout rather than a flat list.
Architecture
The platform is a set of custom WordPress plugins, chosen so the project lives natively inside Automattic's ecosystem and the Special Projects team can operate it without a bespoke stack.
The stack
- WordPress with custom plugins for classification and ingestion, search, the homepage feed, and database migrations
- A Qdrant vector database that stores the embeddings powering semantic search and similar-secret recommendations
- A model that classifies each secret into facets and produces the embeddings used for meaning-based search
- MySQL for the WordPress data store plus custom tables for classification, facets, embeddings, audit logs, and search evaluation
- Pressable, Automattic's managed WordPress hosting, where the platform runs
Ingestion and moderation
Getting thousands of physical postcards into a clean, safe, searchable archive is its own pipeline, and moderation is a first-class part of it rather than an afterthought.
Ingestion
- A cloud worker reads source images from storage and posts them to a secured ingest endpoint
- Duplicate detection keeps the earliest submission date across copies
- Front and back sides of each card are paired into a single record
- New items arrive as "needs review" and are never public until vetted
Moderation
- Each secret is tiered by severity, including checks for explicit content and personal information
- A review queue surfaces anything flagged or escalated
- A single visibility gate decides what appears, so sensitive material stays out of view by default
- Every change is written to an audit log
My role
I am the volunteer technical lead and primary engineer on the project, working directly with founder Frank Warren and Automattic's Special Projects team on a weekly cadence. I designed and built the platform's core systems end to end - the search stack, the classification pipeline, the content-moderation pipeline, the ingestion path, and the schema-migration system - and built the front-end that surfaces them. It is hosted on Automattic's Pressable.
- Designed and built the unified search stack (full-text, semantic, faceted)
- Built the classification pipeline that tags every secret across six facets
- Built the content-moderation pipeline with severity tiering and a visibility gate
- Built the cloud-based ingestion path with duplicate detection and front/back pairing
- Built the schema-migration system for the custom data model
- Built the front-end that surfaces search, the detail view, and the homepage feed
Outcomes
Jason led the technical development of the PostSecret Searchable Archive. This complex project required coordinating a small team and technical expertise for six months. He helped us navigate many challenges and completed a complex natural-language searchable database that has received many positive reviews. I would not hesitate to bring Jason back on another PostSecret team endeavor.
Building something that has to handle sensitive content with care?
PostSecret is what happens when a beloved, deeply human project needs real infrastructure - meaning-based search, careful moderation, and a platform a small team can operate. If that is the kind of problem you are working on, let's talk.