Privacy policy

No third-party analytics. No ad trackers. No third-party scripts at all, and the security header we send forbids them outright. The calculators need no account and keep nothing. Below is every value we store, where it lives, and how to have it deleted.

The short version

  • Every calculator, the whole Learn course and the formula sheet work with no account, no email and no cookie.
  • No analytics product, no advertising pixel, no third-party script. The Content-Security-Policy header allows scripts and network connections from this origin only, so a tracker could not run here even if one were added by accident.
  • Nothing is sold, rented or shared for marketing.
  • The only personal data the site can hold is an email address (if you sign in, or leave one on the pre-launch list), plus what Stripe holds once billing opens.

Everything below is the long version, written against the code rather than from a template. Where something cannot be verified from the code, it says so.

What stays in your browser

Most of what the site remembers never leaves your device. It is kept in localStorage under the origin teachersbet.com, which is readable only by this site and is cleared the moment you clear site data.

Every key, and what is in it

  • tb-age-ok: set once you confirm you are of legal betting age. A single character. Never sent anywhere.
  • tb-report: the Report Card, meaning prices you chose to log, each with the event, the side, the moneyline, the market and line, an optional stake and bankroll, the book, and when you logged it. On an Extra Credit account this key is a holding area rather than the store: an entry sits here until the server has it, then leaves.
  • tb-bankroll: the last bankroll typed into the Kelly Sizer or saved on the Report Card, so it does not have to be retyped. It also sizes the one-tap half-Kelly log when no account bankroll is set.
  • tb-learn-done and tb-learn-phd: which Learn course lessons you have passed, and the derived PhD claim code. Signed out, this never leaves your device. Signed in (any tier, free included), the passed-lesson list is also copied to your account so your rank follows you between devices and survives a cache clear; the server only ever adds to that list, never removes from it. If you have linked a Discord account, the bot can also set your current course rank as a role in our Discord server. Deleting your account deletes the list and unlinks the Discord account with it.
  • tb-attendance: the day’s answer from the attendance counter, cached so the site asks the server at most once a day. The record itself is on your account when you are signed in, any tier: one row per Eastern Time calendar day you opened the site, from which the streak is derived. It stores the date only, nothing about what you did that day, and deleting your account deletes it.
  • tb-bell and tb-bell-seen: the in-app alert setting (which ships switched off) and the ids already shown, so the same flag does not fire twice.
  • tb-tour-done: whether the one-time guided tour has already run.
  • tb-first-touch: how you first found the site. One label from a fixed list (meta, google, reddit, direct and so on), the page you landed on, and the day and minute you arrived. When the site that linked you is not one we recognise, it also holds the bare name of that site: the host only, never the page and never the full link. If you followed a campaign link or an affiliate link, it holds that campaign or affiliate name instead. It is written on the first arrival that shows where you came from, and a later visit does not change it while it is under 90 days old. Past 90 days it is deleted on your next visit and the next arrival starts over, so a browser that never comes back keeps it until you clear site data. It is sent with every sign-in request, and it is kept only if that sign-in creates a new account; either way the browser copy is deleted the moment you are signed in. The tracking code a social link puts on the address arrives with the page request, the way every part of a web address does. It is read to pick the label and then dropped: it is never written to your browser and never stored on our server. If your browser sends the Global Privacy Control signal, nothing is written and nothing is recorded, on either side.
  • tb_pro: after a subscription purchase, the signed entitlement token. It carries the subscriber’s email or Stripe customer id, the tier and an expiry, and it goes back to the server to unlock the paid board.

An operator-only admin page also keeps an access key in sessionStorage. It is not part of any visitor’s use of the site.

The Report Card is worth a note, because there are two versions of it and only one of them stores anything at all.

Without an Extra Credit subscription (signed out, or on a free account), nothing is stored anywhere. Not on our server, and as of 1 August 2026 not in your browser either. You grade one bet at a time: the entry is held in the page’s memory, sent to /api/report/grade, which compares it against stored closing prices and returns a grade, and then it is gone the moment you reload. It is not written to the database and it is not written to localStorage. Keeping a running card is what the subscription is for. Entries logged into localStorage before that date are still on your device; the site no longer reads or adds to them, and clearing site data removes them.

With an Extra Credit subscription, the archive is saved on the server. That is the point of it, since a history that evaporates cannot show you a season’s worth of closing line value. It went live on 1 August 2026; before that date nothing was stored for anyone.

One detail worth stating plainly, because it involves your browser sending us something you logged earlier. On a subscribed account a price you log lands in localStorage first, as a queue, and is then copied to the server and removed from the browser: that is what stops a tap being lost if the network drops mid-request. So when you subscribe or sign in on a device that already has entries in it, those entries move into your account, and the card says how many did. That is what makes the same card appear on your phone and your computer. If you would rather it had not, delete them from the card: one entry or all of them, and they are gone from the database immediately.

Each saved entry holds the game, the market and side, the venue, the price you logged, when you logged it, the stake and bankroll if you supplied them, and the grade once the game closes. It is attached to your account, so it survives a cache clear and follows you between devices. A subscribed account can also save one number that is not an entry: a starting bankroll, which the card combines with settled results to derive a current bankroll. Save the field empty and the stored number is deleted.

This is the most personal thing the site keeps, so the terms are strict and they are enforced in code, not just written here:

Cookies

Two, both first-party, both functional. Neither is for advertising and neither follows you anywhere else.

tb_pro, the entitlement token in the list above, is not a cookie: it is kept in localStorage and sent to the server in an Authorization header. The server will also accept it as a cookie if some client chooses to send one, but nothing on this site sets it that way: no code here writes document.cookie at all.

There is no consent banner because there is no tracking cookie to consent to.

One thing we do want to know is roughly where people find us, so that time is not spent on channels nobody arrives from. When you arrive from a link somewhere else, the page writes a single label into localStorage, not a cookie: a word like meta or google, plus the page you landed on and, when the linking site is not one we recognise, that site’s bare host name. It travels with every sign-in request, and it is copied onto the account only when that sign-in creates one. Signing in deletes the browser copy either way. If you never sign in, your next visit after 90 days deletes it and starts over. It is a label, not an identifier: everyone who arrives from the same post stores the same word, so it cannot single anyone out and it cannot follow you anywhere. If your browser sends the Global Privacy Control signal, the page writes nothing.

What the server stores

Server-side data lives in a Cloudflare D1 database (SQLite at the edge). These are all of the rows that can contain anything about a person:

Every credential is stored only as its SHA-256 hash, so a copy of the database yields nothing usable: the raw session id, link token and sign-in code exist only in your browser and in your inbox. The link token, browser nonce and session id are 256-bit random values.

The six-digit code is short by design, because it has to be typed. It is protected instead by the browser binding, a five-attempt cap and a 15-minute expiry.

What is never collected

Who holds it

Escapement Technologies LLC, a New York company in Syracuse, New York, owns and operates teachersbet.com and is the controller of everything on this page. Teacher’s Bet is the name of the site, not a separate company. Requests about your data go to support@escapementtech.com and reach a person.

Who else is involved

Four processors, each doing one job:

There is no advertising network, no data broker, no analytics vendor and no CDN-hosted font or script. Everything the browser loads is served from this origin, including the maths typesetting.

Logs

The server writes short diagnostic lines: sign-in outcomes (whether it worked, why not, and the first 80 characters of the user-agent string, never the token or the code), unmatched URLs (the method, the path, the length of the query string rather than its contents, a truncated referrer and a truncated user-agent), and payment-webhook errors. Those exist so a broken sign-in can be diagnosed while a user is reproducing it.

No log-drain, Logpush destination or analytics dataset is configured for this application, so it keeps no request log of its own. Cloudflare’s platform-level logging and retention apply as they would to any site it hosts, under Cloudflare’s policy rather than this one.

Deleting your data

Age

This site is built for adults and is not directed at children. No data is knowingly collected from anyone under the legal betting age, and there is no mechanism here that could collect a child’s data other than an email address typed into a form. If you believe a minor has entered one, email the address above and it is deleted.

What this page does not claim

It describes what the code does, checked against the code. It is not a compliance certificate for any particular privacy regime and it is not legal advice. A pre-launch legal review is under way; if it changes anything here, this page changes and the date at the top moves with it.

Material changes get described rather than quietly substituted: the same corrections rule the rest of the site runs on, set out in the editorial policy.

Changed on 9 August 2026: the site now keeps one label recording which link first brought a reader here, described above under Cookies, in the browser-storage list and under what the server stores. That is the only new thing on the page. The word “analytics” was narrowed to “third-party analytics” in a few places, because counting where our own readers come from is analytics of a kind and the broader word had stopped being exactly true.

Also changed on 9 August 2026: you can now delete your account yourself, from the bottom of the account menu, instead of emailing and waiting. This page used to say email was the only route to deleting the account row, and that is no longer true, so the sentence changed rather than being quietly left standing. Email is still the route if you cannot sign in. The new page is delete your account.

Frequently asked questions

Does Teacher’s Bet track me?

No. There is no analytics product, no advertising pixel and no third-party script. The Content-Security-Policy header allows scripts and network connections from this origin only, so a tracker could not run even if one were added by mistake. There is no advertising cookie and no cross-site identifier. The one thing kept for our own use is a short label saying which site sent you here, stored in your browser and copied to your account only if you make one.

Do the calculators store what I type?

No. Each calculator posts its inputs to a stateless endpoint that computes an answer and returns it; nothing about the request is written to the database. The only values kept are ones you deliberately keep, and without an Extra Credit subscription the Report Card keeps nothing at all: you grade one bet at a time and it is gone on reload, stored neither on the server nor in your browser. With a subscription the Report Card archive is saved to your account, and can be exported or deleted in one click.

Do I need an account?

No. Every calculator, the full Learn course and the formula sheet work with no account, no email and no card. An account exists only for the paid tier and for keeping a subscription attached to an address.

What cookies does the site set?

Two, both first-party and functional: tb_session for a signed-in session, stored server-side only as a hash, and tb_auth_nonce, a 15-minute value that binds a sign-in link to the browser that asked for it. The paid entitlement token tb_pro is not a cookie: it is kept in localStorage and sent in an Authorization header. No advertising or analytics cookie.

How do I delete my data?

Clearing site data removes everything held on your device. A saved Report Card archive is deleted from the Report Card itself, one entry or all of it. Signing out of all devices deletes every session row. To delete the whole account, use Delete your account at the bottom of the account menu, on the website or in the app: it removes the account row, the Report Card archive, the saved bankroll, the Learn progress, the attendance rows, the alert registrations, any Discord link and every session, and it cannot be undone. Cancel a live subscription first. If you cannot sign in, or you left a pre-launch-list address and never made an account with it, email support@escapementtech.com from the address in question. Full details are at delete your account.

Does Teacher’s Bet sell data?

No. Nothing is sold, rented or shared for marketing. The only third parties are infrastructure: Cloudflare for hosting and the database, Stripe for payments, and Resend to deliver the sign-in email.