Privacy Policy
Transparent, zero-tracking commitments.
Last updated: July 19, 2026
1. Cookie Consent & AI Support
This site stores cookies and browser local storage data exclusively to support features you actively interact with. Specifically, I use local storage to:
- Persist the conversational context of your chat sessions with Mozzie (the AI assistant) as you transition between pages, ensuring you do not lose your conversation history.
- Save minor styling parameters and user preferences, such as system theme overrides or preloader skip states.
2. Privacy-Respecting Analytics
I believe in keeping your browsing footprint safe from third-party advertising networks. Instead of loading commercial trackers (such as Google Analytics or Meta Pixel), I host a minimal, privacy-centric analytics logging system on my self-hosted Turso database.
This system records basic page views, dynamic referrers, and user journeys using:
- Anonymized IP hashing: To protect your identity while tracking unique visits, your IP address is cryptographically hashed with a salt (SHA-256) on the server. The raw IP is never written to disk, making it impossible to reconstruct.
- Edge GeoIP details: Standard region mapping is resolved purely via Vercel Edge headers, mapping views to the country and city level only.
- Zero Third-Party SDKs: No external marketing pixels, behavioral profiling scripts, or cookies are loaded to build commercial profiles of your browsing history.
In the spirit of full transparency, this system also logs and derives the following aggregate, non-identifying signals during your visit:
- Search Engine & Auditing Crawlers: Domain verification tags (such as Google, Bing, SEMrush, Yandex, Pinterest, Naver, Daum, and Discord) and site auditing crawlers (including SEMrushBot, AhrefsBot, Googlebot, and Bingbot) function exclusively for domain validation, technical search auditing, and content indexing. They do not profile or collect personal visitor data.
- Session journey: The specific pages and paths you browse during a single visit, recorded so I can understand which content is useful.
- Approximate session duration: The time elapsed between your first and last page view within one visit, giving a rough sense of engagement — nothing more.
- Scroll depth & time on page: How far down each page you scrolled (as a percentage) and roughly how long you stayed, sent once when you leave that page. Used only to see which content actually gets read, never to build a profile of you individually.
- A persistent visitor identifier:Once you accept this policy, a random ID is generated and stored in your browser's local storage (not a cookie) so repeat visits can be recognized as one visitor and, most importantly, so you can have every row tied to it deleted in one request — see "Your Rights & Choice" below. It contains no personal information and is never sent anywhere else.
- Approximate local time-of-day:The hour bucket of your visit, estimated from your country's timezone offset (via edge GeoIP) and shifted into your region's local time. This is never your precise clock — only the general hour, shifted to your region.
- Referrer source: The referring website or platform that linked you here, categorized into a broad source (e.g. a search engine or social network). I never store the full raw URL or its query parameters.
3. Data Security
AI assistant conversations are processed securely. Temporary messages are stored locally on your device in your browser's sandbox. No transactional, contact, or conversational details are sold or packaged for analytics databases.
Known crawlers, bots, and automated monitoring requests are filtered out before anything is written to the database, and the logging endpoint is rate-limited — so what you see in any reported numbers reflects real visitors, not scripted traffic.
4. Your Rights & Choice
Accepting the policy enables both the anonymized page-view analytics described above and the AI assistant. If you decline the banner, neither runs — no page views are logged for your visit, and the AI-assisted chat panel stays disabled.
Either way you keep full access to the portfolio content, services details, and writings — declining only turns off analytics and the AI chat panel, nothing else.
You can change your mind at any time from the card below. Resetting your choice permanently deletes the analytics history and AI conversation tied to this browser from the database (see the Manage Cookie Consent card below for exactly what that removes).
Manage Cookie Consent & Your Data
You can grant consent directly below, or reset your choice — this also permanently deletes the analytics page views and AI chat conversation history tied to this browser from the database, then reloads the page and shows the banner prompt again.
This can only find and remove data tied to the identifiers stored in this browser, so it covers everything from this browser going forward. It can't reach anonymized rows logged before this feature existed or during a session where consent was never granted, since those were never linked to any visitor to begin with.