aievals.co is a static reference site. The privacy footprint is small by design: accounts are optional and free, there is no comment system, no marketing pixels, and no advertising network. This page documents exactly what is collected, where it goes, and how long it lives.
Analytics handling
The site uses Google Analytics 4 for aggregate traffic measurement, and only when the deploy build is configured with a measurement ID. Specifically:
- The GA4 snippet ships in the JavaScript bundle only when
VITE_GA_MEASUREMENT_ID is set at build time. When the variable is empty or unset, no GA tag is injected and no measurement traffic leaves the browser.
- The configuration enables IP anonymization so the last octet of each IP is dropped before storage at Google.
- No Google Ads features (remarketing, advertising reporting features, user-ID joining) are enabled.
- No persistent user IDs, logged-in identifiers, or cross-site identity signals are sent.
- The data that is collected: page path, referrer, browser language, viewport size, anonymized IP, and a session cookie scoped to the property.
If you want to opt out, the standard Google Analytics opt-out browser add-on works, and so do uBlock Origin, Brave Shields, or any tracker-blocking extension. Blocking GA4 has no effect on site functionality.
The form on the contact page is wired to a small AWS Lambda function behind API Gateway. The flow is:
- The form data is validated client-side with zod and submitted as JSON over HTTPS to the API Gateway endpoint.
- The Lambda function (running in
ap-south-1) validates the payload again on the server, drops anything that fails the intent enum or the honeypot check, and assembles an email body.
- The function calls Amazon SES to deliver the email to the maintainer inbox tied to the domain.
- The payload is not persisted to a database. There is no DynamoDB table, no S3 bucket, no Postgres. Once the email is sent, the Lambda execution context ends and the data is gone from the application layer.
Operational logs (start time, status code, duration, error messages) are written to AWS CloudWatch, which retains Lambda logs for 30 days. These logs do not contain the message body or the sender email by default; they record only request metadata. After 30 days the logs are deleted by the retention policy.
The email itself lives in the maintainer's inbox until it is deleted manually. Treat the contents the way you would treat any other email: it is private, but it is not encrypted at rest beyond whatever the inbox provider does.
PDF downloads
When you download a PDF from the downloads page, the request is logged. The record holds your account email, the document id, a per-download id, and a timestamp; the same email and download id are stamped into the file you receive. The point is license tracing: the content is CC BY 4.0, sharing with attribution is allowed, and the stamp plus the log is how a copy that shows up somewhere odd can be matched to a download. The log is not used for profiling, is not joined with analytics, and is not shared with anyone.
The download dialog also offers an optional checkbox for email about new guides and occasional offers. It is off by default and downloading works the same either way. If you check it, you will get infrequent mail from the maintainer, nothing automated or daily. To opt out later, reply to any of those emails or write to the contact address below; the address then stays in the download log for the tracing purpose above but leaves the mailing list. (The marketing checkbox on your account page is a separate, account-level preference; it does not control the per-download list.)
Account profile
Right after you create an account with an email code, the site asks once for a first name, a last name, and an optional phone number (accounts created through Google are never asked, since Google already provides a name). The step has a "Skip for now" link, skipping is remembered, and the account works exactly the same without any of it. The same wording that appears on this page appears under the fields themselves at the moment of collection:
- Names: "So the site can greet you properly and we know who we are talking to if you write in." That is the whole purpose; names are not used for anything else.
- Phone: "Optional. Only if you want occasional updates or a callback about team offers. Never shared, never required." The number is stored as a plain attribute, is never verified by SMS, and is never used for sign-in; signing in stays email-only.
- Marketing consent: a checkbox, off by default, reading "Email me new guides and occasional offers". It is stored as a single true/false flag on the account. The per-download checkbox in the PDF dialog is separate and documented above.
These four fields are the entire profile. There is no birthday, no company, no address, and nothing is inferred or appended from other sources. The data lives in the Amazon Cognito user pool that holds your account, in the ap-south-1 region, and is not copied into analytics; the signup step reports only "completed" or "skipped" to the aggregate measurement described above, never the field values.
Everything except the email is yours to change or delete on the account page: names and the consent flag are editable in place, and removing the phone number deletes the attribute outright rather than leaving an empty value behind. Unchecking the consent box and saving withdraws marketing consent. The email address itself cannot be changed because it is the sign-in identifier for the account. To delete the account entirely, use the address in the DMCA contact section below; the same inbox handles GDPR and CCPA requests.
Metered free reading
Signed-out visitors can read a small number of articles per week for free. To enforce that allowance the site counts article views per network address: when you open an article without an account, the server records which article was opened and a one-way salted hash of your IP address. The hash cannot be reversed into the address without the server's secret key, the address itself is never written down, and the record holds nothing else, no browser fingerprint, no cookie, no name.
These records expire after 35 days and are deleted by an opportunistic cleanup that runs as traffic arrives, so a record is typically gone within days of expiring and is never read once expired. They are never joined with account data, analytics, or the download log, and they are not shared with anyone. The legal basis is legitimate interest: the count is the smallest piece of data that makes a free-articles-per-week limit work at all, and it is discarded on a short clock.
Signing in removes the meter entirely: accounts are never counted against the free-articles allowance, and no salted IP hash is recorded for a signed-in reader. Signed-in reading is instead recorded as in-app activity, described next, which is tied to your account and used to understand usage rather than to limit access. If the counting service is ever unreachable, the site errs on the side of letting you read.
In-app activity (signed-in accounts)
When you are signed in, the site records which content pages you open, along with a plain sign-in and sign-up event, so the maintainer can see what is read across the site and when an account was last active. Each record is one page open: your account identifier (the Cognito sub, which resolves to your email), the page path, and the time you opened it. It does not record your IP address, your browser, a device fingerprint, a referrer, or anything you do on a page beyond opening it.
Unlike the anonymous meter above, this is personal data, linked to your account. It is never joined with the anonymous meter or with analytics, and it is not shared with anyone. Records are deleted after 180 days by an opportunistic cleanup, the same short-clock approach as the meter. The basis is the maintainer's legitimate interest in understanding how the guide is used; you can request a copy or the deletion of this activity at the contact address below, and deleting your account deletes it along with the rest of your data.
Third-party data
Aside from the GA4 measurement described above, the site does not embed third-party trackers, social media pixels, fingerprinting scripts, customer-data-platform tags, or session replay tools. There is no advertising. There is no affiliate tracking. Fonts and code-highlight assets ship from the site's own origin so no external CDN sees the request.
External links to vendor websites, papers, and tutorials are plain HTML anchors. Following them sends a referrer to the destination unless your browser is configured otherwise. The site has no control over what those destinations log.
If you believe content on aievals.co infringes a copyright you hold, email coffeewithom@gmail.com with: (1) identification of the work, (2) the URL of the allegedly infringing page on aievals.co, (3) your contact information, and (4) a statement under penalty of perjury that you are authorized to act on behalf of the copyright owner. The site operator will review and act within a reasonable time.
The same address handles general privacy questions, GDPR / CCPA requests for the limited data described above, and questions about this page.