Skip to content
Jordan Hudgens

Processing and privacy

Privacy and the assistant

Ask Jordan sends your question and the relevant public evidence to the configured AI provider to prepare a response. Please do not include private or sensitive information.

When analytics is enabled, the site records categorized question topics and operational outcomes to understand what visitors ask. It does not intentionally store raw question text or chat transcripts in its analytics.

Abuse protection uses short-lived, pseudonymous rate-limit identifiers. Those identifiers are separate from question analytics, and the application does not send them to PostHog.

Which services receive data?

The assistant sends questions and retrieved public evidence through Vercel AI Gateway to Anthropic. OpenAI, also through AI Gateway, is an enabled fallback for a transient failure before an answer begins. The public evidence is an approved professional record, not private files or a web crawl.

Vercel AI Gateway and the selected model provider process requests under their account terms and retention policies. The application does not promise zero provider retention or absolute anonymity. Requests restrict routing to the selected provider and request no prompt training under AI Gateway’s provider agreements. OpenAI response storage is explicitly disabled when that provider is used.

Upstash for Redis stores only expiring, pseudonymous rate-limit keys and request counts, not questions, answers or chat transcripts.

Your conversation

The conversation is kept in this browser tab’s memory only. It is not saved in local storage, a database or a public URL. Clear conversation removes it from the page. Reloading or closing the tab also clears it. Prior assistant text is never accepted as evidence by the server. A bounded set of your recent questions can be sent to help interpret a follow-up.

The application does not intentionally log request bodies, question text, model completions or full provider errors. Operational errors are reduced to categories. Hosting and network providers may retain their own access logs under their account policies; those policies require review before a production release.

Optional question analytics

Question analytics is currently disabled. No PostHog project or region has been assumed, and there is no browser autocapture or session replay.

If enabled after review, analytics requires an explicit opt-in for this browser tab. Only an allowlisted topic label, result status, returned source IDs, provider identifier, coarse latency bucket and content revision are sent. Unmatched questions receive an unmatched_question label, not a generated summary. A random per-event ID does not persist across visits. Neither your IP address nor the rate-limit identifier is included; IP-based enrichment is disabled in the event payload.

Before collection is enabled, the operator must verify the actual project retention setting and disclosure. A configured retention value is not an automatic deletion mechanism. You can leave analytics off and still use the assistant.

Abuse protection and preferences

In production, rate limiting uses Redis and an HMAC of the trusted deployment-provided client address, rotated daily. Identity-linked keys expire within 24 hours. An HMAC is pseudonymous, not anonymous. The assistant fails closed if its rate-limit storage is unavailable; the public pages and email link remain available.

The theme control may store only the word light or dark in your browser. It is a display preference, not a tracking identifier. The React workshop makes no YouTube request until you choose to load the privacy-enhanced player; YouTube then applies its own processing policies.

Questions about privacy

Contact me@jordanhudgens.com. You can also use the public resume without using the assistant.