KevinBytes

Privacy Policy

Last Updated: 2026-09-16

Cookie Usage

We use the following cookies: 1. Essential Cookies: - cookie-consent-given: Records that you have made a choice - analytics-enabled, marketing-enabled, functional-enabled: Store your choices - Duration: 1 year - Purpose: Remember your consent choices 2. Analytics Cookies (Only if consented): - _ga, _ga_*: Google Analytics cookies - Duration: 2 years - Purpose: Site usage statistics - Data collected: Page views, article views and reading events, subscription request and confirmation events, return visits, and page performance - Cookie identifiers distinguish browsers and sessions - A local browser timestamp records the last consented visit to recognize a return after at least 30 minutes - These reading events do not include email addresses, subscription tokens, URL queries, or URL fragments 3. Sign-in and Security Cookies: - Keep signed-in sessions active and help protect form submissions - Required for the features that use them 4. Marketing Cookies (Only if consented): - Currently not in use - Included in preferences for future use See the Cookie Policy for cookie settings and browser controls.

Contact Submissions

When you submit the contact form, we collect: Fields Collected: - Name (required) - Email address (required) - Message content Storage and Processing: - Messages are delivered to kevin@kevinbytes.com through Resend - Security logs may include your email address and request metadata - Rate limiting uses your email address and IP address in Redis Retention: - Contact messages are kept as email correspondence - Contact kevin@kevinbytes.com to request deletion - Rate-limiting counters expire separately from email and security records Purpose: - To respond to your inquiry - To prevent spam and abuse via rate limiting - No marketing use without explicit consent

Newsletter Signups

When you subscribe to updates, we collect: Fields Collected: - Email address (required) - Signup page or form location - IP address and user agent for abuse prevention Storage and Processing: - Newsletter signups are stored in a PostgreSQL database hosted by Neon - Resend delivers a confirmation email before a new subscription becomes active, followed by a welcome email - Confirmation links expire after 24 hours; only token hashes are stored in the database - A notification is sent to kevin@kevinbytes.com after confirmation - Rate limiting data is temporarily stored in Redis Retention: - Unsubscribing marks your record as unsubscribed so it is excluded from future research updates - Signup records, including unconfirmed requests and unsubscribe status, remain until deletion is requested - Every research email includes an unsubscribe link; you can also contact kevin@kevinbytes.com - Rate-limiting counters expire separately from signup and security records Purpose: - To send research notes and site updates - To prevent spam and abuse via rate limiting - To maintain an accurate subscriber list

Data Storage

Data stored by the site includes: - Consent preferences in browser storage - Newsletter signup records in PostgreSQL - Contact messages delivered by email - Request metadata and security logs, which may include IP addresses, user agents, timestamps, and requested paths - Temporary rate-limiting counters for forms and sign-in attempts

Your Rights

You have the right to: - Access your data - Delete your data - Withdraw consent - Change preferences - Export your data Contact kevin@kevinbytes.com for data requests.

Third-Party Services

We use: - Google Analytics and Vercel Analytics (site usage analytics, enabled only with analytics consent) - Neon (PostgreSQL hosting for form submissions and security logs) - Vercel (for hosting and edge functions) - Resend (for email delivery) - Upstash (for rate limiting via Redis) - OpenRouter (when you request AI label suggestions) - Cloudflare R2 (for voice recordings you choose to upload)

Updates

Changes to this policy are published here with an updated date.