Legal
Privacy Policy
Last updated: March 2026
This site is a personal portfolio. There are no accounts, no subscriptions, and no server-side data storage. This policy explains the limited data that is collected and how it is handled.
What This Site Is
mathewjohnson.me is a professional portfolio site belonging to Mathew Johnson. It contains a CV, links to live projects, and a chat widget powered by the Anthropic Claude API. The chat widget allows visitors to ask questions about Mathew's professional background.
What We Collect
Chat conversations. Conversations with the chat widget are stored entirely in your browser's localStorage. They are never sent to or stored on any server operated by this site. You can clear your conversation at any time using the "Start new conversation" button. Clearing your browser data or localStorage will also remove them.
Your messages to the AI. When you send a message in the chat widget, that message is sent to the Anthropic Claude API to generate a response. This is necessary for the widget to function. For information on how Anthropic handles API data, refer to Anthropic's privacy policy.
IP-based rate limiting. To prevent abuse, the chat widget applies a usage limit of 20 messages per 24-hour window per IP address. Your IP address is used only to enforce this limit. It is not logged, stored, or associated with any other data.
Analytics. This site may use Umami, a privacy-focused analytics platform that does not use cookies and does not collect personally identifiable information. Analytics data is aggregated and cannot be tied to individual visitors.
What We Do Not Collect
We do not collect your name, email address, or any account information. We do not set tracking cookies. We do not sell, share, or monetize any data. We do not use your chat messages to train AI models.
Third-Party Services
Anthropic (Claude API) — The chat widget is powered by Anthropic's Claude API. Messages you send are processed by Anthropic to generate responses. Refer to Anthropic's privacy policy for details on their data handling.
Railway — The backend that handles API calls runs on Railway's infrastructure. Railway processes requests but does not store your conversation data.
Data Security
All communication between your browser and the backend is encrypted in transit using TLS. Conversation data stored in localStorage is local to your device and is not accessible to us.
Children
This site is not intended for use by anyone under the age of 18.
Changes to This Policy
If this policy changes materially, the "last updated" date above will reflect the change.
Contact
Questions about this privacy policy can be directed to hello@emptyjay.net.