Hackathon 2023 — On regarde quoi ce soir ?

SensCritique
6 min readDec 22, 2023

--

Hi there, captain’ Thibaut (CTO) on board ! 👋🏻

Nous avons pensé à vous pour les longues soirées d’hiver, moment propice à la (re)découverte de nouveaux films ou séries, avec la mise en ligne d’une nouvelle page de découverte d’oeuvres. Cet article raconte le déroulement de la création de cette nouvelle fonctionnalité.

Ce projet s’inscrit dans le cadre d’un rituel que nous avons lancé l’année dernière au sein de l’équipe produit : Le hackathon. La réussite du précédent nous a donné envie de continuer. C’est aussi l’occasion pour nous de vous partager les réflexions et le déroulé d’un projet au sein de notre équipe produit.

LA PRÉPARATION

Le dernier hackathon nous a permis de voir ce qui fonctionnait bien et les erreurs à ne pas reproduire. La première règle à s’imposer est de ne pas choisir une fonctionnalité trop complexe ou trop longue à développer, il faut tenir sur 7 jours, pas plus ! Dans les choses qui ont bien fonctionné qu’on souhaitait garder c’est l’organisation pré-hackathon :

Avant le hackathon on “prépare” les sujets que l’on va devoir sélectionner et on vote tous pour choisir le sujet du hackathon. Une fois le sujet sélectionné, j’essaie de voir qui va pouvoir travailler sur la fonctionnalité et comment agencer ça au mieux. L’idée c’est surtout de travailler tous ensemble et d’éviter qu’un membre de l’équipe se retrouve sans tâche associée au hackathon (souvent le cas avec la partie DevOps).

Cette année, la répartition était effectuée ainsi :

  • L’équipe design (Lucie et Antoine) : Réalisation des maquettes avec pour objectif de tout sortir avant mercredi midi (pour ne pas trop retarder l’équipe de développement)
  • L’équipe de développement (Audrey, Viviane et Matthieu) : Implémentation des maquettes avec un focus sur la création du squelette de la fonctionnalité en début de hackathon (on cherche à gagner un maximum de temps)
  • L’équipe Infra / DevOps (Pierre, Thibaut) : Mettre en production une fonctionnalité de recommandation produit développé par notre ancien alternant en data science (Guillaume, si tu nous lis, salut mon pote)
  • L’équipe Data (Johann, Emilien, Thibaut) : Préparer toutes les requêtes servant à la fonctionnalité (pré-processing, live-processing, etc.)

Moteur… Action !

Parmi les 4 sujets sélectionnés, nous en avons retenu un : la création d’une page de découverte d’œuvres.

L’objectif est simple: vous proposer des films, séries, albums, jeux vidéo… correspondant à votre envie mais pas que ! SensCritique c’est aussi du bouche-à-oreille et une communauté. On souhaitait donc vous permettre d’avoir plusieurs types de recommandation :

  • Envie: Des oeuvres qui sont dans vos envies
  • Populaire : Des oeuvres qui sont très populaires sur SensCritique
  • Fraîche : Des oeuvres récentes
  • Recommandée : Des œuvres qui correspondent à votre consommation (vos notes, vus, etc.)

Jusqu’ici, tout va bien …

Recommander des œuvres aléatoires parmi ces différents types est chose aisée mais ne serait-il pas vachement plus fun d’ajouter en plus le type de film que l’on recherche ? Par exemple : Donne-moi un film qui parle d’amour et qui est une grosse pépite ? ou un bon navet de Noël ?

C’est à ce moment-là que les choses se sont corsées, il nous fallait à la fois un algorithme de recommandation d’œuvre pour intégrer le contexte de chaque utilisateur (notes, vus, etc.) ET un outil pour trouver des produits par “mood” (amour, bagarre, animaux, enfants etc), ces moods étant parfois très proches des genres et parfois très éloignés (par exemple: EO a pour genre “Drame” et le personnage principal est un âne).

Recommandation personnalisée

L’année dernière, nous avons travaillé sur un algorithme de recommandation pour vous recommander les œuvres qui pourraient vous intéresser par rapport à ce que vous avez déjà vu ou lu. Après un petit coup de poussière sur le code et 2/3 mises en production infructueuses, nous avons finalement réussi à obtenir de très bons résultats.

Cet algorithme fonctionne en respectant deux approches :

Filtrage collaboratif : On met en relation toutes les œuvres appréciées par la communauté afin d’obtenir une liste d’œuvres similaires à celle que l’on consulte. Par exemple, si les membres qui ont très bien noté Fight Club ont aussi très bien noté Pulp Fiction, alors on considère que ces deux œuvres peuvent vous intéresser.

Avantage : On recommande des oeuvres appréciées par la communauté.
Inconvénient : Si les membres qui ont apprécié Fight Club ont aussi fortement apprécié Les Simpsons, alors on considérera ces œuvres comme étant très proches afin de les recommander, pourtant, elles n’ont strictement rien en commun ! (à l’exception de leur popularité)

Filtrage par métadonnées : On associe des œuvres comme étant similaires parce qu’elles ont les mêmes métadonnées. Par exemple, les Simpsons est plus proche de Futurama ou de South Park que de Fight Club (genres, pays de sortie, casting, beaucoup de champs peuvent être utilisés).

Avantage : Les oeuvres sont en général très similaires.
Inconvénients : Il est parfois difficile d’associer des oeuvres entre elles quand on ne dispose pas d’assez d’informations (genre trop large, réalisateur avec beaucoup d’oeuvres, etc.).

Les moods

Comment attribuer un “mood” à une œuvre ?

  • On pourrait manuellement repasser sur toutes les œuvres : assez fastidieux et pas très maintenable.
  • Affecter dynamiquement des “moods” par rapport aux informations d’une oeuvre. (genre, synopsis, critiques etc) : Faisable mais impossible à faire en une semaine
  • Utiliser des services tiers pour récupérer plus d’informations sur un film, une série, etc. : Facilement intégrable mais peut rapidement être coûteux.

Et si on utilisait les TOPS ?

La plupart de nos tops concernent des tops d’années ou d’univers (Top 10 des meilleurs films, Top 100 des séries netflix etc) mais certains sont plus orientés comme Les films les plus tristes, les meilleurs films de Noël ou les films avec les meilleurs scènes de bagarres.

On a donc décidé d’utiliser les réponses à tous ces tops pour pouvoir filtrer les recommandations par “mood” (en choisissant les tops qui nous intéressent). La principale force de cette méthode est de proposer des œuvres que VOUS avez mis dans vos Tops, plus il y a de Tops enrichis par la communauté, plus notre algorithme sera pertinent.

Et pour finir, cette nouvelle fonctionnalité vous permet de choisir si vous souhaitez qu’on vous recommande une pépite (note > 6) , une œuvre passable (note de 5 ou 6) ou un navet (note < 5) et d’inclure ou non vos œuvres déjà vus/lus.

Vous pouvez dès à présent retrouver cette nouvelle page sur https://www.senscritique.com/decouvrir !

Et vous, quelle est LA fonctionnalité que vous attendez sur SensCritique ? (le premier qui dit dark theme on l’enferme 24h devant Les Tuche 4 😭)

--

--