Cookie Policy
Offer — a product analyst interview trainer
Last updated: October 18, 2026
This policy explains which cookies and similar technologies Offer at offerbeta.com (the "Service") uses, and how you can control them. It complements our Privacy Policy.
Contents
1. What we mean by cookies
Cookies are small text files a website stores in your browser. The Service mostly uses similar technologies instead:
- local storage — data that stays in your browser until it is deleted;
- session storage — data that is deleted when you close the tab;
- IndexedDB — a database in your browser for larger data; it stays until it is deleted;
- the browser cache — files saved to speed up loading.
In this policy, "cookies" means all of these.
2. Our approach
- Strictly necessary storage runs the Service: it keeps you signed in, keeps your progress and settings, and remembers your analytics choice. It does not need consent and cannot be switched off in the Service. You can still delete it in your browser, but the Service will then forget your progress and settings.
- Analytics storage is used only if you allow it (section 4). Before you choose, and after you reject, analytics isn't loaded.
- We do not use advertising or cross-site tracking cookies.
3. Strictly necessary
In the names below, <project> stands for the ID of our sign-in service.
| Name | Type | Set by | Purpose | Kept for |
|---|---|---|---|---|
sb- | Local storage | Supabase (sign-in) | Keeps you signed in (session tokens) | Until you sign out or the session expires |
sb- | Local storage | Supabase (sign-in) | Protects the sign-in process (PKCE) | Until sign-in completes |
offer.save.v1 | Local storage | Offer | Your progress on this device (guest mode, and a local copy for signed-in users) | Until you delete it or delete your account. If your progress is saved in your account, signing out removes it from this browser |
offer.save.v1.broken- | Local storage | Offer | Up to 5 copies of progress the Service couldn't read or that was replaced, so you can download them | Until you delete them; older copies are removed automatically |
offer.sync, offer.device | Local storage | Offer | For signed-in users: whose progress is on this device, what still needs saving to the account, and a random ID of this device | offer.sync — until you sign out; offer.device — until you delete it |
offer-sync | IndexedDB | Offer | For signed-in users: the copy of your progress last saved to the account, and up to 5 earlier versions from this device that you can download in the account settings | Until you sign out or delete your account |
offer.lang | Local storage | Offer | Interface language | Until you delete it |
offer.consent | Local storage | Offer | Your choice in the cookie banner or in "Share usage analytics" (account settings) and its date | Until you change it or delete it |
offer.split.*, offer.algo.*, offer.editor.v1, offer.practice.list, offer.cheat.last, offer.prep.done, offer.work.nameAsked, offer.bh.micTip | Local storage | Offer | Interface settings: panel sizes, selected tabs and lists, code editor settings, the last cheat-sheet card, prep steps you've already been told about, tips and questions we've already shown | Until you delete them |
offer.screen, offer.return, offer.practice.section, offer.practice.findBug, offer.work.selected, offer.work.view, offer.calibration.selected, offer.cheat, offer.prep.tab, offer.prep.place, offer.prep.bhOpen, offer.mockPreset, offer.storiesPreset, offer.archiveOnLangSwitch, offer.sync.declined | Session storage | Offer | Remembers the open screen, your selection and "Not now" answers while the tab is open (for example, when you switch the language) | Until you close the tab |
offer.iv.draft, offer.storyDraft, offer.selfCheck | Session storage | Offer | Text you haven't sent or saved yet (an interview answer, a story draft, a practice run without AI), so reloading the page doesn't lose it | Until you close the tab; "Reset progress" also removes it |
offer-cache | IndexedDB | Offer | The generated practice databases (each week, interview and problem set has its own), so they open in a second instead of being rebuilt | Until you delete site data; older databases are replaced automatically |
| Python runtime files (Pyodide) | Browser cache | Your browser, downloaded from jsDelivr | Run Python and pandas exercises in your browser without downloading the runtime every time | Per your browser's cache rules |
offer.promo | Local storage | Offer | The promo code from the link you came by, so it can be applied to your first Pro purchase; the link's channel tags (utm) are kept only if you allowed analytics | 60 days, or until you remove the code or buy |
offer.pendingTxn | Local storage | Offer | A Pro payment that was still being confirmed when you left, so the Service can tell you when Pro is on | 1 day |
offer.proIntent | Local storage | Offer | The pass length you picked on the site, so the purchase window opens after you sign in | 30 minutes |
| Bot check (Turnstile) | Cloudflare's own frame | Cloudflare | Tells people from bots when you sign in by email | As set by Cloudflare |
| Payment window | Dodo Payments' checkout code (served from our site) and payment frame | Dodo Payments (loaded only when you start a purchase) | Payment processing and fraud prevention | As set by Dodo Payments |
The bot check and the payment window are run by Cloudflare and Dodo Payments. Anything they store is governed by their own privacy and cookie policies. Our hosting and DNS set no cookies on our domain.
4. Analytics
Analytics runs only if you allow it. A banner asks you first: "Reject" and "Allow" sit side by side and look the same. Before you choose, and after you reject, analytics isn't loaded and nothing is sent. Signed-in users can also use "Share usage analytics" in the account settings; the account's choice applies wherever you sign in.
We use PostHog (hosted in the EU) to see which pages and features people use and where they leave. What it collects is in section 3 of the Privacy Policy. In the names below, <key> stands for the public key of our analytics project.
| Name | Type | Set by | Purpose | Kept for |
|---|---|---|---|---|
ph_ | Local storage, session storage | PostHog (only after you allow analytics) | A random ID of this browser, to link the steps of one visit and your later visits | Until you withdraw consent or delete it |
Other keys starting with ph_ | Session storage | PostHog (only after you allow analytics) | The current visit and tab | Until you close the tab |
__ | Local storage | PostHog (only if you allowed analytics before) | Remembers that analytics is off or on | Until you delete it |
When you withdraw consent, analytics stops at once and the random ID is removed. Only the key that remembers your choice stays; the tab keys go when you close the tab.
5. Sign-in providers
If you sign in with Google or GitHub, you are taken to that provider's website, which may set its own cookies there. These are governed by the provider's own cookie and privacy policies, not by this policy.
6. Your choices
- On the site: "Cookie settings" opens the banner again, so you can change your choice at any time. It's at the bottom of the main page and of the game's home screen, and in "About Offer".
- Browser signal: if your browser sends Global Privacy Control or Do Not Track, we treat it as "Reject" and don't show the banner. You can still allow analytics in "Cookie settings".
- In your account: signed-in users can turn "Share usage analytics" on or off in the account settings.
- In your browser: you can delete or block cookies and site data. Blocking strictly necessary storage will stop sign-in and progress saving from working.
7. Changes
We will update this policy when we add or change cookies. If a change needs your consent, we will ask for it.
8. Contact
Kanan Shukurlu, Israel · support@offerbeta.com