Privacy

What prodxp.com collects, where it goes, and how long it is kept. Short, because there is not much of it.

Updated 13 August 2026

The contact form

The form asks for a name, an organization, an email address, a reason for writing, and a message. All five reach me as email through Postmark, which handles delivery.

Nothing from the form is written to a database or a file by prodxp.com. The message becomes an email and is discarded. Postmark keeps its own copy in the sending log under its retention policy, and I can have a message deleted from it on request.

The address you give is used to reply to you and for the confirmation sent back at the time. It is not added to a mailing list, and there is no mailing list to add it to.

  • Sent to: my own inbox, with your address as the reply-to
  • Held by prodxp.com: nothing
  • Held by Postmark: the sent message, under their retention policy

The chat

The panel labeled “Ask about my background” answers questions from what is published on prodxp.com. Your question is sent to Anthropic’s API, which generates the answer and returns it. Anthropic processes it under their commercial terms and does not use it to train models.

Both sides of every exchange are recorded — your question and the answer, word for word — along with which sections of the site were used, how long it took, and whether the answer was that nothing on the site covered the question. That last one is the reason the log exists: a question the site cannot answer is a gap in the site, and reading a month of them is how the pages get better.

A random identifier is generated for your visit so the questions in one conversation stay together. It lives in your browser’s session storage, is not a name or an account, disappears when you close the tab, and is never joined to anything that would identify you. Your IP address is hashed with a secret and the date for rate limiting; the raw address is not written down, and the same visitor hashes to a different value tomorrow.

Please do not put anything confidential in it. The panel is a good way to find out what Mike has worked on and a poor place to describe something sensitive — the contact form reaches him directly and is not logged.

  • Kept: the question, the answer, the sections cited, the visit identifier, timing
  • Never kept: the raw IP address, anything linking one visit to another
  • Used for: improving the site and replying. Nothing else, and never sold or shared
  • Deleted after: 90 days, by a rule on the storage bucket

Human verification

The contact page runs Cloudflare Turnstile, which tells the form whether a submission came from a person rather than a script. It is the only third-party code on prodxp.com, and it loads on that one page.

Cloudflare receives your IP address and signals about your browser in order to make that judgment. That processing is theirs and is covered by their privacy policy. Turnstile is configured without pre-clearance, so it sets no cookie.

Hosting

The site runs on Google Cloud Run. Like any web server, it records requests — the IP address, the time, the page, and the browser string — in Google Cloud logging. Those records exist to keep the site running and to investigate abuse.

The contact form also counts recent submissions per IP address in memory, to stop a flood. That count lives in the running process, is never written down, and disappears when the process restarts.

Cookies and browser storage

prodxp.com sets no cookies. There is no analytics, no advertising, no tracking pixel, and no fingerprinting.

Three entries are kept in your browser’s session storage: the scroll position and page state, so the back button returns you where you were, and the chat’s visit identifier described above. They never leave your browser and are cleared when you close the tab.

Fonts are served from prodxp.com rather than from a font provider, so loading a page contacts no one else.

The résumé

The résumé PDFs are held in private storage. Opening one generates a link that works for a few minutes and then expires.

Each download is recorded: the time, which version, the page it was opened from, the browser string, and a hashed form of the IP address. The hash is keyed with a secret and the date, so the same visitor hashes to a different value the next day and nothing links a person across days. The raw address is never written down.

Asking to have the résumé emailed uses the address you give for that one message. The address is not stored, not added to a list, and each address can receive it once a day.

  • Kept: time, version, referring page, browser string, hashed address
  • Never kept: the raw IP address, or the address a résumé was emailed to
  • Deleted after: 90 days, by a rule on the storage bucket

How long anything is kept

Email sent through the form stays in my inbox for as long as the conversation is useful, and in Postmark’s sending log under their retention policy. Hosting logs follow Google Cloud’s default retention.

Download records and chat exchanges are deleted after 90 days by a lifecycle rule set on the bucket itself, so it happens whether or not anyone remembers.

Asking about any of this

Write through the contact form and say what you want — a copy of what was sent, a correction, or deletion. It reaches me directly and I answer it myself.