Why?
I like data and cannot lie
Summary
Objective: Find new cafes around Montreal to try out
Problem statement: Finding cafes randomly can be tedious, and blog sites often repeat known cafes.
Solution: Using Google Place API with a modern data stack to fetch and filter out cafes to an updating list of cafes based on Google Reviews and recent review activity to find trending places.
Tools Used
Google Sheet, App Script, BigQuery, Google Place API, ChatGPT/Gemini, Cloudflare
MVP
To validate that my idea would work, I started with what I know best: Google Sheets and Apps Script. I had to create a new API Key within my GCP with access to the Google Place API, plus a few geo functions as I needed to determine the latitude and longitude for my search.
API challenges
Google Place API has two important restrictions that made it hard to search for all cafes in the city.
- Limit of 60 results per API call
- Limit of 5 reviews per place
Initially, I focused API calls on individual neighborhoods using text search. Even then, some areas were too large. Switching to Forward Sortation Area (first 3 characters of postal codes) with custom radius helped stay under limits, producing ~650 cafes. Downtown dense areas required multiple smaller grids (250m radius) and deduplication downstream.
For reviews, since only 5 per place were accessible, I fetch daily snapshots to accumulate data over time. This helps track trending places by short-term review spikes.
Map Grid Coverage
To visualize the search grid coverage, I plotted existing data with lat/long and search radius.
Billing challenges
Accidentally exceeded the free tier twice while testing, requiring minor payments and a Google billing adjustment. Switching from Google Maps to Leaflet reduced billing risk while retaining visualization capabilities.
Data Flow
Below is the data architecture representation for the data sync pipelines:
Pourquoi ?
J'aime les données et je ne peux pas mentir
Résumé
Objectif : Trouver de nouveaux cafés à essayer autour de Montréal
Problématique : Trouver des cafés au hasard peut être factidieux, et les blogs répètent souvent les mêmes adresses connues.
Solution : Utiliser l'API Google Places avec une pile de données moderne pour récupérer et filtrer les cafés afin d'obtenir une liste mise à jour basée sur les avis Google et l'activité récente des avis pour trouver les endroits tendance.
Outils utilisés
Google Sheet, App Script, BigQuery, Google Place API, ChatGPT/Gemini, Cloudflare
MVP (Produit minimum viable)
Pour valider le fonctionnement de mon idée, j'ai commencé avec ce que je connais le mieux : Google Sheets et Apps Script. J'ai dû créer une nouvelle clé API dans mon GCP avec accès à l'API Google Places, ainsi que quelques fonctions géographiques car je devais déterminer la latitude et la longitude pour ma recherche.
Défis de l'API
L'API Google Places comporte deux restrictions importantes qui ont rendu difficile la recherche de tous les cafés de la ville.
- Limite de 60 résultats par appel API
- Limite de 5 avis par établissement
Initialement, j'ai ciblé les appels API sur des quartiers individuels à l'aide de la recherche textuelle. Même à ce moment-là, certaines zones étaient trop grandes. Passer à la RTA (région de tri d'acheminement - 3 premiers caractères des codes postaux) avec un rayon personnalisé a permis de rester sous les limites, produisant environ 650 cafés. Les zones denses du centre-ville ont nécessité plusieurs grilles plus petites (rayon de 250m) et une déduplication en aval.
Pour les avis, comme seulement 5 par lieu étaient accessibles, je récupère des instantanés quotidiens pour accumuler des données au fil du temps. Cela aide à suivre les endroits tendance grâce aux pics d'avis à court terme.
Couverture de la grille cartographique
Pour visualiser la couverture de la grille de recherche, j'ai tracé les données existantes avec la latitude/longitude et le rayon de recherche.
Défis de facturation
J'ai accidentellement dépassé la tranche gratuite à deux reprises lors des tests, ce qui a nécessité des paiements mineurs et un ajustement de facturation Google. Passer de Google Maps à Leaflet a réduit le risque de facturation tout en conservant les capacités de visualisation.
Flux de données
Ci-dessous se trouve la représentation de l'architecture des données pour les pipelines de synchronisation :