You love horror movies. You spend autumn evenings rewatching The Shining, The Witch, and Hereditary. Your taste leans into slow-burning psychological tension, historical dread, and suffocating atmosphere. Then, late one Saturday night, a friend puts on a cheap torture-slasher or an uninspired gore sequel like Hostel or Saw. You sit through it, you dislike it, and you tap "Not for me" in a movie recommendation app.

What often happens next is infuriating: the recommendation algorithm panics. In an attempt to respect your negative rating, a straightforward calculation subtracts so heavily from the shared category that it purges the entire horror genre from your feed. Suddenly, instead of seeing other thoughtful, atmospheric thrillers, your recommendations fill up with quiet family dramas or prestige period pieces.

The baby was thrown out with the bathwater.

With the release of iOS 1.1.0 on the App Store, I shipped an architectural overhaul to how WhatNext. handles negative feedback. The fix relies on a clean geometric principle: separating the specific flavor of what you disliked from the broader genres you love, fundamentally changing how a recommendation engine listens when you say a movie was not for you.

The Baby and the Bathwater Problem

Human movie taste is full of nuance and sharp boundaries. Almost nobody loves an entire genre unconditionally across every subgenre, style, and tone.

A fan of science fiction might cherish cerebral, slow-paced first-contact stories like Arrival and Solaris, but feel completely indifferent toward loud space battles or campy monster invasions. A romantic comedy fan might rewatch sharp, witty banter like When Harry Met Sally... while detesting raunchy teen comedies.

When you tell an app that you did not enjoy a film, you are rarely saying "never show me this entire genre again." You are usually saying "do not show me this specific flavor of this genre."

Yet when I ran diagnostic evaluations on early versions of my recommendation engine, negative feedback was dangerously aggressive. If a test profile loved three atmospheric horror films and disliked three slasher movies, the candidate pool within the top recommendations collapsed to zero horror movies. The algorithm observed the shared DNA between the films (dark tone, suspense, fear) and subtracted so heavily from that shared category that it pushed the user into completely unrelated territory.

Before the fix: a profile that loved The Shining, The Witch and Hereditary and disliked Bride of Chucky, Hostel and Saw got a top 10 of dramas such as Hamnet and The Fabelmans, with zero horror films.

Respecting a dislike should make your taste clearer, not erase it.

The Flaw of Blunt Subtraction

To understand why this happens, you have to look at how recommendation engines model film taste.

In an on-device recommendation engine, every film in the catalogue sits at a unique coordinate in a multi-dimensional taste space representing tone, narrative pacing, atmosphere, and genre. When you rate movies you love, the engine forms a central taste coordinate representing what draws you in.

When you mark a film as "Not for me", the simplest mathematical approach is blunt subtraction: calculate the coordinate of the film you disliked and pull the recommendation vector in the opposite direction.

If you love historical epics and dislike cheap horror, blunt subtraction works fine. The two styles live far apart in taste space, so pulling away from horror barely nudges your historical drama recommendations.

The flaw appears when the movie you dislike shares the same general neighborhood as the movies you love. An atmospheric haunted house film and a gory slasher both share broad horror coordinates. When you subtract the slasher coordinates directly from your taste profile without nuance, the subtraction cuts straight through the heart of the genre itself. By trying to steer you away from torture traps, the engine accidentally steers you away from haunted houses too.

Isolating Taste Coordinates

The solution was not to ignore negative ratings, but to separate what makes a movie part of a genre from what makes it unappealing.

Every disliked movie contains two distinct components: the broad genre qualities it shares with the movies you love, and the specific subgenre attributes that made you dislike it.

Hostel shown as two parts: horror qualities you love, shared with The Shining, The Witch and Hereditary, and the torture and gore you disliked. The old way removed both, so horror left the feed. Now only the gore is removed, so horror stays.

Instead of subtracting the entire movie coordinate, WhatNext. first projects the dislike coordinate perpendicular (or orthogonal) to your loved taste center.

Think of your taste in cinema as a directional beam pointing toward thoughtful, atmospheric dread. When you dislike a slasher film, WhatNext. isolates the portion of that film's fingerprint that runs parallel to your beam and discards it. The algorithm refuses to allow a dislike to push backward along the main axis of what you love.

Instead, the recommendation engine only preserves the perpendicular component: the specific coordinates representing visceral gore, jump-scare pacing, or teenage slasher tropes that distinguish the bad experience from the good ones. By subtracting only this perpendicular slice, the engine steers away from slasher movies while keeping your recommendations squarely inside the atmospheric horror genre.

This distinction becomes even clearer when you look at two films in the exact same subgenre. Suppose you love a clever, self-aware slasher like Scream, but you dislike an uninspired gore sequel like Hostel. Both films share core slasher DNA: masked killers, suspenseful pacing, and teen ensembles. Because you loved Scream, those foundational traits sit squarely inside your taste center. When you rate Hostel as "Not for me", the engine recognizes that shared slasher foundation, projects it out, and discards it. The only thing subtracted is the gratuitous torture component. As a result, the algorithm continues to recommend clever, suspenseful slashers like A Nightmare on Elm Street, while torture-slasher titles cleanly disappear.

Recommendations That Actually Listen

The difference in the app is immediate. Under the updated math in iOS 1.1.0, rating a slasher film as "Not for me" no longer kicks you out of the horror section.

Your recommendations stay firmly within atmospheric, psychological horror. Thoughtful titles like Goodnight Mommy, Presence, and The Dark and the Wicked remain front and center, while slasher and splatter titles cleanly vanish. The engine learns the boundaries of your taste instead of overreacting.

After the fix: a profile that loved Hereditary, The Witch, The Babadook, It Follows and Sinister and disliked Hostel gets a top 10 that is all horror, including Goodnight Mommy, Presence and The Dark and the Wicked. Before the fix the same ratings got 5 of 10.

Equally important, this mathematical isolation preserves precision across franchises and sequels. If you loved an original film but disliked a lackluster follow-up, the engine does not abandon the original's creative tone.

Building a movie recommendation engine that runs entirely on your device means there are no cloud algorithms secretly grouping you into demographic buckets. Every calculation happens right in your hand. And by isolating the exact geometry of your taste, tapping "Not for me" finally means exactly what it should: refining your taste, rather than destroying it.