# evoludev — Groupe Evoludev - site: https://location.groupeevoludev.com (portail locatif maison, Laravel) - méthode: html plat — page d'accueil (60 immeubles) + pages projet des immeubles « Disponible » (cache BD, budget 45 ; 41 requêtes au premier sync, quasi 0 ensuite) - annonces: 125 unités disponibles, réparties sur 40 immeubles et 14 villes - couverture (sur 125 annonces): prix 99% (1 unité affichée « 0 $ »), adresse 100%, dispo 100%, type 100%, ville 100%, superficie 100%, GPS 100%, animaux 100%, images 100% (plan + façade), description 100% - fixture: ok (41 requêtes) · test: ok (2 verts) ## Champs extraits - Accueil : cartes projet `div.headerImage[onclick]` (dédupliquées par slug, versions mobile/desktop en double) → nom, adresse civique + ville (`BuildingItem__address`, 2 lignes), étiquette `availabilityTag` (Disponible / Complet / Livraison… / mois à venir), prix « à partir de ». - Pages projet — seulement les immeubles étiquetés « Disponible » (40/60) : - tableau desktop `.ApartmentTable tr` : « 101 | 4 1/2 » → no d'unité + unit_type ; colonnes prix (« 1415 $ / m » → price_label/parse_price), statut (Disponible/Louée), date (availability, texte source : « Dès maintenant », « septembre 2026 »…), chambres/salles de bain (details), superficie « 867 pi² » (area_sqft) ; - bouton « Plan » `data-target="#apartmentPlanModal_"` → **id d'appartement de la plateforme = external_id stable** (repli slug-numéro) + image du plan ; - JSON-LD `ApartmentComplex` : description de l'immeuble, lat/lng, petsAllowed (« Sous certaines conditions » → pets="conditions"), amenityFeature (commodités), photo de façade. - Seules les unités au statut « Disponible » sont retenues (Louée/Réservée sautées) ; immeubles Complet / à livrer ignorés (aucune unité offerte). - Prix placebo « 0 $ / m » ou « N.D. $ / m » → price_label vidé (aucun prix publié), jamais de valeur inventée. - Villes réelles (14) : Saint-Charles-Borromée, Saint-Paul, Berthierville, Crabtree, Saint-Sulpice, Sainte-Julienne, Saint-Félix-de-Valois, Saint-Jacques, Saint-Lin, Joliette, Sainte-Sophie, Rawdon, **Laval, Charlemagne** (chevauchement Grand Montréal — la source reste classée Lanaudière, son cœur de parc). ## Champs indisponibles à la source - Pas de page par unité (URL = page projet) ni de photos intérieures par unité (plan d'étage seulement). - Meublé : jamais indiqué. ## Fragilités - 40 pages projet au premier sync : le cache BD (clé = étiquette + prix + nom de la carte) évite de les revisiter tant que la carte ne change pas ; budget max_details=45 en garde-fou. - La description JSON-LD est celle de l'immeuble, partagée par toutes ses unités (pas de description par unité chez la source). - Le tableau desktop et le carrousel mobile dupliquent les unités : dédup par nom d'unité au parsing. - Étiquette carte incohérente possible (ex. immeuble « Livraison Juillet 2026 » avec unités « Dès maintenant ») : on suit l'étiquette de la carte, donc ces unités n'apparaissent qu'une fois l'immeuble « Disponible ». ## Échantillon - 135 : Le Mills I — Unité 13, Crabtree, 5½, 1625 $/mois, dès maintenant, 1274 pi², animaux sous conditions, plan + façade. - 438 : Le Gaspard I — Unité 14, Crabtree, 3½, 1270 $/mois, 774 pi². - 157 : Le Saint-Paul I — Unité 3, Saint-Paul, 3½, 1200 $/mois, septembre 2026, 785 pi².