Privacy Policy
Plain language, and no promise the code does not keep. Where this page describes a data flow, it names the file that implements it, so anyone can check.
Last updated
In short
- There are no accounts anywhere on PaddySpeaks, no advertising and no third-party trackers.
- Most pages send first-party analytics to this site's own server. It uses no cookies and stores no IP address. It keeps a random visitor ID in your browser, and it switches off completely if your browser sends Global Privacy Control.
- Your saved jobs, question sets, study progress and similar data live only in your browser. You can see and clear them below.
- Personal data reaches this site's server only when you send it: a contact message, a testimonial, a leaderboard score, or an optional Privacy Console scan.
PaddySpeaks is run by Paddy Iyer. To reach the person responsible for this policy, use the contact page.
Site analytics
Most pages load /lib/ps.js and a one-pixel image from ps.paddyspeaks.com, a Cloudflare Worker run by this site. Source: lib/ps.js, analytics/worker/worker.js.
| Sent by your browser | Added by the server from the connection | Never collected |
|---|---|---|
| Page address and title; the referring page; screen and window size; language; light/dark preference; page-load time; how far you scrolled and how long the tab was active; clicks on outbound, "related" and call-to-action links (the destination, not what you typed); campaign tags in the URL; a search keyword if a search engine put one in the referring address; a random visitor ID and session ID. | Country, region, city and time zone, as Cloudflare estimates them; your network operator's name; browser, operating system and device type, parsed from the user-agent. | Your IP address (Cloudflare processes it in transit, and the code never stores it). Cookies. Anything you type into forms or search boxes. Cross-site tracking. |
Pseudonymous, not anonymous. The random visitor ID stays in your browser (_ps_vid) so return visits can be counted. Together with screen size and approximate location, that is a pseudonymous identifier. It is not linked to your name and is never sold or shared. Clearing this site's storage resets it.
Opting out. If your browser sends Global Privacy Control, ps.js does nothing. The server also discards the pixel and any collector request that carries the Sec-GPC: 1 header. The browser setting called "Do Not Track" is not honoured: it is deprecated and switched on by default in some browsers. GPC is the signal we respect.
The Privacy Console page does not load the analytics script or the pixel.
What stays in your browser
These features keep their data in your browser's local storage. It is not sent to any server, and it disappears if you clear this site's data.
| Product | What is kept |
|---|---|
| JobSignal | Saved jobs, application stages, hidden roles, and alerts you set up |
| Interview Studio | Picked question sets, filters, code you typed in the playgrounds, Skill Check history and favourites, flashcards, study plan, and your own Anthropic API key if you use the AI mock interview |
| Sacred texts | Reading position on some texts (for example Narayaneeyam) |
| Privacy Console | Your identity profile, scored results and removal tracker |
| CareerOS prototype | Your intent, saved items and layout |
| Continue module | The last few pages you opened on this site, so the homepage can offer "continue where you left off" |
Contact form
Your name, email address, reason and message are sent to this site's Worker. The Worker emails them to Paddy through Resend, an email delivery service, and sends you an acknowledgement. The message itself is not stored in any database. For spam control the Worker keeps the reason you chose, a salted one-way hash of your IP address, and a hash of the message content. Source: analytics/worker/contact.js.
Testimonials
A testimonial is stored in the site's database: your name, email address, role, organisation, relationship, the text, an optional link, your display preference, and a salted hash of your IP address. Resend emails you an acknowledgement. Nothing is published automatically. Every testimonial starts as pending, and only ones Paddy approves are shown, under the display preference you chose. Your email address is never displayed or returned by the public API. Source: analytics/worker/testimonials.js.
Interview Studio leaderboard
A score is submitted only with your explicit consent. The leaderboard stores a randomly generated alias, the category and difficulty, your score and time taken, and the day and week. It stores no name, IP address or browser details. You get a private deletion token so you can remove your own entry. The board stays hidden until at least five entries exist. Source: analytics/worker/leaderboard.js.
Question submissions
The "Share a question" form is a Google Form, so what you type is collected by Google under Google's privacy policy. Every few hours an automated job reads new responses and sends the question text to Anthropic's Claude to be formatted. Accepted questions are then published without a separate human review. Your name is not published with the question.
AI mock interview
If you use the AI mock interview, you paste your own Anthropic API key. It is kept in your browser's local storage (ps-mock-key). Your answers go directly from your browser to Anthropic, under Anthropic's terms, and never pass through this site's server. Remove the key from the page, or clear site data, to delete it. Source: interview.app/js/mock-client.js.
Privacy Console
Your identity profile stays in your browser. If you choose Scan for me, the search queries (containing your name and any address or phone number you entered) pass through this site's Worker to Brave Search or Google Programmable Search. If you choose Find the opt-out, a listing's web address passes through the Worker, which fetches that page. The Worker's code logs nothing and stores nothing. The full step-by-step flow is on the Privacy Console page.
Other services pages load
- Google Fonts: most pages load fonts from Google, which receives your IP address and browser details.
- jsDelivr and cdnjs: a few pages load a charting library or the in-browser Python runtime from these public CDNs.
- YouTube: some pages embed videos. YouTube's own policies apply once a video loads.
- Cloudflare runs the Worker and its databases, and processes requests to
ps.paddyspeaks.com. GitHub hosts the site's pages. - Links to employers' careers pages (JobSignal), articles and sources elsewhere take you to sites with their own policies.
How long data is kept
| Data | Kept |
|---|---|
| Leaderboard entries | 12 months, then deleted by a daily job |
| Leaderboard replay-protection records | 24 hours |
| Rate-limit counters | Until their time window ends, then deleted daily |
| Testimonials | Until you ask for removal, or Paddy removes them |
| Contact spam-control log (reason and hashes only) | No automatic expiry yet ⚖ |
| Site analytics | No automatic expiry yet ⚖. A retention period is an open decision, listed in the project backlog. |
| Anything in your browser | Until you clear it (see above) |
Access, correction and deletion ⚖
Ask through the contact page to see, correct or delete a testimonial or other data you sent. For a leaderboard entry, use your deletion token on the leaderboard page. Analytics records are keyed to a random ID rather than to you. If you send the visitor ID from your browser, the records carrying it can be found and deleted.