For curious people

Under the hood.

Quern is built on a handful of rules, and each is held by a . A small model on your phone does what it can first; the server keeps nothing an AI job reads; every answer an AI writes is checked before you see it.

In numbers

Measured, not promised.

37 ms
Share to quick-note card. Profile build on an emulator, 500 notes.
24 MB
The meaning model on every phone. Works offline.
0 / 107
Products and brands wrongly overruled, on real notes.
10,948
Automated tests, counted 2026-11-07. Run three times green before release.
Flutter app · Android (iPhone on the way) Shared Dart core Python gateway + pipeline · serverless Postgres ·
The layers

One home for every rule.

Each rule lives in exactly one layer, so it can’t be right on one screen and wrong on another. Tap a layer to lift it.

Corelayer 02 of 06

Owns: The rules, in pure Dart: the ledger, search, sync, blends, sealing, understanding names.

Held by: It imports nothing platform-specific.
AI hides every vendor and model; each is declared no-train or may-train.
Data is the only layer that talks to the database.
Platform holds every phone plugin, Android and iPhone.
Understanding reads links by one shared set of examples.
The ledger

Why Undo is real.

Everything you do is an event, appended to a and never edited. Everything you see is a . So Undo is one more event, and every version is still there.

281,024random-sequence runs (2026-10-09). No case where two phones ended up different.
Share to note, with zero AI
37 ms

The first note never waits for a model. The phone writes it from what it can read without AI: title, source, caption, creator, length. Over a limit, the save is kept and only its AI work waits.

the note’s there before any AI starts
Time to a notelog scale · each line is 10× longer
Quick noteno AI · on the phone
0.037 s
AI note · articleserver + checks
≈4.4 s
AI note · reelserver + checks
≈5.4 s

Quick note: profile build on an emulator, 500 notes. AI notes: median of five, our local stack with outside services simulated at production’s measured times. Real low-end phone numbers to come.

Our own model first

Each job climbs only as high as it needs.

Each job uses the highest level it can and falls back on its own. Level 0 always answers, so no feature is ever empty because a model failed.

2
AI that writesThe phone’s built-in AI where there is one, else online AI within your limits.
phone or server
1
Our modelA 24 MB meaning model (8-bit) that ranks, matches, groups and picks.
phone · offline
0
RulesWord match, counts, the note’s own facts, on-device text reading.
phone · always
The Ask evaluation24 questions worded unlike their note
79%
rules alone · 19 of 24
92%
with our on-phone model · 22 of 24
Before
After
foundnewly foundnot found+3, and none lost
Trust and the AI

One validator. One guard. No exceptions.

One validator
For every AI output on the server; one guard for every answer on the phone. Invalid output is discarded whole.
Not in the source
What a source didn’t say is said plainly, never filled in. Measured by evaluation.
Grounded
A citation that points at nothing is dropped. Numbers and names must be in what the model was given. Coordinates, days and times never come from a model.
Fenced
Saved words are data, never instructions. Every prompt fences them (gate).
0of 107 products and brands wrongly overruled

Each dot is one name from real notes. Before the AI’s reading of a name is overruled, at least two reliable public sources must agree.

Privacy routing and private compute

The server works on one request, keeps none of it.

Every AI provider is declared or may-train. Private content, anything but a public link you shared, is routed only to no-train providers, and a gate fails the build if any production route could break that.

TODAYThe live server still runs a testing setup of free tiers, which may train on what they’re sent; a locked note is never sent.
Our server keeps nothing
Every database write the AI code can make is listed in a gate test with why it keeps no words. A new write fails until reviewed. The server’s AI routes are tested to log no words.
Sealed notes
Today, locked notes only, with a key from your passphrase (Argon2) and a recovery code. The server never builds a search index for a sealed note.
Who can read what, today

Guaranteed, and not.

HELD BY GATE TESTS
The server keeps no request’s words; private content never reaches a may-train provider in production; locked notes are never read by the server or sent to AI; the app holds no vendor key.
NOT IN OUR HANDS
The provider’s servers see the request while it runs, under their terms, named in our Privacy Policy.
WHAT THE SERVER STILL KNOWS
That you saved something, when, its kind and size, and the counts your limits need. Other notes sit behind row-level security, so a person with operator access could read them; sealed notes for everyone closes that.
NOT HARDWARE-ATTESTED
Private compute is a rule our code keeps and our tests check, not hardware you can verify.
How we test

10,948 tests. Three green runs before every release.

✓✓✓the whole suite, three times, before production
10,948
counted 2026-11-07
Server3,256
Core3,136
App4,556
WHAT WE DON’T PROMISE

Every rule here is a test.

AI can still be wrong; every AI note is labelled and can be reported. Check anything that matters. If you find a rule we break, tell us: <<SUPPORT_EMAIL>>