Privacy Policy
This site is a personal portfolio. It collects as little as possible, and never sells anything to anyone.
Last updated:
The short version
There are no advertising trackers, no analytics pixels and no third-party marketing scripts on this site. The only personal information stored is what you type into the contact or feedback form, plus an anonymous counter that measures how many people visit.
What is collected
Contact form
When you send a message, the following is stored: your name, email address, subject, message, and the time you sent it. This is used solely to read and reply to your message.
Feedback widget
The emoji feedback control stores a rating and, if you write one, an optional comment. It is not linked to your identity — no name, email or IP address is attached to it.
Visitor counter
A cookie named visitor_id is set, containing a randomly generated string. It exists only to tell repeat visits apart from new ones so the counter is not inflated by refreshes. It contains no personal information and is never shared. Alongside it, the first and most recent visit timestamps for that random id are stored.
Cookies used
visitor_id— anonymous visit counting. Expires after one year.auth-token— set only when the site owner signs in to the admin area. It is never set for ordinary visitors.
Both are httpOnly, meaning they cannot be read by JavaScript in the browser. No third-party cookies are set.
Server logs
Like any web server, requests may be logged by the hosting provider, which can include IP addresses. IP addresses are also held briefly in memory to enforce rate limits on the contact and feedback forms — this prevents spam and is discarded within minutes.
Third parties
Data passes through these services because the site depends on them:
- Neon — hosts the PostgreSQL database where the above data is stored.
- Cloudinary — hosts images and the résumé file. It receives a request whenever your browser loads one of those assets.
- Google Gemini — powers the chat assistant. If you use the chat, the message you type is sent to Google to generate a reply. Do not put anything confidential into the chat.
What is never done
- Your data is never sold, rented or traded.
- You will never be added to a mailing list without asking.
- No behavioural profile is built about you.
- No cross-site or advertising tracking is used.
How long data is kept
Contact messages are kept while they are still useful to reply to or reference, and deleted when they are not. Feedback is kept in aggregate. The visitor_id cookie expires after one year.
Your rights
You can ask for a copy of anything stored about you, ask for it to be corrected, or ask for it to be deleted — no justification needed. Email the address on the contact section and it will be handled promptly.
To remove the visitor_id cookie yourself, clear cookies for this site in your browser settings.
Changes
If this policy changes, the “last updated” date above will change with it.
Questions
Anything unclear? Ask via the support page or the contact form.