Privacy

Useful measurement without visitor profiles

This portfolio is designed to understand which pages and features are useful without building visitor profiles or storing chat content.

Aggregate traffic measurement

Cloudflare Web Analytics is the launch measurement service for page traffic and Core Web Vitals once I enable it for the production hostname. It is separate from the first-party custom-event system described below.

Future first-party custom events

A later analytics phase will add a first-party /api/eventsendpoint for normalized actions such as lens selection, case-study opening, résumé download, contact/profile clicks, and chat outcomes. That custom-event collection is not active in the current foundation.

When enabled, permitted fields will be limited to route, active professional focus, target or project ID, question category, outcome, public source IDs, a coarse latency bucket, AI model ID, and a random session ID that is hashed on the server. It will not collect names, email addresses, phone numbers, exact IP addresses, full user agents, fingerprints, or cross-site identifiers.

Chat content

The design does not store raw chat questions or answers in analytics. Conversation history will stay in browser session storage only for the active session and will not be written to a permanent portfolio transcript.

Retention after custom analytics launches

Once first-party custom events are enabled, raw anonymous-session events will expire after 30 days and daily aggregate counts will expire after 180 days.

Privacy controls

The future custom-event client will honor Global Privacy Control and Do Not Track by disabling collection. It will also provide a local opt-out that stores only the opt-out choice, never a persistent visitor identifier.

Custom event analytics is not active yet. This clearly marked hook will become the working local opt-out control in the analytics phase.