← back
ReadingLeyendo0%

01. FEATURED CASE STUDY 01. CASO DE ESTUDIO DESTACADO

Cinefile Cinefile

From saved reels to a media library I actually use. De reels guardados a una biblioteca de medios que de verdad uso.

I had too many movie recommendations saved on Instagram. So I built Cinefile. Tenía demasiadas recomendaciones de películas guardadas en Instagram. Así que armé Cinefile.

I kept saving reels with movies, shows and documentaries I wanted to watch - and then completely forgetting they existed. Guardaba reels con películas, series y documentales que quería ver - y después me olvidaba por completo de que existían.

What started as a way to extract recommendations from Instagram eventually became a personal media library that can understand a reel, identify what's mentioned, enrich it with movie data, and save everything somewhere I'll actually look at again. Lo que empezó como una forma de extraer recomendaciones de Instagram terminó convirtiéndose en una biblioteca personal de medios que entiende un reel, identifica lo que se menciona, lo enriquece con datos de películas y guarda todo en un lugar donde de verdad voy a volver a mirarlo.

  • React
  • Next.js
  • OpenAI
  • Azure
  • PostgreSQL
  • TMDB
Cinefile app interface

02 · THE PROBLEM 02 · EL PROBLEMA

My watchlist was an Instagram collection. Mi lista para ver era una colección de Instagram.

I had more than 100 saved posts with movie and TV recommendations. The problem wasn't finding things to watch - I was very good at that. The problem was finding them again. Tenía más de 100 publicaciones guardadas con recomendaciones de películas y series. El problema no era encontrar qué ver - eso lo hacía muy bien. El problema era volver a encontrarlas.

A recommendation could be buried in a reel, mentioned for two seconds in a video, written in the caption, or hidden somewhere in a carousel. Every new post made the collection slightly less useful. Una recomendación podía estar enterrada en un reel, mencionada por dos segundos en un video, escrita en la descripción, u oculta en algún lugar de un carrusel. Cada nueva publicación hacía la colección un poco menos útil.

So I started with a simple question: Así que empecé con una pregunta simple:

Could I paste an Instagram link and automatically turn whatever it recommends into something searchable? ¿Podría pegar un enlace de Instagram y convertir automáticamente lo que recomienda en algo buscable?

04 · HOW IT WORKS 04 · CÓMO FUNCIONA

From reel to library. De reel a biblioteca.

Cinefile turns messy, unstructured content into a clean media library through a simple pipeline. Cinefile convierte contenido desordenado y sin estructura en una biblioteca de medios limpia a través de un pipeline simple.

  1. 1

    Get the content Obtener el contenido

    Pull the media and caption from the Instagram post (using an API). Trae el medio y la descripción del post de Instagram (usando una API).

  2. 2

    Understand the media Entender el medio

    Audio is transcribed and images are analyzed when needed (Azure). El audio se transcribe y las imágenes se analizan cuando hace falta (Azure).

  3. 3

    Extract the recommendations Extraer las recomendaciones

    OpenAI identifies the movies and shows mentioned and structures the results. OpenAI identifica las películas y series mencionadas y estructura los resultados.

  4. 4

    Match the real title Encontrar el título real

    Each candidate is matched with TMDB to get the correct title, year, genres, rating and more. Cada candidato se cruza con TMDB para obtener el título correcto, año, géneros, calificación y más.

  5. 5

    Review & confirm Revisar y confirmar

    Uncertain matches are surfaced for review before saving. Las coincidencias inciertas se muestran para revisar antes de guardar.

  6. 6

    Save it once Guardar una sola vez

    The final media item is stored in the library with its original source and provenance. El medio final se guarda en la biblioteca con su fuente original y procedencia.


  • Instagram media +
    caption
    medio +
    descripción
  • Azure transcription
    + vision
    transcripción
    + visión
  • OpenAI extract
    & structure
    extraer y
    estructurar
  • TMDB enrich
    & match
    enriquecer
    y cruzar
  • PostgreSQL save
    + source
    guardar
    + fuente

05 · THEN IT GOT BIGGER 05 · LUEGO CRECIÓ

From extraction tool
to a proper media library.
De herramienta de extracción
a una biblioteca de medios real.

Once the extraction worked, the original problem changed. I no longer just needed a tool that could extract movie names. I needed a place where I actually wanted to browse, organize and rediscover them. Una vez que la extracción funcionó, el problema original cambió. Ya no solo necesitaba una herramienta que extrajera nombres de películas. Necesitaba un lugar donde de verdad quisiera explorar, organizar y redescubrirlas.

  • Personal library Biblioteca personal

    Movies, TV shows and documentaries in one place. Películas, series y documentales en un solo lugar.

  • Watched & favorites Vistas y favoritas

    A lightweight way to keep track of what I've seen and what I loved. Una forma simple de llevar registro de lo que vi y lo que me encantó.

  • Lists Listas

    Create custom lists for different moods or themes. Crea listas personalizadas para distintos ánimos o temas.

  • Search & filters Búsqueda y filtros

    Actually find the thing I vaguely remember saving six months ago. Encontrar de verdad eso que vagamente recuerdo haber guardado hace seis meses.

  • Where to watch Dónde verla

    See streaming availability by country and provider. Ver disponibilidad de streaming por país y proveedor.

  • Recommendations Recomendaciones

    Search my own library with natural language, like "something unsettling without being outright horror". Buscar en mi propia biblioteca con lenguaje natural, como "algo inquietante sin llegar a ser terror".

06 · THE SYNC PROBLEM 06 · EL PROBLEMA DE SINCRONIZACIÓN

I was still doing one
thing manually.
Todavía hacía una cosa
manualmente.

At first, every new recommendation meant: open Instagram → open the collection → copy the link → paste it into Cinefile → process it. Al principio, cada nueva recomendación significaba: abrir Instagram → abrir la colección → copiar el enlace → pegarlo en Cinefile → procesarlo.

Which was slightly ridiculous, considering I built the app specifically to stop doing this manually. Lo cual era un poco ridículo, considerando que construí la app específicamente para dejar de hacer esto manualmente.

Person resting their chin on their hands, looking at a laptop

So I added collection syncing. Así que agregué sincronización de colecciones.

Cinefile can check the Instagram collection, identify posts it hasn't processed before, and bring the new ones into the existing pipeline. Cinefile puede revisar la colección de Instagram, identificar publicaciones que no ha procesado antes, y traer las nuevas al pipeline existente.

Instead of building a scheduled automation with n8n, I ended up adding a Sync button directly to the app. And that turned out to be enough. En lugar de construir una automatización programada con n8n, terminé agregando un botón de Sync directamente en la app. Y eso resultó ser suficiente.

"Not every automation needs to become an automation. Sometimes the useful product is just a really good button." "No toda automatización necesita convertirse en una automatización. A veces el producto útil es solo un botón realmente bueno."
  • Originally considered Considerado originalmente

    Scheduled n8n workflow (daily sync) Flujo n8n programado (sync diario)

  • Shipped Lanzado

    On demand sync inside Cinefile Sync bajo demanda dentro de Cinefile

07 · BUILDING THE INTERFACE 07 · CONSTRUYENDO LA INTERFAZ

The library changed
three times.
La biblioteca cambió
tres veces.

I wanted it to be useful, but also fun to use. Here's how the interface evolved. Quería que fuera útil, pero también divertida de usar. Así evolucionó la interfaz.

V1 — Movie wall V1 — Muro de películas

Different poster sizes, cinema lights, ratings and filters. It looked fun, but had too much visual noise. Distintos tamaños de póster, luces de cine, calificaciones y filtros. Se veía divertido, pero tenía demasiado ruido visual.

V1 movie wall interface

V2 — The cleaner grid V2 — La grilla más limpia

Uniform cards, clearer watched / favorite states and better density. Much easier to scan, but still not quite mine. Tarjetas uniformes, estados de vista / favorita más claros y mejor densidad. Mucho más fácil de escanear, pero todavía no del todo mía.

V2 cleaner grid interface

V3 — VHS shelf (current) V3 — Estante VHS (actual)

Then I stopped trying to make it look like every other streaming app. The current direction turns the library into a shelf of custom VHS spines, with a CRT display for the selected movie. Entonces dejé de intentar que se viera como cualquier otra app de streaming. La dirección actual convierte la biblioteca en un estante de lomos VHS personalizados, con una pantalla CRT para la película seleccionada.

V3 VHS shelf interface

The product became more useful when I let it become a little weird. El producto se volvió más útil cuando lo dejé volverse un poco raro.

VHS tape

08 · SOME KEY DECISIONS 08 · ALGUNAS DECISIONES CLAVE

Product decisions
that made a difference.
Decisiones de producto
que marcaron la diferencia.

  • Don't process the same media twice No procesar el mismo medio dos veces

    Instagram posts have their own source identity, so previously processed media can be recognized instead of running the expensive parts again. Los posts de Instagram tienen su propia identidad de fuente, así que un medio ya procesado se reconoce en vez de volver a correr las partes costosas.

  • AI suggests. The product verifies. La IA sugiere. El producto verifica.

    LLMs are useful for extracting likely titles from messy content, but movie identity belongs to TMDB. The system separates what the AI thinks was mentioned from what gets saved as the actual movie. Los LLMs sirven para extraer títulos probables de contenido desordenado, pero la identidad de la película le pertenece a TMDB. El sistema separa lo que la IA cree que se mencionó de lo que se guarda como la película real.

  • Keep the original source Conservar la fuente original

    A saved movie remembers where it came from. I can always trace a title back to the Instagram post or media that introduced it. Una película guardada recuerda de dónde vino. Siempre puedo rastrear un título de vuelta al post de Instagram o al medio que lo introdujo.

  • Batch when necessary Agrupar cuando hace falta

    Collections can contain many new posts, so processing supports batching and chunking instead of treating everything as one giant request. Las colecciones pueden tener muchos posts nuevos, así que el procesamiento admite agrupar y dividir en lotes en vez de tratar todo como una sola petición gigante.

09 · TECH STACK 09 · STACK TÉCNICO

What I actually built. Lo que realmente construí.

Product Producto

  • Media library Biblioteca de medios
  • Search & filtering Búsqueda y filtros
  • Favorites / watched Favoritas / vistas
  • Lists Listas
  • Where-to-watch data Datos de dónde verla
  • Natural-language search Búsqueda en lenguaje natural
  • Instagram collection sync Sync de colección de Instagram

AI / Data IA / Datos

  • Video transcription Transcripción de video
  • Image understanding Comprensión de imágenes
  • Content extraction Extracción de contenido
  • Movie/identity matching Cruce de película/identidad
  • Generated VHS artwork Arte VHS generado

Engineering Ingeniería

  • Next.js / React
  • TypeScript
  • OpenAI
  • Azure
  • Azure AI Services
  • TMDB
  • PostgreSQL
  • Instagram APIs
  • Playwright (collection) Playwright (colección)

10 · WHAT I LEARNED 10 · LO QUE APRENDÍ

The most interesting part
wasn't the AI.
La parte más interesante
no fue la IA.

AI made the messy inputs understandable. But most of the real product work happened around it: deciding what information could be trusted, preserving sources, avoiding duplicate work, designing review states, handling failed matches, and making the library enjoyable to browse. La IA hizo entendibles las entradas desordenadas. Pero la mayor parte del trabajo real de producto pasó alrededor de eso: decidir qué información se podía confiar, conservar las fuentes, evitar trabajo duplicado, diseñar estados de revisión, manejar coincidencias fallidas, y hacer que la biblioteca fuera agradable de explorar.

"The project started because I wanted to know what to watch. It became an exercise in turning messy, unstructured internet content into a product I actually wanted to use." "El proyecto empezó porque quería saber qué ver. Se convirtió en un ejercicio de convertir contenido de internet desordenado y sin estructura en un producto que de verdad quería usar."

Observe first.
Build second.
Observa primero.
Construye después.

12 · HAVE A SIMILAR PROBLEM? 12 · ¿TIENES UN PROBLEMA PARECIDO?

Two black cats resting on a stack of books

Have a similar problem in your business? ¿Tienes un problema parecido en tu negocio?

I build apps, AI features and automations around problems that are worth solving. Construyo apps, funciones de IA y automatizaciones alrededor de problemas que vale la pena resolver.