Gravity7 Design with AI

How Sightlines works

How I designed and built an AI film guide around taste, mood and lineage: what each feature does for the person using it, how it works underneath, and how many tries the hard parts took.

Sightlines is a film guide to 3,578 films. I designed it and built it with Claude, starting on June 4, 2026. The repository holds 1,512 commits since then. The live site is on its 611th release. This page explains it as I would to a product team: what a person does, what happens underneath, and what I changed when a version was wrong.

What it is, and why taste, mood and lineage

Most recommendation features answer one question: what is similar to this? The answer is usually a film with the same genre, stars or viewers. That is useful, and it is flat. People choose films by mood ("something tense but not gory"), by a film they loved, by a director, and by a sense of their own taste they rarely put into words.

Sightlines is built on three ideas instead:

  • Taste is a set of distinctions, not a list of favorites. Two people who love Heat may love it for different reasons, and the reasons make better recommendations than the title.
  • Mood is how people actually decide on a given night. Every film carries a plain statement of when it is the right choice.
  • Lineage is how films relate to each other in film history: what a film inherited, and what it passed on. It gives a recommendation a reason you can read.

I chose films because I know them well enough to judge every result: right, merely plausible, or wrong. Much of the design handles all three.

The Sightlines browse page with Ask for a film, Bring your films and Read your taste, above a grid of film posters
Browse: every film on one wall, with three ways in: ask in your own words, bring your own films, or read your taste.

Where the idea comes from

The taste readings go back to recommendation work I did as a designer. In 2006 I wrote the requirements for TrustedOpinion, a movie recommendation and social site built on its users' film expertise, and for France Telecom/Orange I took a “Yelp-killer” idea to a working recommendation demo. Then, in 2010 and 2011, came Likelist, a social commerce startup built on the Facebook social graph. Its idea was that we trust different friends for different things: one for a dentist, another for a restaurant, another for a movie. Likelist let retailers offer coupons to the person their friends trusted in that domain, so a coupon arrived as that person's recommendation, worth more than an online ad. What stayed with me from that work is a belief I still hold: you can tell people's tastes apart, and you can personalize both recommendations and the whole experience to them.

On Likelist, taste was carried by trusted people. The hard part was saying what their taste consisted of. Language models change that. They can describe a film's tone, craft and feel in detail no tagging team could match, and put a reading of someone's taste into plain words. Sightlines is my test of whether that old belief holds once the system can read content as well as clicks.

The features, from your side and from underneath

What gets written for each film

From your side. A film page opens with what the film is about, the experience of watching it, its performances and its craft. Tabs hold the lineage, a theory reading, the reception history and a how-to-watch guide. See Heat for a full example.

Underneath. Each film has a research dossier, and every other layer is written from it. All of this is produced once, in batches, and stored. None of it is generated on page load.

The Sightlines film page for Heat (1995), with its mood statement and tabs for How to watch, Lineage, Theory and Reception
A film page: the mood statement up top, then the reading, with tabs for how to watch, lineage, related films, theory and reception.

Taste readings from your own favorites

From your side. You bring films you love, and Sightlines writes a reading of your taste in plain words: what you go to films for, the tone you take, how you like a film shot and written. Each claim names the films behind it and suggests films you have not seen. You can answer every claim with That's right, Not me or Say more: confirmed claims lead your recommendations, and rejected ones stop steering them. You can sharpen it by choosing between films, and with no list at all, a reading builds from choices alone. See an example reading.

Underneath. Every film was scored once on shared scales (mainstream to cinephile, pleasure to effort, canon, intensity, scale), each anchored by named films so thousands of judgments sit on one ruler. Reading a list is then lookup and comparison: where your films sit against the catalog and against other real lists. The writing comes last. The AI narrates what was computed, and every sentence must point at a film you brought. A checker catches stock AI phrasing and sends the text back for one rewrite.

A Sightlines taste reading: claim cards such as Being swept along and Puzzles, each with the films on the list behind it and suggested films
A taste reading in plain words. Each claim names the films on your list behind it, then suggests films that share the quality.

Your Films

From your side. Your Films is the one place to bring a set of films: a Letterboxd list, watchlist or username, titles one per line, a CSV export, a screenshot of a poster grid, or a whole Reddit recommendations thread pasted in. From that list you can read your taste, group the films, open related films, or make a course. The tips page says what each input brings.

Underneath. Every input lands in the same place: one list, saved under a link that is also what gets shared. From a Reddit thread, usernames and votes are dropped, and the films are ordered by how many people suggested each. I made one rule for this page: a new way of bringing films is not finished until every feature that reads a list can use it.

Mood and tone sliders

From your side. On any wall of films, eleven sliders reorder the films by tone: warm to menacing, funny to serious, uplifting to devastating, slow-burn to frenetic, tame to shocking, simple to cerebral, grounded to fantastical, scrappy to blockbuster, and more. Type two films with "vs" ("Heat vs Collateral") to see where each sits on every slider. Open the facets wall.

Underneath. Each slider is a pair of opposite descriptions. A film's position is how much closer it sits to one pole than the other, spread evenly across the catalog. I cut axes that moved together: "intensity" tracked pace, and "scale" tracked budget. Later the sliders turned out to be taste data too, and they feed the taste reading.

Moods

From your side. Each film carries a mood statement that says when it is the right choice. For Heat: "For when you want a serious, immersive crime saga to give a whole evening to." On Ask you can say it your own way ("a quiet film about grief that ends with some hope") and get films back, each with a reason.

Underneath. There are two descriptive layers for each film. One is objective: what the film is and how it is made. The other is affect: what a viewer feels, seeks and is left with. For Heat that includes "a cool, melancholy hum under even the quiet scenes" and "rooting for both the cop and the crook, unable to pick a side." Mood statements, Ask and the taste reading draw on it.

Related films, through facets, moods and lineage

From your side. Every film page has one Related films button. It opens a wall of films ranked by closeness, with rings that mark which are ancestors, which are sideways, and which share a curated run with it. Each caption names the relation, then the reason. If you have a taste reading, the wall opens tuned to your taste. Facets narrow it by decade, genre, mood, subject, technique, movement or country.

Underneath. Related films come from a neighbor index built ahead of time for every film. It blends four signals: closeness in meaning, lineage, films that sit together on people's public watchlists, and membership in the same viewing thread. Each neighbor carries its reason. Because the index is pre-built, the wall needs no AI call and answers the same way every time.

Lineage and influences

From your side. The Lineage tab lists the films a film descends from and the films it influenced, with a line on what carries over. Heat's ancestors include Melville's Le Samouraï, for its professional defined entirely by his code, and Dassin's Rififi, whose silent half-hour heist set the standard for showing thieves at work.

Underneath. Lineage was one of the first things I built: 595 films in the first week. Each film's record was written separately, so two films could disagree about who influenced whom. Since September the site reconciles them into one graph as it reads them. When both films claim the same direction, the earlier film is the ancestor.

How-to-watch guides

From your side. Most films have a short guide to watching them: three to five things to look and listen for on a first viewing, with no spoilers, and more for a rewatch. Each key names its kind: camera, light, cutting, sound, performance, staging, setting or structure. Heat's first key: "Watch the blue and gray-green in every night exterior." See how to watch Heat and the guide to the keys.

Underneath. A key has three parts: something you can see or hear, the pattern it belongs to, and what noticing it gives you. Every set is checked against a rubric before it is published: the first clause must be observable, the payoff must not be a verdict, and first-viewing keys must not spoil. In October a stricter spoiler check failed 68 sets, which were fixed. Guides for new releases waited until their material could be refreshed from the finished film.

How to watch Heat: first-viewing keys labeled Light and Camera, each with a payoff
How to watch Heat: first-viewing keys, each naming something to see or hear and what noticing it gives you.

Film courses

From your side. Courses are spoiler-free runs of films to watch together, with what to watch for in each and what carries over to the next. An example: single takes. Your Films can write a short course from your own films.

Underneath. The 218 curated courses are written ahead of time. A course from your own films calls the AI live, so it sits behind a daily cap, and since October 13 it needs a real click to start, because crawlers were triggering them.

The Sightlines film courses page with viewer's guides and courses made by visitors
Courses: 218 curated, spoiler-free guides, plus courses visitors make from their own films.

Theory readings

From your side. The Theory tab reads a film through Gilles Deleuze's two Cinema books: how the film builds time, movement, action and narrative form. The concepts link to a glossary with the films that show each one, such as the time-image. See the reading of Heat.

Underneath. There are 2,773 theory readings, and new ones are judged before they are adopted. Which films get one is decided by rule: directors already read twice or more, major festival prizewinners, and films already in a course or essay. How-to-watch keys link to the reading when they touch one of its concepts.

The feed

From your side. The feed is a running stream of what people do on the site: questions asked, films read about, lists brought, courses made. No names, no taste readings. Each item has a poster, a line, and one next step.

Underneath. The feed is built from the site's own activity log, and it works hard to show people and not machines. A search in the feed opens its wall of films directly instead of asking the AI again on every tap.

The Sightlines public feed: films people read about, with posters, a summary and where they went next
The public feed: what people did on the site in the last two days, each item with one step onward.

The attempts

None of the hard features worked the first time. The repository records each try, so I can count them.

The taste reading: nine versions in eleven weeks

  1. July 3: "Find your style." Read a Letterboxd member's taste from their public lists. On July 23, Four Favorites read a screenshot of the four films on a person's profile.
  2. August 17–18: a grounded engine. The system computes what is over-represented in your list, and the AI only narrates it. A radar "taste fingerprint" sat on top.
  3. August 19–20: an adaptive radar. Axes from curated lists (acclaimed classics, gem hunter, of the moment), and a first round of film pairs to sharpen it.
  4. August 27: radars by department. Camera, performance and writing. The same day I demoted them: they read ingredients from a handful of films, and a taste is the cuisine.
  5. September 1: score every film once. One table, one row per film; a list is read as lookups over it, and a map places you among 65 real lists. It went live as release 549. Within forty minutes it failed for anyone who imported star ratings; no test list had mixed ratings. Release 550 fixed it that night.
  6. September 2: a piece of writing about a person. Not a report about films. A lint for AI tics and one rewrite pass. Sharpening answers became pick, both, or skip.
  7. September 3: no list needed. Genre ladders of film pairs (344 pairs across 12 genres) let a reading build from choices alone.
  8. September 16: back to cuisines. My note that day: "we've again gone back to reading ingredients rather than cuisines… it's about where I sit compared to others." The written reading now leads, the numbers fold away, and viewing threads that hold three or more of your films recommend their films you have not seen.
  9. September 17: the reading answers back. That's right, Not me and Say more on every claim; 63 hand-curated pairs of films people argue over; four films at a time. It went live with the rebuilt site on September 18.

The design decision underneath all nine: a reading proves itself by changing what the site shows you.

Related films: seven versions

  1. June 10: Picks. Select films, get recommendations.
  2. July 1: kindred films for any title, even one not in the catalog. A small AI call maps an outside film database's facts to the site's vocabulary.
  3. July 6–26: meaning. Semantic search for mood and plot questions, then "find similar" ranked against the center of a whole list.
  4. August 13: one pre-built neighbor index for every film, with no AI calls. Five related-films features moved onto it and finally agreed with each other.
  5. September 11: one button. "Explore by feel" and "Kindred & lineage" repeated Related films, so they were retired. Captions name the relation, then the reason.
  6. September 14: one lineage graph, reconciled at read time.
  7. October 13: in your taste. With a reading on your device, Related films opens tuned to it.

The feed: from a private console to a public page

The feed started on October 1 as a page only I could see, and I rebuilt it four times that day: posters and a line per item; no empty items and Newest, Popular and Trending; a question shown with its stored answer and one step under every item; and "In focus," a summary of the window by genre, mood and decade. It reached the live site on October 5, still private.

Then came the cleanup. On October 9, 24 of 31 "opened a list" sessions turned out to be headless browsers, so flagged sessions now drop out. On October 13 the feed began showing only courses people made. Before opening it, I read two weeks of it: about 96 public items a day, two-thirds of them people reading about films. On October 18 it went public quietly at release 607, in the nav after Browse.

The site itself: one search, one grid, two modes

The first version of the site grew one page per feature. By September it had five different film grids, 25 input fields and 16 capabilities under 90 labels. I redesigned it as a content system: one search field that accepts anything (a title, a mood, a question, a list, a link, a screenshot), one grid used everywhere, and two modes from any starting point, Films and Read. Every kind of content got one template. The rebuilt site went live on September 18.

One rule from that redesign runs through the site: one intent per call to action. A person with four favorites wants to know what the four say about them, not where their ancestors are, so a panel offers two doors at most.

The system behind it

  • Custom content management. New films go into an intake pipeline. Films people search for and can't find get queued for intake, and each release is refreshed and checked before it goes live.
  • Written ahead, read instantly. Content, related films, threads, courses and guides are produced in batches, so most pages make no live AI call. The few that do (Ask, taste readings, courses from your films, screenshot reading) have per-visitor and site-wide daily caps.
  • No accounts. Anything you save becomes a link you own and can share.
  • Editorial and fact checks. AI writes the content, and checks sit between it and the page: the how-to-watch rubric, a judge for theory readings, a lint on the taste narrator, and a fact and spoiler check whenever a new release is refreshed. The October 22 release alone carried 124 such fixes.
  • Admin consoles and engagement dashboards I designed. Live visitor journeys through the site's many doors and interactive features, which ones people use and where they go next, AI costs by purpose, and filters that keep crawlers out of the numbers while counting a person who reads a page and leaves. They show far more than standard analytics.
  • Staging first. Everything runs on a staging copy, and each live release records its rollback.

I made the product decisions: what the site is for, what each feature promises, what the AI may and may not say, and when a version is wrong. Claude wrote the code and much of the content to those decisions, and I reviewed the results in the running site.

Scale, as of October 22, 2026

Counts come from the site's data files on that date.

Films3,578
Film write-ups (about, experience, mood, performances, craft)3,577
Lineage records3,577
Reception histories3,576
How-to-watch guides, all passing the rubric3,089
Theory readings2,773
Viewing threads (curated runs)226
Curated film courses218
Film essays136
Pages in the sitemap13,788

What it shows

Sightlines uses AI for a user experience, not a chatbot. AI writes content at a scale no editor could, and the design decides how people meet it: through moods, lineage and their own taste. It also shows what building with AI looks like. The taste reading took nine tries and related films seven, and most progress came from looking at a real result and saying what was wrong. The same approach fits any catalog people choose from: books, music, courses or products.

If you are working on recommendations, personalization or AI content for a product, I'd like to hear about it. Ways to work together →

Explore Sightlines →   ·   The Inquiring Lines case study →