SPB Git

spb/groupe-ka Public

Groupe KA — site du holding + KA ID (compte unique & SSO des 7 plateformes). Next.js 16, SQLite, Google & Apple login.

TypeScript 93.9% CSS 6%

feat: page /loi-25 — protection des renseignements personnels

Politique Loi 25 complète: responsable désigné, nature d'agrégateur de
contenu public, tableau des 7 applications et données traitées, note sur
les estimations automatisées, droits, demande de retrait, incidents.
Lien dans le footer et depuis /confidentialite.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed 1 h ago (Aug 13, 2026) parent a966e8c

Showing 3 changed files with +529 and −0

modified src/app/confidentialite/page.tsx +4 −0
@@ -147,6 +147,10 @@ export default function Confidentialite() {
147 147 Voir aussi :{" "}
148 148 <a href="/conditions" className="underline underline-offset-4 hover:text-ink">
149 149 Conditions d&apos;utilisation
150 + </a>{" "}
151 + ·{" "}
152 + <a href="/loi-25" className="underline underline-offset-4 hover:text-ink">
153 + Protection des renseignements personnels (Loi 25)
150 154 </a>
151 155 </p>
152 156 </main>
modified src/app/layout.tsx +4 −0
@@ -262,6 +262,10 @@ export default function RootLayout({
262 262 <a href="/confidentialite" className="underline-offset-4 hover:text-lime hover:underline">
263 263 Politique de confidentialité
264 264 </a>{" "}
265 + ·{" "}
266 + <a href="/loi-25" className="underline-offset-4 hover:text-lime hover:underline">
267 + Protection des renseignements personnels (Loi 25)
268 + </a>{" "}
265 269 · groupe-ka.com
266 270 </p>
267 271 </div>
added src/app/loi-25/page.tsx +521 −0
@@ -0,0 +1,521 @@
1 +// Auteur : Simon-Pierre Boucher — contact@spboucher.ai
2 +import type { Metadata } from "next";
3 +
4 +export const metadata: Metadata = {
5 + title: "Protection des renseignements personnels (Loi 25) — Groupe KA",
6 + description:
7 + "Comment Groupe KA recueille, utilise, conserve et protège les renseignements personnels, conformément à la Loi 25 du Québec — agrégateur de contenu public, demandes d'accès, de rectification et de retrait.",
8 +};
9 +
10 +const MAILTO =
11 + "gk-mono font-bold underline underline-offset-4 hover:text-ink";
12 +
13 +const APPS_ROWS: [string, string, string, string, string][] = [
14 + [
15 + "Lou·Ka",
16 + "www.lou-ka.com",
17 + "Location résidentielle",
18 + "Annonces de logements provenant de 108 sources publiques, synchronisées à chaque heure",
19 + "Coordonnées de propriétaires ou de locateurs rendues publiques dans les annonces sources",
20 + ],
21 + [
22 + "Immo·Ka",
23 + "www.immo-ka.com",
24 + "Propriétés à vendre",
25 + "Annonces de 65 agences et sources publiques, avec détection du statut vendu/retiré",
26 + "Nom du courtier ou du vendeur figurant dans l'annonce source; adresse de la propriété",
27 + ],
28 + [
29 + "Vrai-Prix",
30 + "www.vrai-prix.com",
31 + "Estimation de valeur résidentielle",
32 + "Caractéristiques de propriétés et ventes comparables issues de données publiques",
33 + "Adresses de propriétés; aucune donnée sur les occupants",
34 + ],
35 + [
36 + "ValoPlex",
37 + "www.valoplex.com",
38 + "Estimation d'immeubles à revenus",
39 + "Caractéristiques de plex et ventes comparables issues de données publiques",
40 + "Adresses d'immeubles; aucune donnée sur les occupants ou locataires",
41 + ],
42 + [
43 + "Auto·Ka",
44 + "www.auto-ka.com",
45 + "Voitures usagées",
46 + "Inventaires de 125 concessionnaires et sources publiques, avec historique des prix",
47 + "Généralement aucun; le cas échéant, coordonnées d'un vendeur particulier rendues publiques dans l'annonce source",
48 + ],
49 + [
50 + "Fabri·Ka",
51 + "www.fabri-ka.com",
52 + "Produits québécois",
53 + "Catalogues de 1 204 boutiques en ligne, indexés par région",
54 + "Aucun renseignement personnel; données de produits et de commerces uniquement",
55 + ],
56 + [
57 + "Food·Ka",
58 + "www.food-ka.com",
59 + "Épicerie",
60 + "Prix, soldes et prix unitaires de 20 bannières",
61 + "Aucun renseignement personnel; données de produits uniquement",
62 + ],
63 +];
64 +
65 +function Card({
66 + num,
67 + title,
68 + children,
69 + index,
70 +}: {
71 + num: string;
72 + title: string;
73 + children: React.ReactNode;
74 + index: number;
75 +}) {
76 + return (
77 + <article
78 + className="gk-card rise p-5 sm:p-7"
79 + style={{ animationDelay: `${0.12 + index * 0.05}s` }}
80 + >
81 + <span className="gk-mono text-[12px] font-bold text-green">{num}</span>
82 + <h2 className="gk-display mt-2 text-[17px] font-bold uppercase">
83 + {title}
84 + </h2>
85 + <div className="mt-3 space-y-3 text-[14px] leading-relaxed text-ink-2">
86 + {children}
87 + </div>
88 + </article>
89 + );
90 +}
91 +
92 +function Bullet({ children }: { children: React.ReactNode }) {
93 + return (
94 + <li className="flex gap-3">
95 + <span
96 + aria-hidden="true"
97 + className="mt-[8px] h-[5px] w-[5px] flex-none rotate-45 border border-ink bg-lime"
98 + />
99 + <span>{children}</span>
100 + </li>
101 + );
102 +}
103 +
104 +export default function Loi25() {
105 + let n = 0;
106 + const num = () => String(++n).padStart(2, "0");
107 +
108 + return (
109 + <main className="mx-auto max-w-4xl px-4 pb-16 sm:px-6">
110 + <section className="pt-12 sm:pt-14">
111 + <p className="kicker rise">Vie privée · Loi 25</p>
112 + <h1 className="gk-display rise mt-4 text-[clamp(30px,5vw,52px)] leading-[1] font-bold tracking-[-0.035em] uppercase [animation-delay:0.08s]">
113 + Protection des <span className="hl">renseignements personnels</span>
114 + </h1>
115 + <p className="rise mt-5 max-w-2xl text-[15px] text-ink-2 [animation-delay:0.16s]">
116 + Comment nous recueillons, utilisons, conservons et protégeons les
117 + renseignements personnels, conformément à la Loi sur la protection
118 + des renseignements personnels dans le secteur privé du Québec, telle
119 + que modifiée par la Loi 25.
120 + </p>
121 + <p className="gk-mono rise mt-4 text-[11px] text-ink-3 [animation-delay:0.2s]">
122 + Dernière mise à jour : 13 août 2026
123 + </p>
124 + </section>
125 +
126 + <div className="mt-10 space-y-5">
127 + <Card num={num()} title="Notre engagement" index={0}>
128 + <p>
129 + Groupe KA accorde une grande importance à la protection de vos
130 + renseignements personnels. La présente page explique comment nous
131 + recueillons, utilisons, conservons et protégeons les
132 + renseignements personnels, conformément à la Loi sur la protection
133 + des renseignements personnels dans le secteur privé du Québec,
134 + telle que modifiée par la Loi 25.
135 + </p>
136 + </Card>
137 +
138 + <Card
139 + num={num()}
140 + title="Responsable de la protection des renseignements personnels"
141 + index={1}
142 + >
143 + <p>
144 + Conformément à la loi, la personne suivante est responsable de la
145 + protection des renseignements personnels chez Groupe KA :
146 + </p>
147 + <p>
148 + <strong className="text-ink">Simon-Pierre Boucher</strong>
149 + <br />
150 + Courriel :{" "}
151 + <a className={MAILTO} href="mailto:admin@groupe-ka.com">
152 + admin@groupe-ka.com
153 + </a>
154 + <br />
155 + Groupe KA, Québec (Canada)
156 + </p>
157 + <p>
158 + Toute question, demande d&apos;accès, de rectification ou de
159 + retrait, ou plainte concernant vos renseignements personnels peut
160 + lui être adressée.
161 + </p>
162 + </Card>
163 +
164 + <Card
165 + num={num()}
166 + title="Nature particulière de notre service : un agrégateur de contenu public"
167 + index={2}
168 + >
169 + <p>
170 + Groupe KA est un moteur d&apos;agrégation qui indexe
171 + automatiquement des annonces publiquement accessibles sur le web
172 + (annonces immobilières, véhicules, circulaires, etc.). Il est
173 + important de comprendre que :
174 + </p>
175 + <ul className="space-y-2">
176 + <Bullet>
177 + Les informations affichées dans les résultats proviennent de{" "}
178 + <strong className="text-ink">sites sources tiers</strong> et
179 + sont accessibles publiquement sur ces sites.
180 + </Bullet>
181 + <Bullet>
182 + Groupe KA affiche des extraits et des liens menant vers
183 + l&apos;annonce originale. Nous ne sommes ni l&apos;auteur ni le
184 + publicateur initial de ces annonces.
185 + </Bullet>
186 + <Bullet>
187 + Si des renseignements vous concernant apparaissent dans une
188 + annonce indexée (par exemple une annonce que vous avez publiée
189 + sur un autre site), la source principale de ces renseignements
190 + demeure le site où l&apos;annonce a été publiée. Vous pouvez
191 + néanmoins nous demander de{" "}
192 + <strong className="text-ink">
193 + retirer l&apos;annonce de notre index
194 + </strong>{" "}
195 + (voir la section « Demande de retrait » ci-dessous).
196 + </Bullet>
197 + </ul>
198 + </Card>
199 +
200 + <Card
201 + num={num()}
202 + title="Nos applications et les données qu'elles traitent"
203 + index={3}
204 + >
205 + <p>
206 + La présente politique s&apos;applique à l&apos;ensemble des
207 + applications du Groupe KA. Voici, pour chacune, la nature des
208 + données traitées et les particularités pertinentes au regard de la
209 + Loi 25 :
210 + </p>
211 + <div className="src-wrap !mt-4">
212 + <table className="src-table">
213 + <thead>
214 + <tr>
215 + <th>Application</th>
216 + <th>Domaine</th>
217 + <th>Données indexées</th>
218 + <th>Renseignements personnels possibles</th>
219 + </tr>
220 + </thead>
221 + <tbody>
222 + {APPS_ROWS.map(([nom, adresse, domaine, donnees, rp]) => (
223 + <tr key={nom}>
224 + <td className="whitespace-nowrap">
225 + <span className="gk-display font-bold">{nom}</span>
226 + <br />
227 + <a
228 + href={`https://${adresse}`}
229 + target="_blank"
230 + rel="noopener noreferrer"
231 + className="gk-mono text-[11px] underline decoration-[rgba(20,24,20,0.3)] underline-offset-4 hover:decoration-ink"
232 + >
233 + {adresse}
234 + </a>
235 + </td>
236 + <td>{domaine}</td>
237 + <td>{donnees}</td>
238 + <td>{rp}</td>
239 + </tr>
240 + ))}
241 + </tbody>
242 + </table>
243 + </div>
244 + <p>
245 + Dans tous les cas, les données indexées proviennent de sources
246 + publiquement accessibles, et les demandes d&apos;accès, de
247 + rectification ou de retrait décrites dans la présente politique
248 + s&apos;appliquent à chacune de ces applications. Une seule demande
249 + au responsable de la protection des renseignements personnels
250 + suffit, en précisant l&apos;application et le lien (URL)
251 + concernés.
252 + </p>
253 + </Card>
254 +
255 + <Card
256 + num={num()}
257 + title="Nos outils d'estimation automatisée (Vrai-Prix et ValoPlex)"
258 + index={4}
259 + >
260 + <p>
261 + Les estimations de valeur produites par Vrai-Prix et ValoPlex sont
262 + générées par des traitements entièrement automatisés (modèles
263 + statistiques fondés sur les caractéristiques des propriétés et les
264 + ventes comparables). Ces estimations :
265 + </p>
266 + <ul className="space-y-2">
267 + <Bullet>
268 + portent sur des <strong className="text-ink">immeubles</strong>,
269 + et non sur des personnes; elles ne constituent pas une décision à
270 + l&apos;égard d&apos;un individu;
271 + </Bullet>
272 + <Bullet>
273 + sont fournies{" "}
274 + <strong className="text-ink">à titre indicatif seulement</strong>{" "}
275 + et ne constituent ni une évaluation municipale, ni un rapport
276 + d&apos;évaluateur agréé, ni un avis professionnel;
277 + </Bullet>
278 + <Bullet>
279 + peuvent être contestées : si vous êtes propriétaire d&apos;un
280 + immeuble et estimez que les données utilisées à son sujet sont
281 + inexactes, vous pouvez demander leur{" "}
282 + <strong className="text-ink">
283 + rectification ou leur retrait
284 + </strong>{" "}
285 + auprès du responsable de la protection des renseignements
286 + personnels.
287 + </Bullet>
288 + </ul>
289 + </Card>
290 +
291 + <Card num={num()} title="Renseignements que nous recueillons" index={5}>
292 + <p className="gk-display text-[13px] font-bold uppercase text-ink">
293 + Auprès des visiteurs du site
294 + </p>
295 + <ul className="space-y-2">
296 + <Bullet>
297 + <strong className="text-ink">Données de navigation</strong> :
298 + les journaux techniques standards du serveur (adresse IP, page
299 + demandée, type de navigateur, horodatage). Nos sites
300 + n&apos;utilisent aucun traceur publicitaire ni outil de mesure
301 + d&apos;audience tiers.
302 + </Bullet>
303 + <Bullet>
304 + <strong className="text-ink">
305 + Renseignements fournis volontairement
306 + </strong>{" "}
307 + : si vous nous écrivez ou remplissez un formulaire (courriel,
308 + nom, contenu du message).
309 + </Bullet>
310 + <Bullet>
311 + <strong className="text-ink">Compte KA ID</strong> (facultatif) :
312 + si vous créez un compte, nous recueillons votre courriel, votre
313 + nom d&apos;affichage et les renseignements que vous choisissez
314 + d&apos;ajouter à votre profil. Le profil public est strictement
315 + opt-in.
316 + </Bullet>
317 + </ul>
318 + <p className="gk-display !mt-5 text-[13px] font-bold uppercase text-ink">
319 + Dans le contenu indexé
320 + </p>
321 + <p>
322 + Nos robots d&apos;indexation recueillent le contenu des annonces
323 + publiques, qui peut occasionnellement contenir des renseignements
324 + personnels rendus publics par leur auteur (p. ex. le nom d&apos;un
325 + vendeur). Nous limitons l&apos;affichage de ces renseignements au
326 + minimum nécessaire et privilégions le renvoi vers le site source.
327 + </p>
328 + </Card>
329 +
330 + <Card num={num()} title="Finalités d'utilisation" index={6}>
331 + <p>Nous utilisons les renseignements recueillis uniquement pour :</p>
332 + <ul className="space-y-2">
333 + <Bullet>
334 + Fournir le service de recherche et d&apos;agrégation
335 + d&apos;annonces;
336 + </Bullet>
337 + <Bullet>Mesurer et améliorer la performance du site;</Bullet>
338 + <Bullet>Répondre à vos demandes et communications;</Bullet>
339 + <Bullet>Respecter nos obligations légales.</Bullet>
340 + </ul>
341 + <p>
342 + <strong className="text-ink">
343 + Nous ne vendons pas vos renseignements personnels.
344 + </strong>
345 + </p>
346 + </Card>
347 +
348 + <Card num={num()} title="Témoins (cookies) et consentement" index={7}>
349 + <p>
350 + Nos sites n&apos;utilisent que des témoins strictement nécessaires
351 + au fonctionnement du service (p. ex. le témoin de session lorsque
352 + vous vous connectez à votre compte KA ID). Aucun témoin
353 + publicitaire, aucun témoin tiers, aucun outil de profilage
354 + n&apos;est utilisé — c&apos;est pourquoi aucun bandeau de
355 + consentement n&apos;est requis. Si cette pratique changeait, un
356 + mécanisme de consentement conforme serait mis en place au
357 + préalable.
358 + </p>
359 + </Card>
360 +
361 + <Card num={num()} title="Communication et hébergement" index={8}>
362 + <p>
363 + Vos renseignements peuvent être traités par nos fournisseurs de
364 + services techniques (hébergement, acheminement réseau), qui sont
365 + contractuellement tenus d&apos;en assurer la confidentialité. Les
366 + données des plateformes vivent sur une infrastructure privée
367 + située au Canada, maintenue par le Groupe KA, avec accès
368 + restreint. Lorsqu&apos;un fournisseur d&apos;acheminement peut
369 + impliquer un transit hors du Québec, une évaluation des facteurs
370 + relatifs à la vie privée est réalisée avant cette communication.
371 + </p>
372 + </Card>
373 +
374 + <Card num={num()} title="Conservation" index={9}>
375 + <p>
376 + Nous conservons les renseignements personnels uniquement le temps
377 + nécessaire aux finalités décrites ci-dessus, puis nous les
378 + détruisons ou les anonymisons de façon sécuritaire. Les journaux
379 + de navigation sont purgés sur un cycle court; la correspondance
380 + est conservée le temps du suivi de la demande; les données de
381 + compte sont conservées tant que le compte est actif, puis
382 + supprimées sur demande.
383 + </p>
384 + </Card>
385 +
386 + <Card num={num()} title="Vos droits" index={10}>
387 + <p>Conformément à la loi, vous pouvez :</p>
388 + <ul className="space-y-2">
389 + <Bullet>
390 + <strong className="text-ink">Accéder</strong> aux renseignements
391 + personnels que nous détenons à votre sujet;
392 + </Bullet>
393 + <Bullet>
394 + Demander la <strong className="text-ink">rectification</strong>{" "}
395 + de renseignements inexacts ou incomplets;
396 + </Bullet>
397 + <Bullet>
398 + <strong className="text-ink">Retirer votre consentement</strong>{" "}
399 + à l&apos;utilisation de vos renseignements, sous réserve des
400 + exigences légales;
401 + </Bullet>
402 + <Bullet>
403 + Demander la{" "}
404 + <strong className="text-ink">cessation de la diffusion</strong>{" "}
405 + ou la <strong className="text-ink">désindexation</strong> de
406 + renseignements vous concernant, dans les cas prévus par la loi;
407 + </Bullet>
408 + <Bullet>
409 + Porter plainte auprès de la{" "}
410 + <strong className="text-ink">
411 + Commission d&apos;accès à l&apos;information du Québec
412 + </strong>{" "}
413 + (
414 + <a
415 + href="https://www.cai.gouv.qc.ca"
416 + target="_blank"
417 + rel="noopener noreferrer"
418 + className="gk-mono underline underline-offset-4 hover:text-ink"
419 + >
420 + www.cai.gouv.qc.ca
421 + </a>
422 + ) si vous êtes insatisfait du traitement de votre demande.
423 + </Bullet>
424 + </ul>
425 + <p>
426 + Pour exercer ces droits, écrivez au responsable de la protection
427 + des renseignements personnels aux coordonnées indiquées ci-dessus.
428 + Nous répondrons dans un délai maximal de 30 jours.
429 + </p>
430 + </Card>
431 +
432 + <Card
433 + num={num()}
434 + title="Demande de retrait d'une annonce ou d'un contenu"
435 + index={11}
436 + >
437 + <p>
438 + Si une annonce indexée par Groupe KA contient des renseignements
439 + vous concernant et que vous souhaitez son retrait de nos
440 + résultats :
441 + </p>
442 + <ul className="space-y-2">
443 + <Bullet>
444 + Écrivez-nous à{" "}
445 + <a className={MAILTO} href="mailto:admin@groupe-ka.com">
446 + admin@groupe-ka.com
447 + </a>{" "}
448 + en indiquant le lien (URL) de la page concernée sur notre site;
449 + </Bullet>
450 + <Bullet>
451 + Nous traiterons votre demande dans un délai de 48 à 72 heures
452 + ouvrables;
453 + </Bullet>
454 + <Bullet>
455 + Notez que le retrait de notre index ne retire pas l&apos;annonce
456 + du site source. Pour un retrait complet, veuillez également
457 + contacter le site où l&apos;annonce a été publiée.
458 + </Bullet>
459 + </ul>
460 + <p>
461 + Ce mécanisme est aussi ouvert aux exploitants de sites sources et
462 + aux titulaires de droits qui souhaitent le retrait d&apos;un
463 + contenu.
464 + </p>
465 + </Card>
466 +
467 + <Card num={num()} title="Sécurité" index={12}>
468 + <p>
469 + Nous mettons en œuvre des mesures de sécurité raisonnables
470 + (chiffrement des communications, accès restreints,
471 + journalisation) pour protéger les renseignements que nous détenons
472 + contre l&apos;accès, l&apos;utilisation ou la communication non
473 + autorisés.
474 + </p>
475 + </Card>
476 +
477 + <Card num={num()} title="Incidents de confidentialité" index={13}>
478 + <p>
479 + En cas d&apos;incident de confidentialité présentant un risque de
480 + préjudice sérieux, nous aviserons la Commission d&apos;accès à
481 + l&apos;information ainsi que les personnes concernées,
482 + conformément à la loi, et nous consignerons l&apos;incident dans
483 + notre registre des incidents.
484 + </p>
485 + </Card>
486 +
487 + <Card num={num()} title="Modifications" index={14}>
488 + <p>
489 + Cette page peut être mise à jour pour refléter l&apos;évolution de
490 + nos pratiques ou de la loi. La date de dernière mise à jour figure
491 + en haut de la page.
492 + </p>
493 + </Card>
494 + </div>
495 +
496 + <p className="gk-mono mt-8 text-[11px] text-ink-3">
497 + Pour toute question :{" "}
498 + <a
499 + href="mailto:admin@groupe-ka.com"
500 + className="underline underline-offset-4 hover:text-ink"
501 + >
502 + admin@groupe-ka.com
503 + </a>{" "}
504 + · Voir aussi :{" "}
505 + <a
506 + href="/confidentialite"
507 + className="underline underline-offset-4 hover:text-ink"
508 + >
509 + Politique de confidentialité
510 + </a>{" "}
511 + ·{" "}
512 + <a
513 + href="/conditions"
514 + className="underline underline-offset-4 hover:text-ink"
515 + >
516 + Conditions d&apos;utilisation
517 + </a>
518 + </p>
519 + </main>
520 + );
521 +}
522