BATCHLY.

Privacy Policy

Last updated: September 13, 2026

What Batchly collects, who can see it, and what you can do about it. Written to be read before you connect anything, not after.

Batchly started as a games site. It now also runs College Hub (your Canvas coursework, Google Calendar and email headers) and a workout tracker (training, food, sleep and progress photos). Those handle far more sensitive data than games do, and they are described in full below.

Four things worth knowing before you scroll. A Canvas access token is not read-only. The workout tracker is a shared group, and progress photos default to being visible to the other members. Several features send your content to an AI model. And email you send to support@batch-ly.com is stored, read by a model, and may be answered without a person seeing it. Each is explained in its own section.

Overview

Batchly is batch-ly.com, run by one person as a personal, non-commercial project. There is no advertising, no third-party tracking SDK, and nothing is sold or shared for marketing.

Most of the site works without an account. You can browse and play games signed out. You only create an account for cloud saves, leaderboards, achievements and a public profile.

The extra modules are not all open to everyone:

“We”, “us” and “Batchly” mean the individual who operates the site. Using Batchly means accepting this policy.

Your account

Your email address is never shown on a leaderboard or a public profile.

Games and progression

If you are signed in, playing writes: leaderboard scores (with the per-game details attached to a run), cloud saves, achievement unlocks, streaks, Watts balance and ledger, cosmetics you own, season and goal claims, notifications, and activity entries. Social features add follows, likes, ratings, comments, jam votes, challenge scores and referrals.

A cloud save is a snapshot of what a game stored in your browser for that game: progress, high scores, settings. Batchly does not inspect it.

If you turn on notifications, your browser hands Batchly a push address for that device (a delivery URL plus two keys), and it is stored so a notification can be sent to you. It identifies the browser installation, not you; turning notifications off removes it.

If you upload a game, the game's code, cover image, description and moderation history are stored, and are reviewed by the operator (and by an AI moderation step) before publication.

Once a game is published, its icon and cover appear on the downloads index, and its source file is offered there for download if you leave the “share the source” box ticked on the upload form. You can change that at any time on your creator dashboard, and games uploaded before 2 September 2026 are not listed for download unless their creator turns it on. To be straight about what that box does and does not do: an approved game's code is already sent to every player's browser in order to run, so the setting keeps no secret; it decides only whether Batchly advertises your file for download in your name.

You can also send feedback and bug reports. Those carry your message, optional contact details, the page you were on, device details you choose to include, any screenshots you attach, and, if you are signed in, your account and email.

College Hub: Canvas, Calendar and mail

College Hub is off until you connect something. It has two connections, and they are independent; you can use one without the other.

Canvas

You paste a Canvas personal access token that you create yourself in Canvas. Batchly then reads, on a sync:

Those are the only three Canvas endpoints the code calls, and all three are reads. College Hub has no write path to Canvas anywhere in it.

Being exact about the assignment call, because “reads” and “keeps” are not the same thing: the request asks Canvas to include your submission, and Canvas's reply to that carries your grade whether or not anything wants it. For as long as College Hub has existed nothing wanted it: there was no column for a score, and the grade was dropped as the reply was parsed. That changed on 2 September 2026; Grades, below, is the whole of the new position.

Be clear about what a Canvas token is. Canvas has no read-only option and no per-feature permissions. A personal access token carries the full permissions of the account that made it; it can submit work, change your profile, and anything else you can do in Canvas.

College Hub only ever reads. But that is our choice in our code, not a restriction Canvas puts on the token. If you would rather not take that on, do not connect Canvas. The rest of the hub still works. You can delete the token from Canvas at any time and it stops working immediately.

Grades

Grade tracking is off unless you turn it on, in College Hub, on the Grades card. It is off for every account that already existed, because those accounts connected Canvas under a version of this policy that promised no score was kept, and a promise is not something to withdraw quietly. While it is off, the sync does not ask Canvas for your course totals at all, writes no score, and blanks any grade field it finds.

If you turn it on, this is the whole of what is stored, and the list is the whole list:

Not stored: your final grade, your score before any late penalty, submission comments, rubric or per-question detail, and anything about anyone else. Canvas offers all of those in the same replies; none of them has a column.

Grades are not sent to the AI assistant. The assistant rebuilds what it knows from the database on every question, and its list of fields does not include any of the ones above. Your deadlines, class times and mail subjects do go to the model (see the AI section), and your grades do not.

Turning it off is a deletion. Switching the Grades card off erases the stored scores and course totals in the same action, immediately, rather than hiding them. Disconnecting Canvas goes further and deletes the whole coursework cache, described under Keeping, disconnecting and deleting.

One thing this cannot do: show you a grade Canvas will not state. Instructors can hide a course total, and a course with nothing graded yet returns the same silence, so College Hub says which of those it is when it knows and says it cannot tell when it does not. It never fills a missing grade with a zero.

Google Calendar

If you connect Google, College Hub reads your calendar list and then the events on every calendar in it (including calendars shared with you or that you subscribe to) for a window from 7 days ago to 28 days ahead. It stores each event's title, start and end, all-day flag, location, link, and the event's full description text. If your calendar descriptions contain private notes, meeting links or dial-in details, those are stored.

Two details that cut in opposite directions, so both are here. Hiding a calendar inside College Hub changes what is displayed; it does not stop that calendar being fetched. But guest and attendee lists are not stored at all (no column holds them), so who else was invited to your events does not end up in the database.

Email

College Hub can show course-related mail. It searches your Gmail with a query you write and control in College Hub's settings, and stores, for each match: the sender's name, the sender's address, the subject line, the date, the message and thread ids, read/archived state, and which course it matched.

Message bodies are never requested and never stored. The sync calls Gmail with format=metadata and an explicit header list of exactly From, Subject and Date. No body is asked for, and the mail table has no column that could hold one; a database test enforces that, failing the migration if a body, snippet, payload or content column is ever added. Only the three headers above are read out of Gmail's reply; anything else it returns alongside them is discarded in memory and never written down.

To be equally clear the other way: a subject line is content. Subjects can be sensitive on their own: grades, health, money, discipline. Those are stored, and they are included in what the AI assistant sees if you use it. Write your mail query narrowly.

The rest of College Hub

You can also enter your class meeting times and locations by hand, set an available-hours-per-day figure, and record or accept workload estimates per assignment. Sync status rows record when the last sync ran and, if it failed, the error text, which can quote a hostname or an upstream API response.

Where the Canvas token and Google tokens are kept

Both live in one table that is locked down harder than anything else on the site. It has row-level security on with zero policies and no grants at all to signed-out or signed-in users. That means it cannot be read through the public API by anybody, including you, the row's owner. Only server-side functions using the service role can read it.

What the app can ask about that table, precisely: whether Canvas is connected, whether Google is connected, the address of your Canvas site, and the expiry date you set on the Canvas token. Never a token value. Two more calls can write to it (saving a Canvas token, and clearing one), and both act only on your own row.

Honest limit on that: the tokens are stored as ordinary text. They are protected by access control and by the database provider's encryption of the disk they sit on. They are not separately encrypted by Batchly at the application level.

Google user data and Limited Use

Sign in with Google and College Hub's Google connection are two different things and ask for different permissions.

Google's tokens are requested with offline access so a sync can run without you being present. You can disconnect from inside College Hub, which asks Google to revoke the token, or from myaccount.google.com/permissions.

One honest wrinkle. The consent request is sent with Google's include_granted_scopes option, which means any permission you granted this app before stays attached to the new token. College Hub used to ask for read-only Drive file metadata; that was removed on 26 August 2026 because no code ever called Drive. Narrowing what is asked for does not retract what was already given, so if you connected before that date, the old permission can still sit on your grant until you remove the app at myaccount.google.com/permissions. Nothing in Batchly calls the Drive API.

Batchly's use and transfer to any other app of information received from Google APIs will adhere to the Google API Services User Data Policy, including the Limited Use requirements.

The use of information received from Google Workspace APIs will adhere to the Google Workspace API User Data and Developer Policy, including the Limited Use requirements.

Specifically, and in keeping with Limited Use:

The operator ensures that anyone acting on Batchly's behalf, and any successor to it, complies with the Google API Services User Data Policy.

Workouts, food and progress photos

The workout tracker is invite-only. If you are in it, these are the things it records, all entered by you:

Progress photos, nutrition and body measurements are health data. In most privacy regimes they are a sensitive category, and Batchly treats them as one. Photos and import screenshots go into private storage buckets, not the public ones used for avatars and game covers.

The workout tracker is a shared group, and sharing is the default. It is one group, not per-person friend lists: everyone invited can see everyone else.

Always visible to the whole group, with no setting to turn it off: your workouts (including their titles and your notes) and every set you log.

Visible to the whole group unless you mark the entry private: your progress photos and your nutrition entries. Both default to group-visible. If you upload a progress photo and change nothing, the other members can see it. The upload form and the food form each carry a checkbox that makes that entry yours alone; you have to tick it, per entry, at the moment you save.

Yours alone: your commitments and stakes, and your screenshot imports.

Sleep log

Open to any signed-in account with a confirmed email address. It records the night's date, bed time, wake time, a 1–5 quality rating and free-text notes, and only once you enter them.

Sleep entries are readable only by the account that wrote them, enforced in the database rather than only in the page (not by the workout group, and not by other people using the sleep log). That rule is what made it safe to open the log to everyone: it has never been a shared space, and opening the door did not create one. Administrators are not an exception to it either; the note below about direct database access still applies, and it is the only route by which the operator could ever see an entry.

The sleep helper (the AI you can ask about your own nights) is separate and is granted account by account. If it is not switched on for you, the helper is not offered and the server refuses the request; the log itself is still yours to use.

AI features and what they send

Five features can send your content to a language model. Four of them run only when you press something; the fifth, support email, runs the moment your message arrives. Two providers are used: a self-hosted model (a Qwen model on the operator's own hardware, reachable only by the site's servers) and the Anthropic Claude API. Where a feature tries the self-hosted model first and falls back to Claude, that is stated.

FeatureWhat is sentWhere it goes
Site AI assistant Your messages and the page you are on, the game catalogue and play tips, and, if you are signed in, your own profile summary: display name, level, XP, global rank, Watts balance, streak, how many achievements you have, the titles of games you uploaded, and the games you have played. Your email address is not included. Self-hosted model; Claude API if it is offline.
College Hub assistant
(separate invite list)
Your question, plus your courses, upcoming and overdue assignments, class schedule, this week's calendar events, and recent mail: sender names, sender addresses and subject lines. Rebuilt on the server from your own rows; the app cannot send someone else's. Calendar events go in as title, time and location only; the event description is deliberately left out. Grades are left out too: assignment points possible is included, your score is not, and neither is any course total. Whichever provider the operator has configured: the self-hosted model or the Claude API. It can also be set to none, which switches the assistant off rather than falling back to anything.
Workout / nutrition screenshot import The image you attach, so the numbers can be read out of it. Claude API only. The self-hosted model cannot read images, so there is no fallback. If you go on to confirm the entry, the image is also kept in a private bucket attached to it; deleting the entry removes the file straight away, and deleting the workout or nutrition day it belongs to removes it through a clean-up job that normally runs within ten minutes (see Keeping, disconnecting and deleting).
Sleep helper
(granted account by account)
Your recent sleep entries: dates, bed and wake times, quality ratings and the free-text notes you wrote on them. No site or game context. Nothing is sent unless the helper is switched on for your account and you ask it something. Self-hosted model; Claude API if enabled and it is offline.
Support email
(mail you send to support@batch-ly.com)
Your address, the subject and the text of your email. Read the Emailing support section before you write to us: this one runs without you pressing anything. Self-hosted model; Claude API if it is offline.

The self-hosted model runs on a machine the operator's family controls. Data sent to it does not leave that machine, and it is not used to train anything.

Requests to the Claude API are sent under Anthropic's commercial API terms, under which Anthropic states it does not train its models on data submitted through the API. Anthropic is a third party with its own policies; if you are not comfortable with that, do not use the features in the table.

Conversations themselves are not stored as transcripts. For each of these features, what the database keeps is a row holding your account id and a timestamp: enough for the rate limits to work, and nothing of what was said. The one AI log that holds more is the operator's own: when an admin uses the description-writing tool, a row records the feature, the game and that admin's email address.

Separately, a game you submit is passed to a model for automated moderation, and the operator can use a model to draft a game's description from its code. Both try the self-hosted model first and fall back to the Claude API.

Emailing support

The address at the bottom of this page is not a plain mailbox, and you should know that before you use it. Mail to support@batch-ly.com goes through this, every time:

The model is instructed to hand certain things to a person rather than answer them itself: anything about account deletion, data access or a privacy or legal request; anything about payments; security reports; and anything involving another person, such as harassment or abuse. So a deletion request reaches a human. It is still read by a model on the way, and it is still stored.

If that is not acceptable for what you need to send (and for some requests it reasonably will not be), say only that you would like to be contacted, and the rest can be arranged another way.

Diagnostics and error reports

Batchly runs no third-party analytics or tracking SDK: no Google Analytics, no advertising pixel, no Sentry. It does keep three small first-party diagnostic logs, and it is worth being precise about what is in them, because an earlier version of this policy said there was nothing at all.

All three are write-only from the browser: the database accepts inserts from anyone and returns rows only to an administrator.

One thing that is not a log but is worth naming here. So the site can show how many people are on it, your browser joins a shared live channel while you have Batchly open. Signed in, the identifier it announces on that channel is your account id, the same id that is already public as your profile address. Signed out, it is a random per-tab id. Nothing else is broadcast, and nothing is stored, but it does mean another visitor could work out which accounts are online right now.

Beyond these, our hosting and CDN providers receive the ordinary request information any website receives: IP address, User-Agent, and the URLs you load.

Who can see what

DataWho can see it
Display name, avatar, bio, account id, level, titlesAnyone, including signed-out visitors
Leaderboard scores, achievements, published games, comments, ratingsAnyone
A published game's source file, offered for download on /downloadsAnyone, if its creator left source sharing on
Account email, cloud saves, wallet and cosmeticsYou only
College Hub: courses, assignments, calendar events, mail headers, settingsYou only
College Hub grades: assignment scores and course totals (stored only if you opt in)You only. Not sent to any AI model.
Canvas and Google tokensNobody through the app (server functions only)
That you are online right nowAnyone on the site: by your account id, if you are signed in
Workouts, sets and exercise namesEveryone in the workout group. No opt-out.
Progress photos, nutritionEveryone in the workout group by default; you only, if you tick private on the entry
Commitments, stakes, screenshot importsYou only
Sleep entriesYou only
Feedback, bug reports, subscriber emails, error logs, analyticsThe site operator only
Mail you send to support@batch-ly.comAn AI model, then the site operator (see Emailing support)

These are enforced in the database itself with row-level security, not only in the interface. The operator, as the person who runs the database, can technically reach anything stored in it, which is true of every site, and worth saying plainly rather than implying otherwise.

Companies that receive your data

Batchly does not sell your personal information and does not share it for advertising. It relies on a small set of providers, each receiving only what it needs.

Where it lives and how it is protected

Data is held in a Supabase project in the United States, delivered through AWS. Both encrypt data in transit over HTTPS and at rest as part of their managed infrastructure.

Access is enforced at the database level rather than only in the app, so a bug in the interface does not open a door. Concretely: your saves, settings and College Hub data are readable only by your account; the workout rules are exactly as described above; credentials are in a table with no user-facing access at all; and the diagnostic tables accept writes but return nothing to anyone except the operator.

Progress photos and import screenshots are in private storage buckets. A member of the workout group can retrieve another member's photo only when the matching row is one this policy says they can see.

Passwords are never stored or logged in readable form; the authentication provider keeps only a hash.

No online service is completely secure. Batchly is a personal project run by one person, not a company with a security team. That is a real limitation, and it is a reason to think about what you connect. If you would rather not have coursework or health data in one hobbyist's database, use the parts of the site that do not need it.

Keeping, disconnecting and deleting

Account data is kept while your account exists. Feedback is kept while it is useful. Announcement emails are kept until you unsubscribe. Provider request logs follow those providers' own retention policies.

Disconnecting is not the same as deleting, so here is exactly what each one does today:

To delete your account, or to ask for anything above to be removed sooner, email the address in Contact from your account email.

Your choices

Cookies and local storage

No tracking or advertising cookies, and in ordinary use the site sets no cookies at all.

Your browser's local storage is used to keep you signed in (your session token), to remember your light/dark choice and which notices you have dismissed, to hold a score captured before you signed up, to keep a list of games you recently played, to hold an unsubmitted game draft you were writing, and to keep each game's own saved progress. Session storage holds the random per-tab id used by the four product events and by the online-count channel. These stay on your device; the session token is sent only to Batchly's own backend.

Children

Batchly is a general-audience site, not directed to children under 13, and does not knowingly collect personal information from them. If you believe a child has created an account or submitted personal information, contact us and it will be deleted.

Changes to this policy

This policy is updated as the site changes. When it is, the “Last updated” date at the top changes and the new version is posted at this same URL. Significant changes may also be announced on the site. If a change would newly send your data somewhere it does not go today, this page will say so before it happens.

Contact

Questions, data requests, corrections or account deletion: support@batch-ly.com.

Read Emailing support first. Mail to that address is stored, read by an AI model, and may be answered automatically. Privacy, deletion and legal requests are always routed to a person, but they are read by the model on the way there, so do not put anything in that message you would not want processed that way.

Batchly is operated by an individual as a personal project.

← Back to Batchly