Sign in

How AikNote works

Every note in AikNote is a text file. You drop something in, a model reads it and decides what kind of thing it is, and the answer is written back into the same file as plain Markdown. The model chooses the formatting; the file stays text you could open in any editor. Three steps: read, classify, present.

1. Read

What you drop is saved at once, exactly as you wrote it. Then a background job reads whatever sits behind it:

2. Classify

One model call gets everything it needs: what was dropped, what was read, and the list of card types. It answers with a title, tags, a category, a type, and the card’s sections for that type.

Then plain code checks every section against the source before anything is written. A number has to appear in what was read. A quote or a code block has to be there word for word. A video timestamp has to be a real passage. Anything the source does not support is dropped, so the card can only shorten and arrange your note, never add to it.

3. Present

The sections are written into the note as ordinary Markdown, card first, with what you dropped folded underneath. This is a real one, a recipe dropped as a single line (its front matter trimmed):

---
title: Lemon Cake
extra:
    how: wrote
    type: recipe
---

## Ingredients

- **3** eggs
- **1 cup** sugar
- **2** lemons
- **200 g** flour

## Steps

1. Preheat the oven to 180°C. Combine the eggs, sugar,
   lemons, and flour, mixing until smooth. Pour the batter
   into a prepared cake pan.
2. Bake for 40 minutes, or until a toothpick inserted into
   the center comes out clean. Let cool before serving.

:::details title="Original"
Lemon cake: 3 eggs, 1 cup sugar, 2 lemons, 200g flour,
bake 40 minutes at 180C
:::

The app draws that file with the layout its type names. Ticking a box edits a line. Editing the card edits the file. Exporting your notes gives you these files.

Card types are YAML

A card type is a few lines of data. There are 30 built in. This is the recipe:

key: recipe
label: "Recipe"
family: recipe
area: food
version: 1
hint: "cooking from text or a video; sections Ingredients
  (list, quantities exactly as given) and Steps (steps),
  servings or times as facts only when stated"

And a meeting:

key: meeting
label: "Meeting"
family: plan
area: work
version: 1
hint: "meeting notes or a transcript; facts for date and
  participants when given, Decisions (list), Action items
  (checklist), Open questions (list)"

That is the whole contract:

A type never carries code or HTML. The layouts are code and fixed; types are data. So a new kind of card is a new YAML document, not a release, and whatever the model writes into it passes the same checks as every other card.

Card types that grow

When none of the types fits a note, the model writes a new one, in the same YAML, starting from the closest type it has. It describes a kind of note, never the note itself: a new type that carries a name, a number or a place from the note is thrown away. One much like a type that exists already is that type.

A new type starts on its own note, which says so: Keep or Try another. Any card can also be switched with Change card. Those choices are the only vote. Once people in more than one organization keep or choose a type, it is offered to everyone; one people keep switching away from is retired. Nobody approves a type by hand.

Every so often the types people have proven are written back into the built-in YAML, as a change to review like any other.

Why it is built this way

Everything is a text file. The AI decides how it looks.

Try AikNote