MediaIndex: Teaching a 300-Terabyte Archive to Answer Questions

Every production team has the same haunted house. Mine is a NAS holding seven years of my team's work - 300 terabytes, about 154,000 files — organized the way real archives are organized: by whoever was closest to the deadline. Camera cards offloaded at 2 AM. Folders named Exports_FINAL_v3_ACTUAL. A brilliant warehouse b-roll shoot from 2022 that exists, somewhere, under a project name nobody remembers.

The material was never the problem. Finding it was. When someone asked "do we have footage of a forklift moving pallets at night?", the honest answer was probably, followed by an afternoon of folder archaeology, followed — too often — by booking a shoot for something I already had on disk.

MediaIndex is my answer: an internal platform I built that makes the entire archive searchable by what's actually in the frame, browsable like a library, and playable in the browser — without moving, renaming, or modifying a single original file.

Search by meaning, not by filename

The core trick is semantic search. Every photo and video in the archive gets a compact visual "fingerprint" — an embedding produced by a vision-language model (SigLIP) that maps images and text into the same mathematical space. A photo of a forklift and the sentence "forklift in a warehouse" land near each other in that space, even though the file is named B002_C042_0507N4_001.R3D and lives nine folders deep.

So the search box takes plain language. "Customer smiling at a register." "Conference stage with purple lighting." "Warehouse at night." Results come back in under a second, ranked across roughly 75,000 photos and video clips, with hybrid logic layered on top: filename and project-name matches, tags, and human-written descriptions all count alongside the visual match, so both "aldevra kitchen" and "chef plating food" find the same shoot from different directions.

Video gets the full treatment. Every clip is represented by a poster frame in search, every playable format gets a lightweight 720p proxy you can stream in the browser, and hovering a video tile scrubs through a sprite-sheet preview of the whole clip. That includes the cinema formats: my RED footage — REDCODE raw, which no browser and most software can't open — is rendered through RED's own tooling into posters and playable proxies, so 1,700 cinema takes that were effectively invisible for years now show up next to everything else.

An archive that knows what things are

Search is half the story. The other half is that the system classifies everything it catalogs. Path and naming conventions — camera folder structures, Exports, Finals, proxy folders, version suffixes — are parsed into roles: camera source, delivered final, working export, proxy, junk. Old versions collapse behind the newest one. Photo bursts stack into a single tile you can scrub. The default view shows you sources and finals; the noise is a filter away, never deleted.

The rules are honest about ambiguity. A "Delivery" folder inside a footage tree means delivered dailies, not delivered work. The word FINAL in a filename earns nothing — only delivery folders confer final status, because filenames lie and folders mostly don't. And when the rules get it wrong anyway, any user can override the classification from the interface with one click; human calls are locked and survive every future rescan.

Context lives with the work itself. A plain-text _project.md file dropped into any project folder declares its title, description, tags, industry, people, and status — and the nightly indexer reads it into the platform. Metadata cascades: a series-level file can mark an entire retired brand as discontinued, and every asset under it instantly wears a "retired brand" badge in search results, pointing users to the rebranded replacements. The files are human-readable, survive any reorganization, and would still make sense in a decade with no system running at all.

How it runs

The hardware is all on-premise. The archive lives on a rack-mounted Synology FS6400 NAS with additional expansion bays, and the whole facility is wired for throughput: dual-fiber 50-gigabit connections run from the server rack to the editing bay stations, so the same storage that feeds the index also feeds the edit suites at full speed.

The software architecture on top is deliberately boring. A Postgres database (with the pgvector extension) holds the catalog and embeddings. A Mac mini serves the web app and runs a nightly pipeline — scan, classify, preview, embed — that picks up anything new or moved. A Mac Studio on a 25-gigabit link to the NAS acts as the heavy-media worker: it claims jobs from a queue in the database (proxy encodes, RED renders) and grinds through them unattended, reporting heartbeats so progress is visible from any machine. During the initial build-out it processed eighteen thousand jobs in about a day; day to day it just keeps up.

Nothing touches the originals. The indexer mounts the archive read-only, and everything the platform generates — thumbnails, previews, proxies, sprite sheets — lives in a separate derived-files share, keyed by catalog ID so renames and moves never orphan anything. Moved files are recognized as moves, not deletions; a circuit breaker halts the scan if the share ever half-mounts and the world appears to vanish.

What changed

The practical difference is speed-of-thought reuse. Questions that used to cost an afternoon now cost a sentence. Producers preview footage without pulling terabytes over the network or opening an NLE. Delivered work is distinguishable from the eleven drafts beside it. Retired branding warns you before you ship it. And the archive finally compounds: every shoot I add becomes findable forever, automatically, by the next morning.

Next up: project browsing and folder navigation in the app, per-moment video search that points to the timestamp inside a clip rather than the clip itself, and speech-to-text transcripts — at which point "find where anyone said procurement used to take weeks" becomes a query too. The long-term goal is simple to state: nothing I've ever shot should be easier to reshoot than to find.