spb/airiskindex Public
The most methodologically rigorous, fully transparent AI job-exposure index.
TypeScript 88%
Python 6.1%
SQL 2.7%
CSS 1.2%
JavaScript 0.9%
Shell 0.8%
1// File: page.tsx2// Path: apps/web/app/privacy/page.tsx3// Project: AI Risk Index — airiskindex.io4// Author: Simon-Pierre Boucher5// Contact: contact@spboucher.ai6// Copyright © 2026 Simon-Pierre Boucher. All rights reserved.7//8// Description: Privacy Policy.910export const metadata = {11 title: "Privacy Policy — AI Risk Index",12};1314function Section({ title, children }: { title: string; children: React.ReactNode }): JSX.Element {15 return (16 <section className="mt-8">17 <h2 className="text-xl font-semibold tracking-tight">{title}</h2>18 <div className="mt-3 space-y-3 leading-relaxed text-[var(--ink-2)]">{children}</div>19 </section>20 );21}2223export default function PrivacyPage(): JSX.Element {24 return (25 <main className="mx-auto max-w-3xl px-4 py-10 sm:px-6 sm:py-14">26 <h1 className="text-4xl font-bold tracking-tight">Privacy Policy</h1>27 <p className="mt-3 text-sm text-[var(--muted)]">Effective date: August 5, 2026</p>28 <p className="mt-4 leading-relaxed text-[var(--ink-2)]">29 This policy describes how the AI Risk Index (www.airiskindex.io), operated by{" "}30 <strong className="text-[var(--ink)]">Simon-Pierre Boucher</strong>, handles personal31 information. The short version: the site works without an account, we collect almost32 nothing, we track nobody, and we sell nothing.33 </p>3435 <Section title="1. What we collect">36 <ul className="list-inside list-disc space-y-2">37 <li>38 <strong className="text-[var(--ink)]">Server and access logs</strong> — IP address,39 user agent, requested URL and timestamp, kept for security, debugging and rate40 limiting, and routinely deleted within 30 days.41 </li>42 <li>43 <strong className="text-[var(--ink)]">API keys</strong> — if you request one, we store44 your contact email and a hashed key. We never store keys in plaintext.45 </li>46 <li>47 <strong className="text-[var(--ink)]">Email</strong> — if you write to us, we keep the48 correspondence for as long as needed to handle it.49 </li>50 </ul>51 <p>52 We do not use advertising trackers or third-party analytics, we set no cookies for53 browsing, and we do not profile visitors. Occupation pages you view are not linked to54 you.55 </p>56 </Section>5758 <Section title="2. What we don't do">59 <p>60 We do not sell, rent or share personal information with third parties for their own61 purposes. We do not use your data to train models. Occupation scores are computed from62 public occupational data — never from visitor data.63 </p>64 </Section>6566 <Section title="3. Infrastructure providers">67 <p>68 Traffic to the site transits through our tunnel/edge provider (ngrok) to our servers;69 their systems process connection metadata as any network carrier does. No visitor data70 is sent to AI model providers — model APIs are used only to rate public occupational71 task statements.72 </p>73 </Section>7475 <Section title="4. Your rights">76 <p>77 Under Québec's Act respecting the protection of personal information in the private78 sector (Law 25), the GDPR where it applies, and similar laws, you may request access to,79 correction of, or deletion of personal information we hold about you (in practice: log80 entries, an API key record, or email correspondence). Write to{" "}81 <a href="mailto:contact@spboucher.ai" className="underline">82 contact@spboucher.ai83 </a>{" "}84 and we will respond within 30 days.85 </p>86 </Section>8788 <Section title="5. Data location and security">89 <p>90 Data is processed on servers under our control (Canada) and protected by access91 controls, key hashing and encrypted transport (HTTPS). No system is perfectly secure; we92 keep the collected surface deliberately minimal so there is little to lose.93 </p>94 </Section>9596 <Section title="6. Changes">97 <p>98 Material changes to this policy are indicated by the effective date above. The person99 responsible for the protection of personal information is Simon-Pierre Boucher —{" "}100 <a href="mailto:contact@spboucher.ai" className="underline">101 contact@spboucher.ai102 </a>103 .104 </p>105 </Section>106 </main>107 );108}109