Skip to content
Case study WhatIsThatMovie 2026

WhatIsThatMovie: finding a film from a half-remembered scene

We built WhatIsThatMovie with SvelteKit to find films from remembered scenes. Here is how the search works and what we have learned from running it.

WhatIsThatMovie homepage with a scene-description search field and example movie queries.

The work

We built WhatIsThatMovie for people who remember a scene but have forgotten the title. They can search with a plot detail, a line of dialogue, or whatever else they remember. We have been building and maintaining it since January 2025.

Readers need enough detail to recognize a film. Each suggestion links to a movie record with details they can compare with their memory, and the search gets a page they can return to.

Visitors and searches

From August 15 through September 13, 2026 (UTC), PostHog recorded 212,802 pageviews from about 137,000 unique visitors on the public site. We counted traffic classified as regular, excluding detected bots, AI agents, and automation. These are measures of site usage, not counts of successful identifications.

In August 2026, PostHog recorded 51,125 new saved searches with movie or TV suggestions. This event fires after a result page is saved. Searches with no matches and requests that reuse an existing search page are excluded, so this is a count of new result pages rather than every search attempt.

Two ways to find a match

The search starts two jobs in parallel. A language model suggests up to five movie or TV titles. We look them up in our local TMDB database and try the TMDB API if a title is missing.

The other job turns the description into an embedding and looks for similar entries in the catalog. We combine the results, put title matches first, and remove duplicates by media type and ID. The reader sees up to ten records. Either search can contribute even when the other finds nothing.

The results are catalog entries the reader can inspect. They can still be wrong: a misremembered decade or details from two different films may point to several plausible titles.

Reusing search pages

Every saved search has a permalink. Before saving a new one, we normalize the query and check for an existing page. Repeating the same wording can then take a reader back to that URL instead of creating another nearly identical page.

We review similar clues before combining their pages. An extra plot detail or a different release range can change the answer. Two descriptions that sound alike may still need separate results.

Explaining why a film fits

In September, we reviewed pages where the suggested films did not explain the clues. One search described a woman kidnapping an elderly man. A prominent result was about a kidnapped wife. A better page title would have left the wrong suggestion in place.

We added researched explanations above the automated suggestions on selected pages. For the elderly-man clue, we identified Home Is Where the Hart Is (1987) as a strong candidate and explained how its characters and plot fit. Another page connects the boarding-school kidnapping and bank-fraud clues to Baadshah (1999). Both pages cite sources and leave room for the viewer to confirm the answer.

We label these explanations as reviewed. The ordinary search results still come from the automated search, so readers can see which suggestions we have checked.

Running the product

The app runs on SvelteKit and Svelte on Cloudflare Workers. We keep application data and the TMDB catalog in separate PostgreSQL databases, using Hyperdrive and Drizzle to access them. Statamic holds the blog. PostHog records the product events and model traces we use to investigate searches.

One alert showed zero completed searches. We found two successful HTTP responses and initially called the alert a false positive. Then we compared the same hour on other days: traffic had dropped before people even reached the search. Cloudflare recorded the drop too.

We now start by checking where an event fires in the code, compare the numbers with a baseline, and look for another source of evidence. In this case, we could establish that traffic had fallen. We could not establish why.

We documented that investigation in The alert was right. My diagnosis was wrong. Investigating these incidents is part of running the site, along with improving suggestions and reviewing which search pages should appear in search engines.

Try a remembered scene on WhatIsThatMovie.

Like this kind of work?

Tell me what you're building. I'll tell you whether a sprint is the right shape, usually within a day.