Kamo.social

Rencontrez des personnes avec les mêmes centres d'intérêts

a marqué ce sujet comme résolu.

Hello !

J’ai fait un point de ce qui reste à faire pour Kamo.social avant que le service ne fonctionne comme je me l’imagine et j’ai préparé une feuille de route des premières choses à faire avant d’avoir un "MVP".

Les grandes tâches

Améliorer la qualité des données de centres d’intérêts

Il faut faire en sorte de favoriser le fait que les membres partagent les mêmes centres d’intérêts (pour être plus facilement "matché") plus tard.

  • Corriger les possibles fautes d’orthographe dans les centres d’intérêts
  • Corriger les doublons
  • Faire de l’auto-complétion lorsqu’un membre ajoute ses centres d’intérêts
  • Suggérer des centres d’intérêts similaires mais qui sont déjà utilisés par d’autres membres : pour réaliser ça je n’ai pas d’idées simples. Il faudrait faire un travail de sémantique, j’imagine qu’il existe des dictionnaires spécialisés. Ça doit être possible de trouver une solution avec les mots clés "intelligence artificielle" :D

Améliorer la qualité des données des lieux

Actuellement j’ai vu que beaucoup de personnes ont enregistré leur ville ou une rue, mais pas un lieu de rencontre comme un bar ou un café. Or il n’est pas possible de dire aux membres "Rencontrez-vous à 18h à Paris" car c’est un peu vague comme lieu de rencontre.

  • Suggérer directement sur la carte des bars et cafés que les membres pourront directement sélectionner
  • Ne plus permettre l’ajout d’adresses trop vagues (techniquement, je ne sais pas comment on peut détecter ça avec OpenStretMap)
  • Supprimer toutes les entrées de villes et autres lieux trop vagues (ou envoyer un email aux membres ayant ce genre de lieux pour qu’ils changent d’eux-même)

Mettre en place un système de rendez-vous

Il faudrait un système permettant aux membres de fixer un horaire de rencontre et d’indiquer leur présence ou leur absence de sorte à ce que le moment choisi permette au maximum de membres de se rencontrer.

Ce système devra pouvoir être contrôlé de manière programmatique, donc une API. Pour l’instant je n’ai pas trouvé de solution open source ou libre permettant de faire ça d’emblée.

Il faudrait soit faire évoluer Framadate, soit faire évoluer Dudle, soit développer un nouveau système. Selon ce qui correspond le mieux au besoin de Kamo.social et ce qui est le plus simple.

Dans tous les cas il s’agira d’un service séparé de Kamo.social pour des raisons de maintenance technique et de gestion de la charge des serveurs. (Micro-services tout-ça)

Permettre l’envoi d’emails en masse

Actuellement Kamo.social utilise la simple boite email Gandi fournie par le nom de domaine. Il peut y avoir des problèmes de réputation (on m’a remonté que l’email de confirmation d’inscription a pu être reçu dans le dossier Spam).

Et je crois que Gandi ne permet pas l’envoi de beaucoup d’emails, mais je ne connais pas la limite (j’ai envoyé une demande au support). Tant qu’il n’y a pas grand monde sur Kamo.social ça devrait aller mais ça risque vite d’augmenter.

Sachant que je ne souhaite pas faire de campagnes d’emailing et seulement envoyer des emails aux membres inscrits, je ne sais pas encore toutes les solutions possibles pour éviter de payer un prestataire (les prix montent assez vite).

Mettre en place un système de "matching" des personnes

Le cœur du projet c’est de permettre aux membres de se rencontrer à partir de leurs centres d’intérêts.

Il faut donc qu’il existe un système qui, pour chaque lieu de rencontre, délimite des groupes de personnes en fonction de leurs centres d’intérêts.

Et il faudrait calculer ses groupes chaque semaine (si on part sur la base de rencontres hebdomadaires).

Pour cette fonctionnalité, il faudrait déjà que la qualité des données des centres d’intérêts et des lieux de rencontre soit bonne.

Le MVP

Je pense que le chemin le plus court pour commencer à utiliser Kamo.social et tester le concept serait de ne pas prendre en compte les centres d’intérêts dans un premier temps (un peu paradoxal mais permet justement de mettre en avant les valeurs de Kamo.social qui sont "bienveillance et ouverture d’esprit").

Le plus important est les lieux car il faut un endroit pour se rencontrer.

Voici comment j’imagine le chemin vers le MVP :

  1. Améliorer la réputation des envois d’emails pour permettre plus d’inscriptions : si les nouveaux inscrits reçoivent l’email de confirmation dans les spams, ça ne va pas les aider à utiliser le service
  2. Améliorer la qualité des données pour les lieux : comme je l’ai écrit plus haut
  3. Permettre l’envoi d’emails via une interface : permettre à des administrateurs d’envoyer un email aux membres de chaque lieux.

Ce qui me permettra d’envoyer chaque semaine un email aux membres les invitant à se rencontrer à l’un des lieux qu’ils ont entrés. Je préparerais les Framadate manuellement pour chaque lieu. Il y a actuellement 17 lieux enregistrés, dont des lieux trop vagues, ça va piquer un peu mais ce n’est que pour le début :D

Avancement

J’ai donc prévu de suivre le plan décrit pour le MVP tout en faisant un travail de communication pour encourager aux visiteurs de s’inscrire. Car il faut un certain nombre de membres pour que le service fonctionne.

Est-ce que ça vous semble faisable ? Est-ce que vous avez une meilleure idée de MVP encore plus simple ? :)

+1 -0

Enfin un peu de nouveauté !

Depuis mon dernier message j’ai passé deux semaines à ajouter des POIs sur la carte afin que les utilisateurs puissent directement sélectionner les bars, cafés et pubs.

C’est maintenant chose faite !

Carte avec POI

Avancement

J’ai en effet pu ajouter des marqueurs via l’API Overpass sur la carte. J’ai pris du temps car je me suis confronté à plusieurs problèmes :

  • J’ai voulu intégrer les librairies de manière propre au projet Rails, donc j’ai d’abord dû apprendre comment utiliser Yarn avec Rails (et finalement, il semble que j’ai juste fait une faute d’étourderie)
  • Les données de l’API Overpass sont très hétérogènes. Certains points n’ont pas d’informations comme l’horaire d’ouverture, d’autres n’ont pas d’adresses et d’autres encore non même pas de nom :euh: . Pour résoudre le problème des adresses, j’ai dû ajouter une seconde requête de reverse-geocoding à Nominatim.
  • Si vous regardez la carte sur Kamo.social, il se peut, selon l’endroit que vous regardez, que vous soyez inondés de marqueurs. Et ça peut ralentir votre navigateur. J’ai donc souhaité mettre en place un clustering des marqueurs mais j’ai été incapable de lier les deux plugins Overpass Layer et Marker Cluster. Séparément ça marche, mais ensemble non. Donc pour l’instant j’ai fait sans.

La suite ?

Il s’agissait de la première étape pour améliorer les données des lieux entrés par les membres. En effet, vous pourrez constater que beaucoup ont simplement entré une ville sauf que ce n’est n’est pas pratique pour se donner un lieu de rendez-vous.

La seconde étape serait de supprimer les villes et empêcher de pouvoir enregistrer une ville. Sauf qu’avec les données OpenStreetMap et d’après mes recherches, il semble que ça ne soit pas toujours spécifié si le lieu entré est une ville.

Donc je pense laisser comme ça pour l’instant et plus tard je nettoierais manuellement les villes.

À propos d’OpenStreetMap, je me rends compte qu’il s’agit d’un projet vraiment difficile à utiliser. Entre les outils peu accessibles et les données hétérogènes, je prends beaucoup de temps à développer. Peut-être que parmi vous il existe des spécialistes qui savent mieux utiliser OpenStreetMap. Dans tous les cas, je pense plus tard encourager les utilisateurs de Kamo.social à contribuer à OpenStreetMap et aider à améliorer la qualité des données. Ça fera d’une pierre deux coups. :)

Utiliser Google Maps serait plus simple mais je n’aime pas trop l’idée :D

En fonction de vos retours, si vous avez des conseils pour OpenStreetMap, soit je continue à améliorer les données des lieux, soit je regarde comment améliorer la réputation des emails.

+0 -0

Je n’avais pas pensé à enregistrer une ville pour définir tous ses POI. Mais je pense que ça va rendre les choses plus compliquées. Dans une ville il peut y avoir plusieurs centaines de POIs, si une grande part des utilisateurs enregistrent une ville, alors chaque semaine ils vont recevoir une invitation pour se rencontrer dans une centaine de lieux différents dans la même ville.

À cela s’ajoute que ça complexifie le matching. Pour savoir si les utilisateurs partagent le même lieu, il suffit de comparer le osm_id et ça suffit. Mais si on prend en compte la ville, il faudrait à chaque fois faire un calcul si tel POI est compris dans le périmètre de tel ville. Je sens les problèmes techniques :/

+0 -0

Avancement

J’ai changé la police de titre qui était utilisée sur la page d’accueil car j’ai reçu plusieurs remarques qu’elle n’était pas bien finie.

Avant : Image utilisateur

Après : Image utilisateur

La charte graphique de Kamo.social va encore changer et la police aussi. Donc j’ai juste changé pour une police moins pire en attendant. :)

+0 -0

Je n’avais pas pensé à enregistrer une ville pour définir tous ses POI. Mais je pense que ça va rendre les choses plus compliquées. Dans une ville il peut y avoir plusieurs centaines de POIs, si une grande part des utilisateurs enregistrent une ville, alors chaque semaine ils vont recevoir une invitation pour se rencontrer dans une centaine de lieux différents dans la même ville.

À cela s’ajoute que ça complexifie le matching. Pour savoir si les utilisateurs partagent le même lieu, il suffit de comparer le osm_id et ça suffit. Mais si on prend en compte la ville, il faudrait à chaque fois faire un calcul si tel POI est compris dans le périmètre de tel ville. Je sens les problèmes techniques :/

KillianKemps

Tu fais ça qu’une fois : l’utilisateur rentre la ville et tu convertis directement dans la BDD en POI. Perso je ne connais pas les POI de ma ville, je pratique jamais les bars.

+0 -0

Oui c’est vrai que si tu convertis au moment de l’enregistrement ça éloigne le problème technique. Mais tu imagines que ça convertit en :

  1. Tous les POIs (cafés, pubs, bars) que Kamo.social détecte dans ta ville ou
  2. Tous les POIs déjà enregistrés par d’autres utilisateurs que Kamo.social détecte dans ta ville ?

Si tu penses au premier point, j’imagine que ça va t’inonder d’invitations pour des centaines de lieux et qu’on ne pourra pas utiliser Kamo.social très facilement. Si c’est le second point, alors oui a priori ça m’a l’air faisable.

Dans tous les cas, il faut que je trouve une solution pour détecter les villes et les convertir en leurs POIs correspondants. Peut-être que je dois regarder dans les boundaries et ajouter cette nouvelle information dans la BDD.

+0 -0

J’ai essayé de trouver l’info mais j’ai pas trouvé ! Pourquoi tu passes par Overpass pour les POI et pas simplement par Nominatim ? Nominatim permet de savoir qu’il s’agit d’une ville (mais pas en reverse :( ). Enfin après, Overpass doit le faire aussi…

Sinon tu peux passer aussi par d’autres bases de données en libre accès comme http://www.geonames.org/ ou https://www.maxmind.com/en/free-world-cities-database (j’ai pas regardé la licence pour celle-là ). Mais bon, c’est pas top…

La première solution risque en effet risque d’agacer rapidement l’utilisateur ! Ta deuxième solution est bien mais le jour où ton système sera utilisé par beaucoup de personnes… Sinon tu peux toujours vérifier si le nombre de POIs dans la ville n’est pas trop élevé. S’il est faible tu fais la deuxième solution et s’il est élévé tu interdis la ville.

J’ai essayé de trouver l’info mais j’ai pas trouvé ! Pourquoi tu passes par Overpass pour les POI et pas simplement par Nominatim ? Nominatim permet de savoir qu’il s’agit d’une ville (mais pas en reverse :( ). Enfin après, Overpass doit le faire aussi…

Quand j’ai fait mes recherches, je suis tombé sur cette réponse sur le forum OpenStreetMap donc j’avais compris qu’il valait mieux utiliser OverPass API.

Et ensuite quand j’ai regardé les plugins Leaflet j’ai vu qu’il y avait déjà un plugin pour Overpass donc je n’ai pas cherché beaucoup plus loin.

Tu penses que j’aurais plus faire plus simplement ?

Comment tu fais pour détecter si c’est une ville à partir du osm_id avec Nominatim ? Même pour Paris je ne vois pas clairement indiqué que c’est une ville.

Sinon tu peux passer aussi par d’autres bases de données en libre accès comme http://www.geonames.org/ ou https://www.maxmind.com/en/free-world-cities-database (j’ai pas regardé la licence pour celle-là ). Mais bon, c’est pas top…

Je ne connaissais pas Geonames et j’ai oublié Maxmind mais je crois que ce sont des services de geocoding seulement. Comment pensais-tu que je pourrais les utiliser pour afficher les POIs ?

La première solution risque en effet risque d’agacer rapidement l’utilisateur ! Ta deuxième solution est bien mais le jour où ton système sera utilisé par beaucoup de personnes… Sinon tu peux toujours vérifier si le nombre de POIs dans la ville n’est pas trop élevé. S’il est faible tu fais la deuxième solution et s’il est élévé tu interdis la ville.

<?php?>

Oui il faudrait trouver une astuce et adapter au contexte. Je pourrais faire une règle arbitraire qu’au maximum la ville soit convertie en 10 POIs et c’est tout.

Pour géocoder aussi http://adresse.data.gouv.fr/

qwerty

Merci, je me rappelle aussi qu’Etalab avait communiqué que l’on pouvait héberger nous même le logiciel open source derrière, je dois avoir ça quelque part dans mes marque-pages. Je considérerais ça le jour où Kamo.social commencera à envoyer beaucoup de requêtes.

+0 -0

Avancement

Kamo.social utilise maintenant Mailjet pour envoyer des emails !

Ça devrait permettre d’augmenter la réputation des envois d’email et éviter que les emails d’inscription ne soient reçus en spam.

Aussi, ça sera utile pour plus tard lorsqu’il y aura plus utilisateurs et avoir les moyens d’envoyer beaucoup d’emails. Même si ça n’est pas pour tout de suite.

J’ai choisi Mailjet car il s’agit d’un fournisseur français et il est conforme au RGPD. Donc les données personnelles de chacun sont censées être en sécurité.

La politique de confidentialité de Kamo.social a été modifiée en conséquence pour préciser que Mailjet est maintenant le fournisseur d’emails. Je n’ai cependant pas envoyé d’email aux utilisateurs déjà inscrits pour notifier de la modification car je ne peux techniquement pas encore le faire.

+2 -0

J’imagine que tu as pris la version gratuite de l’API ?

En lisant la doc de Mailjet je suis tombé sur : "If you do exceed your 200 emails quota during one day, your emails will be queued and sent the next day. Note that our system only queues emails for 5 days, after which they are removed from the system permanently. Please be mindful of this limitation and adjust your mailings accordingly." Ce qui est quand même assez embêtant le jour où le quota est dépassé ! (bon t’es pas encore à 200 inscriptions par jour mais ça pourrait arriver bientôt :p )

Tu devrais récupérer le nombre de mails envoyés dans la journée (https://dev.mailjet.com/email-api/v3/messagestatistics/#tab-List-editor-curl) et si le quota est dépassé alors switcher sur un SMTP gratuit. Certes il y aura plus de chances d’arriver dans les SPAMS mais au moins ils arriveront à l’heure !

Oui j’ai pris la version gratuite de Mailjet, pour l’instant on est assez tranquille pour le quota :D .

Quand j’ai fait mes recherches, j’ai vu que Mailjet avait l’offre gratuite la plus limitée. J’ai comparé avec Mailgun, Sendinblue (qui est aussi français je crois mais communique peu sur la RGPD), Sparkpost, Mailchimp et je crois qu’ils avaient tous une offre gratuite plus alléchante. Mais Mailjet était le seul français à appuyer à propos de la RGPD, donc je l’ai choisi.

Je comprends que pour les premiers utilisateurs de Kamo.social il est important de faire attention aux données personnelles, donc c’est mon premier critère ^^.

Je pense que techniquement je pourrais alterner entre les offres gratuites des fournisseurs d’email. Donc je pourrais implémenter un système pour basculer sur SendinBlue, par exemple car il est censé être conforme au RGPD, dès que le quota est dépassé sur Mailjet.

Le plus important c’est que le mail de confirmation d’inscription soit bien reçu, car sinon ça bloque tout de suite la première utilisation.

J’estime dans un premier temps que Kamo.social va envoyer un email à l’inscription puis trois emails par semaine pour chaque utilisateur. Le premier email de la semaine sera celui du Framadate pour indiquer si on vient, puis un second quelques heures avant l’heure H comme et enfin un troisième pour demander si ça s’est bien passé.

Donc avec la limite de 200 emails par jour, le système sera limité à 200 utilisateurs à peu près. Mais je pourrais encore faire des optimisations. Comme envoyer les Framadate entre deux jours (on augmente à 400 emails !).

Bref, pour l’instant ça va aller, et on s’en occupera quand Kamo.social commencera à être bien en activité :) .

+0 -0

En théorie les entreprises comme Sparkpost (états-uniennes) sont déjà conformes avec le RGPD via le Privacy Shield (qui permet d’avoir une équivalence entre les États-Unis et l’Europe sur la protection des données personnelles). Mais je préfère éviter de choisir une entreprise non-européenne.

Je ne suis pas juriste mais je dirais que Kamo.social est déjà conforme au RGPD car tout est transparent dans la politique de confidentialité quant au traitement des données des utilisateurs. Les utilisateurs peuvent aussi supprimer entièrement leur compte avec le clic d’un bouton.

Je pourrais encore améliorer les choses en permettant d’exporter automatiquement les données de son compte (pour la portabilité des données). Ça ne doit pas être très compliqué à faire car il n’y a pas beaucoup de données à agréger mais ça prend un peu de temps et je m’en occuperai une fois que le service sera opérationnel. Pour être conforme, il n’est pas obligé que l’export des données soit automatique, il faut juste être capable de fournir les données lorsque demandé par un utilisateur. Donc même si l’export automatique n’est pas prêt pour le 25 mai, Kamo.social reste conforme.

+1 -0

Avancement

Je travaille toujours sur la gestion des villes dans Kamo.social. Il y a plusieurs questions à se poser et j’ai pour l’instant du mal à me décider.

La problématique est que certains utilisateurs ont enregistré des villes, hors ce sont des lieux qui ne sont pas assez précis pour permettre d’être utilisés comme lieux de rendez-vous.

La solution la plus simple serait de bloquer l’enregistrement de villes. Ça ne veut pas dire que les utilisateurs vont entrer d’autres lieux mais je peux déjà faire ça comme solution temporaire pour éviter que la base de données ne se remplisse de lieux non-qualifiés.

Ce que @qwerty proposait était de convertir les villes en POIs au moment de leur enregistrement. Il y a plusieurs cas à savoir gérer :

  1. Si d’autres utilisateurs ont déjà enregistré des POIs dans cette ville, on peut les récupérer. Mais à quel nombre de POIs nous limitons-nous ? Il faut aussi regarder l’aspect technique. J’ai l’impression qu’il faut installer et utiliser PostGIS pour PostgreSQL afin de pouvoir faire des recherches parmi les POIs déjà en base de données.
  2. Si personne n’a encore enregistré de POIs dans cette ville, quels POIs récupérerons-nous ? Les bars, cafés ou les pubs ? Et à nouveau, à combien de POIs nous limitons-nous ?
  3. S’il n’y a qu’un seul POI déjà enregistré par un autre utilisateur, complétons-nous la liste par des nouveaux ?

Plusieurs problématiques se posent aussi.

Vaut-il mieux avoir beaucoup de POIs mais juste une ou deux personnes qui s’y rencontrent ou vaut-il mieux limiter un nombre de POIs par ville pour permettre des rencontres avec un plus grand nombre ?

Se pose aussi la question de la qualité des POIs. Pour l’instant, les POIs viennent de données OpenStreetMap, mais est-ce que l’environnement est agréable et propice à la discussion ? Est-ce que tous les utilisateurs de Kamo.social vont-ils s’y sentir à l’aise ?

Parmi les retours que j’ai eu des utilisateurs, on dirait que beaucoup ne connaissent pas forcément bien les lieux de rencontre près de chez eux et c’est pour ça qu’ils ont simplement mis un lieu vague comme leur ville ou leur quartier.

Est-ce qu’il ne faudrait-il pas mieux construire une liste de lieux de qualité et connus, où tout le monde se sentirait à l’aise, et qui serait mis en avant lorsque l’utilisateur rentre le nom de sa ville ?

L’utilisation d’OpenStreetMap est vraiment difficile pour permettre d’avoir de bonnes données. Peut-être que l’on pourrait compléter les données avec celles de FourSquare, Yelp, LaFourchette, TripAdvisor, etc. pour lesquelles les données sont bien plus qualifiées et rassurantes pour l’utilisateur.

Bref, tout plein de questions et je veux bien vos avis :D

+0 -0

Est-ce qu’il ne faudrait-il pas mieux construire une liste de lieux de qualité et connus, où tout le monde se sentirait à l’aise, et qui serait mis en avant lorsque l’utilisateur rentre le nom de sa ville ?

Bonne idée. Tu peux commencer par faire une liste d’un ou deux lieux par ville, et rajouter ceux que les utilisateurs mettent d’eux-même.

+1 -0

Avancement

Je suis en train de réfléchir si je ne dois pas utiliser les APIs de sources tierces comme Foursquare, TripAdvisor ou Yelp. Il faudrait que j’investigue sur les conditions d’utilisation.

Ça serait bien d’avoir une source de données de qualité, c’est-à-dire au moins avec des noms et adresses bien renseignés, et ouverte. Les services commerciaux proposent une certaine qualité avec des photographies, des notations et des commentaires en plus. Ce qui pourrait être bien pratique pour les utilisateurs de Kamo.social qui ne connaissent pas les lieux près de chez eux.

Donc, si je ne trouve pas de source de données ouverte de qualité, et bien… il faudrait faire en sorte de commencer à l’alimenter avec Kamo.social. Ça va être encore du travail en plus et j’ai peur que ça fasse trop pour le projet.

Je me demande comment d’autres projets avec des problématiques similaires ont pu gérer ce souci.

En attendant, je peux regarder sur les sites tiers quelques lieux intéressants dans les grandes villes et je les enregistre manuellement sur Kamo.social à partir des données OpenStreetmap. C’est un compromis :/ .

+1 -0

En attendant, je peux regarder sur les sites tiers quelques lieux intéressants dans les grandes villes et je les enregistre manuellement sur Kamo.social à partir des données OpenStreetmap. C’est un compromis

Il y a un tag POI dans openstreetmap, faut l’utiliser ;-)

+0 -0

En attendant, je peux regarder sur les sites tiers quelques lieux intéressants dans les grandes villes et je les enregistre manuellement sur Kamo.social à partir des données OpenStreetmap. C’est un compromis

Il y a un tag POI dans openstreetmap, faut l’utiliser ;-)

qwerty

Tu veux dire pour afficher les POIs sur la carte ? Actuellement les bars, cafés et pubs sont déjà affichés sur la carte via Overpass.

Je disais que je pourrais regarder sur des sites tiers car ça permettrait d’avoir plus d’informations sur les lieux. Comme les horaires d’ouverture, l’adresse exacte, le site web, des photos ou la notation des utilisateurs.

Là pour l’instant je ne fais qu’afficher le nom (qui n’est pas forcément formaté proprement) et une adresse souvent approximative. Ce n’est pas forcément très attractif pour les utilisateurs qui cherchent un lieu de rencontre. :/

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte