111234511124551223451123451123451111234511122334511261356PythonHTTPSELECTJSONGitTablesTable relationshipsJoin resultsTransactionsIndex choicesBuild an order-history backendHolaGraciasPor favorAguaCervezaLa cuentaFood wordsDirections30 Spanish travel wordsTokensEmbeddingsMLPSoftmaxKV cacheSelf-attentionHow they fit
111112121111223333222323334443344545455545556555567666666667777787778788788898888999PythonHTTPSELECTJSONGitTablesTable relationshipsJoin resultsTransactionsIndex choicesBuild an order-history backendHolaGraciasPor favorAguaCervezaLa cuentaFood wordsDirections30 Spanish travel wordsTokensEmbeddingsMLPSoftmaxKV cacheSelf-attentionHow they fit
The Learning Harness

You can learn anything if you break it down into facts to remember, concepts to explain, abilities to perform.

The Learning Harness is a Mac app with an AI tutor that teaches you only what's missing and then keeps checking that you still know it.

Ask me for an inviteIt's free for personal use, and it's in a closed beta for now.

Pick a goal

This one's far off. The tutor plans the concepts in order, and then you do the real task on your own.

This one's close. You get a flashcard for every word you're missing, and the app decides when to bring each one back.

You already know both of these. The tutor connects them, and then you explain how they fit.

These three plans are made-up examples. The numbers at sea show how many lessons away each spot is.

I spent most of a year learning nothing from a chat window

I used to "learn" things by asking a chat window. Explain the KV cache to me. Explain radix attention. Now explain it simpler. It felt great every single time, and then a week later a colleague would ask me about it and I'd have to open the chat again.

It turns out someone measured this. In 2025 Bastani and colleagues gave nearly 1,000 high-school students a ChatGPT-style helper for maths practice. Their practice scores went up 48%, and then on the exam without it they scored 17% lower than classmates who never had it. The same year, Kestin and colleagues gave 194 physics students an AI tutor built around real teaching practice, and their median learning gains more than doubled.

Both used the same class of model, so what was different? As far as I can tell it's pretty simple: one group got answers and the other group had to do the thinking. So I built the tutor I wanted, one that keeps track of what I know and doesn't let me fool myself.

Every goal comes apart into the same three things

It took me a while to get here (I had to redo a lot of this project), but now everything in the app works on these three, and each one gets checked in its own way.

Facts to remember

A fact is exactly one flashcard. You try to recall it, you rate yourself, and the app works out when you should see it again. Some facts come in a chain, like the months of the year in order, and the whole chain gets tested too.

A flashcard in the app, asking for the missing word in a sentence about loss.

Concepts to explain

A concept is 1-5 key facts plus how they fit. On a later visit, before the tutor reminds you of anything, you explain it in your own words. Then the tutor tells you what you got and what's missing, and you can have another go.

A learner's explanation of backpropagation, and the tutor naming the two parts that are missing.

Abilities to perform

An ability is exactly one task plus what a good result is. You get a new version of the task every time, so you can't just remember the last answer. The tutor checks whatever it can see in the chat. For things it can't see (guitar, say) you do it away from the screen and rate yourself, and the app records that as your own report.

A practice task with a typed answer, a button for a hint and a button to send the answer.

It only teaches you what you don't already know

You say what you want in your own words, and you can throw in links, notes and files. The tutor asks a few questions about your goal and what you already know.

If you can show it something, that counts straight away and the lesson disappears from your Plan. If you only say you know it, that earns nothing (sorry). Then you read the Plan, change whatever you don't like and commit to it.

A Plan in the app for a databases goal: four steps in order, then a final task.

Reading a lesson counts for nothing

This is the part I care about most. Verification is king.

Every check adds a dated piece of evidence to a list, and code works out what you know from that list. The tutor can't just decide you've got it. If you needed help, the record says you needed help. If you pass today and fail in a month, the item moves back a step and the history stays where it is.

One good explanation only says you could explain it in that example on that day. It doesn't promise you'll still have it next month, so the app keeps coming back to it. The method page has all the rules.

A goal tree. Each part shows what is known about it, such as Taught, Not checked yet or Recalled.

Learn something once and it counts everywhere

Facts, concepts and abilities are saved once and they belong to you, so if two goals need joins, you only learn joins once. All of it ends up on one knowledge graph, and you can watch it grow.

This one belongs to a made-up learner who's deep into machine learning and is also picking up Spanish, personal finance and sourdough. What they've explained is land. Click around.

What you need

You need a Mac with Apple silicon (M1 or newer) on macOS 15 or later, plus either a ChatGPT account or a Claude Max or Team plan. The tutor runs on your own account, which is why I can keep this free for personal use. Companies and schools need a Commercial and Institutional Use Agreement, so if that's you, get in touch.

Your lessons, flashcards and progress stay on your Mac. Your messages and the learning details the tutor needs go to the AI account you signed in with, because that's where the tutor runs. The app also sends usage statistics that leave out what you're learning. They're on by default, and you can turn them off.

Things I've written about learning

It's in a closed beta right now

A few friends are using it and it still has rough edges. I give out the invites myself, a few at a time, so if you want to try it, tell me what you want to learn.

Ask me for an invite