RazinFlix
A streaming-style film library built from trusted human taste, enriched by metadata scripts, trailers, posters, category logic, and manual curation.
At a glance
- Who it serves
- Me, family and friends choosing films from recommendations we trust.
- What I owned
- Curated collection, enrichment workflow and the browsing interface.
- Key decision
- Keep human curation in charge; use automation and AI-assisted ingestion to maintain the catalogue.
- Current state
- Live film-discovery library with browsing, trailers and curator tools.
- Evidence and gap
- Live catalogue and recorded workflow. A working personal library is the result; audience growth is not claimed.
Problem
RazinFlix started because I was bored of the selection on traditional streaming services. I love films with meaning, and the best recommendations I was getting did not come from Netflix or Prime algorithms. They came from cinephile friends, family, social media rabbit holes, and personal conversations.
The main problem was that all of those films ended up in a spreadsheet. The quality of the list was high, but the experience was dead.
I wanted the browsing experience of Netflix, but with a film library curated by people whose taste I actually wanted and trusted.
Architecture
Model: RazinFlix uses AI-assisted metadata enrichment when films are added, including Gemini plot synthesis alongside TMDb, IMDb, YouTube, and cached lookups. Browsing the finished catalogue does not require a live LLM response for each film.
The system pulls posters, trailer keys, descriptions, type information, ratings, and genre signals, then applies deterministic category rules and manual overrides.
That choice matters. RazinFlix is not trying to hallucinate film knowledge. It is trying to take a messy, human-curated film list and make it browsable, searchable, and self-organising enough that I can keep maintaining it with family and friends.
Context: the context layer is the film database itself. The original source is CSV-based, with titles, years, directors, descriptions, IMDb IDs, and ratings. Around that, RazinFlix has a cache, bad-trailer reports, manual poster and trailer overrides, corrected poster assets, and category logic.
The catalogue began as a spreadsheet and CSV seed, with enriched film records, cached lookups, and manual corrections forming the browsing data. The catalogue snapshot used for this write-up contains 337 films with posters and 319 trailer keys.
The catalog is grouped into 13 curated shelves: Japanese Anime, Television & Miniseries, Global Documentaries, Crime & Thriller, Mind-Bending Sci-Fi & Fantasy, Surrealism & The Subconscious, Iranian Cinema & Middle East, Love & Heartbreak, Coming of Age & Youth, Historical Epics & Period Pieces, Psychological & Character Studies, Contemporary Comedy & Satire, and World Cinema & Drama.
That is the product layer: the list keeps the taste of the people who recommended the films, while still giving me the browsing affordances of a modern streaming app.
Orchestration: the pipeline accepts the original CSV seed or film names and years from the Add Film interface. It deduplicates entries, enriches metadata, applies fallbacks and manual corrections, and adds the resulting records to the catalogue. The admin editor lets a curator correct artwork, ratings, trailers, descriptions, and categories.
There are also maintenance scripts that check database health, find missing trailers, verify suspicious trailer/title mismatches, patch bad trailer keys, mutate categories, and query Supabase records.
The React interface groups films into category rows, supports search across title, director, and description, and opens a detail view for each film. If a trailer key exists, the view plays the YouTube trailer. If not, it falls back to the poster and film details.
Governance: the governance layer is still early, but the project already shows the shape of it. There are scripts for missing fields, suspicious trailer mismatches, duplicate cleanup, and manual correction. This matters because film metadata APIs are useful but imperfect.
The maintenance workflow still needs stronger release checks for metadata completeness, trailer mismatches, and failed enrichment. Film adding is password-gated. Those controls support curation; the catalogue still depends on a person reviewing uncertain matches.
Human: the human layer is the most important part of RazinFlix. The app only makes sense because the source list comes from people: friends, family, social media discoveries, and my own taste. The categories are curatorial shelves that serve different viewing moods across casual and deeper occasions.
Manual overrides are fundamental to the product. The system can fetch metadata and organise the collection, but the human layer decides what belongs, what is meaningful, and what is worth watching.
Why this approach
The obvious version would have been to build another movie database: connect an API, show popular films, add search, and call it done. But that would have recreated the same problem I had with streaming services: lots of content, not enough trust.
So I chose a curated catalog first, and a streaming-style interface second. The spreadsheet had the taste; it just needed a better experience.
RazinFlix keeps human curation at the centre, then uses automation to make that list easier to browse, organise, and maintain.
Tradeoffs
RazinFlix gives up infinite choice for trusted curation. Traditional streaming services win on volume, but that was exactly the problem. I did not want another endless catalog of average options. I wanted a smaller library where each film had a reason to be there.
It gives up algorithmic personalisation for human taste. Netflix can optimise for what keeps someone watching, but RazinFlix is optimised around recommendations from people I trust: family, friends, cinephiles, and my own discoveries.
That makes the catalog more meaningful, but also more subjective.
It gives up instant availability for discovery quality. RazinFlix is not trying to solve licensing or become a streaming platform. It helps me decide what is worth watching, even if I still have to find the film somewhere else afterward.
Demo / proof
RazinFlix is accessible as a live project surface through the portfolio ecosystem.
The live product demonstrates the core browsing surface: curated category shelves, search across title/director/description, film modals, poster fallback, and YouTube trailer playback when a trailer key exists.
The catalogue snapshot used in this write-up contains 337 films with posters and 319 films with trailer keys, grouped into 13 curated shelves.
The portfolio walkthrough shows film-name input, the enrichment run, the metadata editor, and the resulting catalogue entry. The pipeline combines metadata lookups, Gemini plot synthesis, trailer and poster checks, cached data, and manual corrections.
What I would improve
Add Film and the metadata editor already handle adding and correcting records. The next improvement is a shared curation workflow rather than another admin screen.
Family and friends should be able to explain why a recommendation matters, review uncertain matches, and track who made a correction. That requires clearer contributor roles and review history around the existing tools.
I would also measure enrichment failures and manual correction time so improvements target the maintenance work that still slows the catalogue down.
The best version of RazinFlix is a living, easy-to-use, self-organising cinema library where trusted human taste stays at the centre.