Your information
A small list.
A clear purpose.
When you register interest in John Ou’s roasting class, you share your name, email, city, roasting experience and any learning goals you choose to include.
How John uses your details
John uses this information to plan the class, understand what participants want to learn, and contact you about dates, location, pricing and registration when details are ready. An expression of interest does not reserve a place or commit you to payment.
Your details are saved in a private administration system. They are not displayed publicly, sold, or added to unrelated marketing lists. If email notifications are enabled, the site sends a notification to John at 2johnou@gmail.com through the configured email delivery provider.
coffee.sucks membership
Membership is free and invitation only. We store your sign-in identifier, email, chosen profile name and bio, invitation history and learning activity. Each member has two lifetime invitation seats; an accepted invitation permanently uses one seat. Invitations are bound to the recipient’s sign-in email.
The membership waiting list is separate from class interest. By joining it, you agree to receive an invitation and account-related emails. John can allocate a limited monthly batch in signup order. Joining either list does not automatically add you to the other.
New saved roasts are private to your account. Creating a replay link makes that frozen recording, your public profile name, creator notes and timed observations viewable by anyone with the link. You can choose Make private in My roasts or the Roast Lab to revoke all links created from that saved roast. Downloaded video clips are created on your device; you choose where to publish them. Sharing a clip or a replay outside the community is your responsibility.
Community questions, replies, names and selected badges are visible to other active members. Helpful votes and capped learning activity contribute to profile grades. Grades recognise participation; they are not professional qualifications. Members can report posts and John can hide content or suspend accounts. Contact John to correct or remove your profile, waiting-list entry, roasts or posts.
Email sign-in and account access
Sign-in uses a single-use email code delivered by Resend. Codes expire after 10 minutes and are tied to the browser that requested them. We store protected code hashes and temporary sign-in checks, rather than plain-text codes. A private session cookie keeps you signed in for up to seven days, with expiry after 24 hours of inactivity. You can sign out on every device from your profile.
John can view membership status, invitation history, recent sign-in information and private support notes in the administrator workspace. Access changes, invitation actions and moderation decisions are recorded in a private audit history. Suspending a membership blocks access while keeping its saved roasts. Signing in with a verified email preserves the existing membership and its library.
Language preference
Your selected language is remembered on this browser.
Storage and security
The site uses hosted infrastructure from OpenAI Sites and Cloudflare. John’s admin area requires sign-in and an explicit owner allowlist. Information is kept while it is useful for the class-interest list and related follow-up.
To help limit spam, the site temporarily stores a one-way hash of a connection’s IP address and an hourly submission count. These rate-limit records expire after two hours. Referral information from the page link may also be stored with your registration.
Roast Lab recordings and shared replays
Roast Lab experiments run in your browser. Choosing Share replay saves the roast title, setup, timed heat and air adjustments, notes and recorded curve on the hosted service. Anyone with its replay code or link can view these details without signing in. Shared replays have no public directory; keep private information out of notes you choose to share.
Replay counts record playback starts, not page visits or unique people. A playback session counts once within 24 hours. Counting uses a temporary one-way connection hash and a random playback session identifier; counting records expire after 24 hours. Shared snapshots retain their recorded trace. Making a saved roast private revokes its old replay links; a later share creates a new link. People may already have downloaded a video or copied information before access was revoked. Older replays without a linked member record may not identify their creator; contact John with the code for help. Sharing and playback counting use separate spam limits.
Your choices
You can ask John to stop class updates, correct your information, or remove your registration at any time by emailing john@coffee.sucks.
Last updated: 21 October 2026 · Membership, class interest and Roast Lab privacy notice v5