Privacy & trust

Where a Reasoning Attempt Is Actually Stored

Your answers stay in this browser. The server sees a signed token and a submission, scores it against keys that never ship to the page, and keeps no history tied to you, because there is nothing to tie it to.

4 min read

Applies to Novus Learn 0.1.0

Illustration: A dashed device boundary holding attempt rows, with a two-way arrow to a server panel holding a locked key.

Two things that both have to be true

Copy link

A timed challenge has an awkward requirement. The answer key cannot be in the page, because anyone can read the page, and a result from a form whose key was visible means nothing. But there is also no account here and no profile of you, so the server cannot simply keep your history either.

The resolution is that scoring happens on the server and storage happens on your device, and nothing joins them afterwards.

What stays on the device

Copy link

Every attempt lives in this browser's IndexedDB: your answers, the questions you marked for review, your progress, and your final score. The attempt history page reads that same local store, and each attempt carries its own delete control.

Clearing your browser's site data removes all of it. There is no server copy of your history to ask anyone to erase, and no way for another device to see it, because nothing syncs.

The per-attempt delete control is worth using rather than ignoring. An attempt you abandoned, or one you took on somebody else's behalf to show them the format, is noise in a history whose only value is the trend across your own honest attempts. Removing it costs one click and makes the rest of the record mean more.

What the server actually processes

Copy link

Starting a form issues a random attempt identifier and a signed, versioned session token carrying the form, the mode and the timing claims scoring needs. The token is stateless: there is no assessment-session registry and no score history behind it. On submission any server instance can verify the token, score your answers against keys that exist only there, and return your correct, answered and unanswered counts with explanations.

Those endpoints are rate limited, and score responses carry no-store cache headers so an intermediary does not retain them. The server does not link an attempt to a name or an email, because there is none to link.

The signature is doing specific work, and it is worth saying what. It is what stops a submission claiming to be a different form, a different mode, or a session that started an hour later than it did. Without it the timing claims would be assertions from the browser, which is the one participant in the exchange with a reason to misreport them.

Three things the score is never used for

Copy link
  • Career matching. The engine strips reasoning-score inputs before matching runs, so a puzzle result cannot move a career suggestion in any direction.
  • Indexing. Result and history pages are excluded from search engines and are only reachable on the device that made the attempt.
  • Selling or sharing. There is no score database, which is a stronger guarantee than a policy promising not to use one.
Illustration: Answers on the device, keys on the server, and no record joining the two afterwards.
Answers on the device, keys on the server, and no record joining the two afterwards.

Why the stateless token matters

Copy link

A session store would have been easier to build. It would also have been a database of who attempted what and when, sitting on a server, needing a retention policy, an erasure route and a breach plan. A signed token that any instance can verify removes the database and therefore removes all three problems at once.

This is the shape of most privacy decisions in this product: the strongest version is usually the one where the data never exists, not the one where it exists under a promise.

Why the key cannot simply be in the page

Copy link

It is worth being concrete about the thing this design exists to prevent. If the answer key shipped with the questions, anyone could read it before answering: not by breaking anything, but by opening the developer tools that every browser includes. A timed result from such a form would be a measure of curiosity rather than of reasoning.

The same applies to scoring in the browser even without a visible key. Any check that runs on your device can be inspected and changed on your device, which is fine for practice material and fatal for anything presented as a result. So the boundary is drawn at the one place it can be drawn honestly: teaching material carries its explanations openly, and anything that reports a score checks it somewhere you do not control.

What that costs you

Copy link

No cross-device history, no recovery after clearing site data, and no way for us to look up your attempt if something goes wrong with it. Those are real costs and they follow directly from the design rather than from an oversight.

If you want a record that survives, export it. A result export is an ordinary file on your machine and is the only copy that will still exist after a browser cleanup.

  • #reasoning-challenge
  • #privacy
  • #scoring
  • #indexeddb
  • #tokens
← All posts

Consent version 2026-08-21.1

Cookie preferences