Documentation
How Kanto Notes works.
A concrete walkthrough of every core feature with real input and real output. Read it top to bottom in under ten minutes.
Quick start
Sign up to first note in 60 seconds.
Capturing a note
Text and voice input, save latency.
AI enrichment
Auto-title, tags, category, entities.
Semantic search
Find notes by meaning, not keyword.
Ask your notes
RAG chat with cited sources.
All Notes view
Filters, sorts, and restorable trash.
Bring your own key
Use your OpenAI key for AI calls.
Limits & fair use
Free vs Pro caps.
Troubleshooting
Common issues and fixes.
1. Quick start
- Sign up with email + password. Free forever, no card.
- On the New Note screen, type or hit Record and speak. Voice is auto-transcribed via Whisper.
- Click Save. The note is saved instantly.
- AI enrichment runs in the background (~4s). Refresh All Notes to see the auto-title, tags, and category appear.
- Use Search to find by meaning, or Ask Notes to chat over your notes.
2. Capturing a note
The home screen is intentionally minimal. One title field, one big textarea, one microphone button. Save is a single click. Latency from click to persisted row is under 200ms.
Voice input (14 seconds)
"Reminder for the Friday demo: swap the pricing slide with the new one Sarah sent, and mention the AWS migration savings. Also add the customer quote from Acme."
Saved note (raw)
{
"id": "a4c8...",
"title": "Untitled",
"content": "Reminder for the Friday demo: swap the pricing slide
with the new one Sarah sent, and mention the AWS migration savings.
Also add the customer quote from Acme.",
"created_at": "2026-07-15T10:14:22Z"
}The note is queryable immediately — you don't wait for AI.
3. AI enrichment
Right after save, Kanto fires a server function that runs two things in parallel: (1) a chat completion that returns a strict JSON structure with title, category, tags, and entities; (2) a text-embedding-3-small call that produces a 1536-dim vector for later semantic search.
Prompt sent to the model
system: You organize personal notes.
Return STRICT JSON only.
{
"title": string (<= 8 words),
"category": "idea"|"todo"|"meeting"|"journal"|"reference"|"misc",
"tags": string[] (1-5, lowercase),
"entities": [{ "type": "person"|"org"|"project"|"date"|"topic",
"value": string }]
}
user: Reminder for the Friday demo: swap the pricing slide with
the new one Sarah sent, and mention the AWS migration savings...Model response (stored on the note)
{
"title": "Friday demo prep: pricing slide + AWS savings",
"category": "todo",
"tags": ["demo", "friday", "pricing", "aws", "acme"],
"entities": [
{ "type": "person", "value": "Sarah" },
{ "type": "org", "value": "Acme" },
{ "type": "org", "value": "AWS" },
{ "type": "date", "value": "Friday" },
{ "type": "topic", "value": "pricing slide" }
]
}You can override anything from the note's edit view. Overrides are preserved on subsequent enrichments.
4. Semantic search
Search takes your query, embeds it with the same model, and calls the match_notes Postgres function which orders your notes by cosine distance (filtered by your user id and non-deleted rows).
Your query
team ritual for remote workers
Top result
{
"id": "e12c...",
"title": "Async standups experiment",
"similarity": 0.82,
"content": "Trialled a Loom-based standup for 2 weeks with the
remote team — every morning a 90-second video, timestamps in
Notion. Engagement was higher than the sync one..."
}Notice the exact words in your query aren't in the note. The match is on meaning, not on keywords.
5. Ask your notes (RAG)
Ask Notes is retrieval-augmented chat: your question is embedded, top-K similar notes are pulled, and they're passed as grounded context to gpt-5.4-nano with instructions to cite the specific notes it used.
Your question
"What are the risks for the Acme Health rollout?"
Kanto's answer
The rollout faces three risks: a 15% Q3 budget cut, two senior devs out in August, and a hard dependency on Mark's Auth0 migration. Susan's team pushed go-live to September 14, and if the Auth0 work slips, the whole date slips [Note 1].
Sources: [Note 1] Acme Health rollout risks (similarity 0.79)
If the answer isn't in your notes, Kanto will say so instead of hallucinating.
6. All Notes view
The list view is optimized for large personal corpora:
- Filter by keyword, category, or tag.
- Sort by recently updated, created, or title.
- Soft-delete puts the note in a restorable Trash for 30 days, then hard-delete.
- Bulk actions on multi-select.
7. Bring your own OpenAI key
In Settings, you can paste your own sk-... key. From that moment on, every AI operation for your account — enrichment, embeddings, ask, transcription — is billed to your OpenAI account instead of ours.
Settings input
Provider: openai Chat model: gpt-5.4-nano OpenAI API key: sk-proj-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Effect
All future AI calls for your account are proxied server-side using your key. The key is stored encrypted at rest and never sent to the browser. Remove it any time from the same screen.
8. Limits & fair use
Every feature works on every plan — only the monthly caps change. Limits reset on the 1st of each month (UTC).
| Limit | Free | Standard | Pro | Ultimate |
|---|---|---|---|---|
| Notes stored | 25 | 250 | 2,500 | Unlimited |
| AI enrichments / month | 10 | 60 | 500 | 5,000 |
| Semantic searches / month | 10 | 60 | 500 | 5,000 |
| Ask-your-notes / month | 3 | 20 | 200 | 2,000 |
| Voice minutes / month | 5 | 30 | 120 | 600 |
| Max note length | 10k | 20k | 50k | 200k |
| Export (MD/JSON/CSV/SQL) | ✓ | ✓ | ✓ | ✓ |
| BYO OpenAI key | ✓ | ✓ | ✓ | ✓ |
Prices: Free $0 · Standard $2/mo · Pro $6/mo · Ultimate $14/mo. Yearly saves ~30%. See pricing for full details.
9. Troubleshooting
My note still says "organizing…" after a few minutes.
Enrichment failed. Open the note — an error will show at the top. Most often: missing or invalid OpenAI key in Settings, or you're over the Free tier limit.
Search returns nothing for an obviously relevant note.
The note may not be enriched yet (no embedding). Wait 10 seconds or open the note to trigger a manual re-enrichment.
Voice recording won't start.
The browser needs microphone permission. Check the site permissions in your browser's address bar and re-grant access.
I want to delete everything and start over.
Settings → Danger zone → Delete all notes. This purges every note irrecoverably. To also delete your account, use Delete account below it.