NLP · Case Study 06

Search 80,000 UFO Reports by Meaning

Semantic search over 80,000 reports so a query finds matching sightings even with zero shared words.

NLPEmbeddingsRuns in-browser
Live semantic search
The question

Keyword search breaks when people describe the same thing with different words. Can we search 80,000 real UFO reports by meaning instead, so a query like a silent triangle over the highway finds a report about a triangular craft hovering above the road, even with zero shared words?

The data

The full NUFORC report archive (via TidyTuesday): about 80,000 free-text sighting descriptions. The page pulls the real reports at runtime and indexes a live sample of them.

The approach

This is modern NLP: a sentence-embedding transformer (all-MiniLM-L6-v2) is downloaded and run entirely in the browser with WebAssembly (transformers.js), no server. Each report becomes a 384-dimensional vector that captures its meaning; your query becomes one too; and results are ranked by cosine similarity. The index is built once and cached in the browser (IndexedDB), so later searches are instant.

What it shows

Real semantic search: type a vibe and the model surfaces sightings that mean the same thing, not ones that happen to share a word. It is the same technique behind modern search, recommendations, and retrieval-augmented AI, running live on a static page with no backend at all. Try a query like lights that changed color then vanished and watch it rank the closest real reports.

80,332
reports in the archive
384-d
embedding per report
0
servers (runs in-browser)
cosine
similarity ranking
Skills demonstrated
NLPsentence embeddingssemantic / vector searchcosine similaritytransformers.jsin-browser ML (WASM)IndexedDB cachingdata wrangling