Back to Projects
Case Study

CultureTerminal

A Techmeme for culture. One place to see what is happening across advertising, design, fashion, and media: ranked daily by a custom scoring algorithm.

Visit cultureterminal.com
cultureterminal.com
CultureTerminal website screenshot

One dashboard for the culture industry

If you work at the intersection of brands, design, media, and culture, you are probably reading a dozen different sources every day. Design news on one site. Fashion business on another. Advertising trades somewhere else. Brand strategy in a newsletter. The information exists, but it is fragmented.

CultureTerminal aggregates 30+ RSS feeds from the best sources in the cultural business space: from Dezeen and Business of Fashion to Fast Company, Hypebeast, Wired, Forbes, Adweek, and Kottke: and scores every story using a custom CULT algorithm. The algorithm weighs recency, source authority, and cultural relevance to produce a 0-100 ranking. The best stories rise. No algorithm to game, no engagement bait.

The result is a single page that tells you what happened in culture today. Open it in the morning, scan the top stories, and you are caught up. That is the entire value proposition: saving the time of someone who needs to know what is happening across culture.

Automated curation, daily discipline

Every morning, an automated pipeline runs via GitHub Actions. It pulls the latest stories from 30+ RSS feeds, deduplicates and cleans the data, and scores each story using the CULT algorithm. Stories are sorted into 8 categories covering advertising, design, fashion, media, brands, technology, food and culture, and more.

The scored, ranked feed gets published as a clean static dashboard. No JavaScript frameworks, no loading spinners: just fast HTML that loads instantly and presents the day's cultural news in a scannable format. A companion newsletter, "The Cultural Interface," packages the best stories into a weekly digest.

"Everyone in advertising says they're plugged in to culture. Most of them are reading the same three newsletters. I wanted to build the thing I wished existed: one page, every morning, and you know what happened."

Why it works the way it works

The CULT scoring algorithm. Every story gets a score out of 100 based on three factors: recency (how fresh it is), source authority (Dezeen carries more weight than a random blog), and cultural relevance (keyword density around brands, design, advertising, and culture). I spent a lot of time tweaking the weights until the top stories actually matched what I'd pick manually. That was the test: does the algorithm have taste?

Eight categories, not three or thirty. I tried fewer categories and the page felt too thin. I tried more and it became noise. Eight turned out to be the sweet spot: Advertising, Design, Fashion, Media, Brands, Technology, Food & Culture, and a catch-all. Enough to browse by interest, not so many that you're overwhelmed.

Static HTML, not a single-page app. This was a deliberate choice. A news dashboard doesn't need React. It doesn't need client-side rendering. It needs to load fast and show you text. The entire site is pre-built HTML deployed to a CDN. It loads in under a second. That's the whole point.

The newsletter companion. The site is for daily scanning. The newsletter is for weekly depth. They serve different reading modes. The site answers "what happened today?" and the newsletter answers "what mattered this week?" Having both means CultureTerminal works whether you check it every morning or once a week.

Lessons from building a daily habit

Curation is harder than creation. Anyone can pull RSS feeds into a page. The hard part is deciding what counts as "cultural business news" and what doesn't. I must have added and removed fifty sources before landing on the current thirty-plus. The editing is the product. What you leave out matters more than what you put in.

Automation changes your relationship with a project. Once the pipeline worked, CultureTerminal became something that exists independently of me. It updates every morning whether I'm paying attention or not. That shift from "thing I maintain" to "thing that runs" was a genuine milestone. It freed me up to build other things.

RSS is quietly brilliant. In a world obsessed with APIs and scraping, RSS just works. It's simple, it's standardised, and the best publications still support it. Building CultureTerminal made me properly appreciate how much of the open web still runs on this technology that most people think died with Google Reader.

"The best compliment I've had on CultureTerminal is someone telling me they open it before Twitter every morning. That's the whole brief, right there."

30+ RSS feeds 8 categories CULT scoring algorithm Daily automation Newsletter digest PWA / offline support
Python GitHub Actions HTML / CSS / JS Netlify Claude Code RSS / feedparser CULT Algorithm Plausible Analytics

The best stories from advertising, design, fashion, and media. Ranked daily.

Visit CultureTerminal
How This Was Built
CultureTerminal
StackPython, HTML/CSS/JS
PipelineRSS → feedparser → CULT Score → Rank → Deploy
AutomationGitHub Actions (daily, 6am UTC)
HostingNetlify CDN
Build toolClaude Code
AnalyticsPlausible (privacy-first)
Build time~1 week
Sources30+ RSS feeds across 8 categories
ScoringCULT algorithm (recency + authority + relevance)
OutputStatic HTML, sub-second load