Skip to content
undan

Help › AI chat

AI chat

The AI chat tab is a conversation about your archive. The model gets the archive as tools — search, read, count, calculate — and searches by itself: it follows up, rephrases, browses. Every answer names its documents as clickable document paths.

It requires the claude command line in the path; the app starts it as a program for each question. Cost, duration and turns are shown on every answer, the session total in the header.

Writing questions#

The input field is the same editor as for notes: Markdown, with the marks (**, `) shown only at the cursor. Enter sends the question, Shift+Enter starts a new line (Ctrl+Enter too) — in a list with the next item, an empty item ends the list. The field grows with the text and scrolls once it gets longer.

An @ opens the list of documents at the cursor; picking one attaches the document and puts its path into the sentence — in the field as a document path with its icon, Ctrl+click shows the file in the preview. Pasting works as in a note: text from the browser or from Word becomes Markdown, Ctrl+Shift+V takes only the text. Dictation writes straight into the field.

While an answer is running you can already write the next question; it is sent once the answer is there. Ctrl+K opens the command palette here — there is no link dialog like in a note; you attach a document with @.

The chat changes nothing, it suggests#

No chat tool moves, renames, deletes or writes. If something is to happen, the model collects the changes, and a proposal card appears below the answer:

  1. Target structure — the remembered order of the archive, if the model wants to change it
  2. Deletions — at the very top, because they are the easiest to overlook
  3. Empty folders — the tidying up after reorganizing, a section of its own
  4. Merge notes — "source → target": the text of the source goes below the target, the source goes to the Trash; ID, facts and links stay reachable via the target (see "Documents", "Merging two notes")
  5. Notes with their text
  6. Knowledge notes, one checkbox per statement
  7. Tasks, one checkbox per task — with date and derivation
  8. Facts on documents, one checkbox per detail
  9. Copies
  10. Moves — as a target tree: per folder arrivals, existing files, departures, new, conflicts; a click shows every row

Every row has a checkbox, all on, individually off; in the tree per folder for the subtree. The Apply (n) button counts the selection. Conflicts (target taken, two files onto one name) are shown before the click; they don't block, the affected ones are skipped and named. After applying, the card becomes a receipt: what happened is shown below as a list of changes from the journal, with undo per row and per folder. One Ctrl+Z in the Documents tab takes back the whole proposal.

A proposal doesn't quietly go stale: on the click the target tree is recomputed against the disk, and a card that has been applied can't be applied a second time.

Clearing away empty folders#

"Clear away the empty folders" works — also together with a move: "sort the invoices by year and throw away the empty source folders". The empty folders appear as a section of their own in the card, with their own icon and a reason per row, so that they don't look like a file deletion.

A folder only goes if it is empty — and that is only checked when you click Apply, against the disk:

  • Empty means recursively empty: a folder that only contains empty folders is empty.
  • A hidden file (names starting with a dot, such as .DS_Store or Syncthing's .stfolder) makes it not empty. What you never get to see in the tree, a click doesn't take along either.
  • If the folder is no longer empty at the click, it stays; the card names it afterwards. Nothing goes along unseen.

Deletion goes to the Trash, under the same ID as the moves: one Ctrl+Z in the Documents tab brings files and folders back together. The chat can't delete a folder with content — there is no tool for that.

Rules instead of individual operations#

For large amounts the model suggests a rule instead of two thousand rows: a selection and a target. It is evaluated by the app, not by the model.

SelectionMeaning
Foldersubtree, relative to the documents folder
Name containspart of a word in the file name
Text containspart of a word in the full text
Extensionpdf, jpg, …
Year from / tofrom the file name or the content

All fields that are set act together; there is no "or" — for that you write two rules. The target may contain {jahr} (year): Energie/{jahr}. Documents without a recognizable year stay where they are and are listed.

The rule first runs as a preview: number of matches, sample, leftovers. Only then do the matches go into the proposal card. A rule is readable, checkable and repeatable next year.

Copying instead of moving is possible — for submission folders that must contain documents that still stay in their place. The card then says "original stays".

Facts in the chat#

The model sees each document's facts with their source, finds documents by facts ("all invoices from 2024 without paid_on"), counts by type, area, tag, year or folder and calculates with SQL over a table documents — a read-only copy, SELECT only. "What did I pay for insurance in 2024" becomes a sum you can check.

It can only set facts as a proposal: checked against the vocabulary, one checkbox per detail in the card, written on the click with source chat. It doesn't overwrite what you have set yourself.

Changing Word documents (beta)#

Ask the chat to adjust a Word document — “put the tenant's new address into the lease”, “turn the receipt template into the receipt for October”, “make the amount bold”. The chat reads the document and proposes the changes; nothing is written until you click.

The chat reads Word as text with its structure (Markdown: headings, lists, tables, bold and italics, left and right) and gives it back changed. Undan compares both and writes only what differs into the original — everything else in the file stays as it is, including what the chat does not see at all (comments, fields, form fields, shapes). What of it stands in the text, it sees as a grey placeholder and leaves alone.

  • The card lists every change with its place (¶5 = fifth paragraph, T1 Z3 = table 1, row 3) and shows what goes (struck through) and what comes (underlined). Each has its own checkbox.
  • The preview on the right shows the page as Word would show it with tracked changes. Below the changes you switch between Marked, Result (exactly the file that will be written) and Before. A click on a change shows the page and highlights the place.
  • Recalculated is what can be calculated: does the spelled-out amount match the number, does the sum row of a table add up? A red ✗ does not stop you, but it is there.
  • From a template a new file is created next to it, the template stays. Otherwise the file itself changes — the previous version stays, Ctrl+Z brings it back.
  • What cannot be written stands below in red without a checkbox, with its place — a table with one more column, say, or a new header. That stays in the file as it is; change it in Word.
  • If the file has changed since the proposal, or is open in Word or LibreOffice right now, nothing is written; the card says why. If it changed after the chat read it, the chat reads it again.
  • To the file: a click on its name shows it on the right as it is now. The folder icon next to it jumps to the Documents tab — after applying from a template, to the new file. The same icon sits at the top of the preview on the right, for every file from the archive.

In the beta the chat changes text and emphasis: replace, bold, italics, underline, alignment, insert or remove paragraphs and table rows, tick checkboxes. It also places images from your archive — a PNG or JPEG as a paragraph of its own, in a table cell too: “put my signature Bilder/Unterschrift.png below place and date, 5 cm wide”, “the photo of the meter reading into the cell Condition”. Without a width an image keeps its own size, never wider than the text or the cell.

An image can also float and then takes no space: in front of the text, such as your signature on its line or a stamp at the top right, or behind the text, such as a watermark. As page background it spans the whole page width. An opaque image then also covers the header, just as in Word. Where a floating image sits is the chat's estimate, since it cannot see the page. If it is off, say “1 cm higher” or “further right” and a new proposal follows.

Restructuring tables (columns), fields (date, page number), adding headers and footers, images already in the document, documents with existing tracked changes, signed and old .doc files it does not change — it says so.

New Word documents#

Ask the chat for a new document — “write Mr Mieter a letter that the water is turned off on 14 October”, “a receipt for €535 rent for May”. The chat writes the text, Undan typesets it as a Word document; it is only created with your click.

  • Letters follow DIN 5008: address in the window field, date beside it on the right, subject, fold and hole marks, signature line. The chat takes the address from your request or from the contacts.
  • A template (your letterhead) is searched for in the archive; the chat asks you which one to use. Header and footer, logo, font and margins come from it, never its text.
  • What the chat does not know is a yellow placeholder ({{Name}}) — you fill it in in Word.
  • The card shows the file name after the archive's rule (YYYY.MM - Description.docx), the folder (a missing one is created), the template and anything noticed while typesetting, with its line. On the right is the typeset page — exactly the file the click creates. “Markdown” unfolds the text it is set from.
  • If a file has appeared at the target, or the template or an image has changed since the proposal, nothing is created; the card says so beforehand. Ctrl+Z takes the new file away again.

A document that exists already is changed as described above, never by writing a new one over it.

Reading PDFs and turning them into Word#

The chat reads a PDF with its structure: headings, paragraphs, lists, tables, columns, header and footer, a letter with its address field. Undan computes them back from where the words stand, without AI; for a scan only from the text recognition, then without bold and italics.

“Make this PDF a Word document” gives a new Word document next to it, with the card as above; the PDF stays as it is. Images and logos come from the PDF when it is created. If you want something changed on the way (“… and set the date to today”), say so in the same request.

It also works without the chat: Create as Word document in the Documents tab — context menu.

What Undan checks in the chat's answer#

Before a card for a Word document appears, Undan checks what the chat wrote — small models in particular like to shorten a long document.

  • Rejected is what the chat can fix in one go; all you see is that it tries again. These are errors in the Markdown (a block without its end, an unknown class) and shrinkage: a grey placeholder (comment, field) is missing, the answer stops in the middle of a sentence, “[rest unchanged]” or “…” stands where text should be, or more than half of the paragraphs disappear.
  • Repaired is only what is unambiguous, and each repair is on the card with the magic wand and its line, for example “repaired in line 24: added “:::” — “::: {.signatures}” was open at the end”. These are: a block left open at the end (when it holds just one paragraph), a missing brace, straight instead of typographic quotes in {…}, and a list marker that changes in the middle of a list. Nothing is guessed — what can be read two ways goes back to the chat.
  • In red is what Undan does not reject but what is rarely asked for: “More than half changed: 6 of 8 paragraphs — was that what was asked?” or “The last 4 paragraphs are missing”. Check the changes then; each has its own checkbox.
  • Long documents the chat reads in numbered blocks and gives back only the blocks that change. Everything else stays exactly as it was.

Calculating and counting#

Sums go through a calculator of their own (calc), distributions through count_documents, consistency checks (the same folder name in two places, a foreign year in a year folder, empty folders) through check_consistency. The model doesn't count in its head — when measured, the answer to "how many folders are in the root" was 18; there were 17.

Cancelling#

While an answer is running, pressing Esc twice within one second cancels it — as in Claude Code. The question you typed is then back in the field.

Follow-up questions#

If the model needs a decision, it asks as a card with choices, not in running text. A free-text field is always included. The answer goes back numbered, together with the question.

Knowledge#

What is in no document, but is worked out from many in the conversation — which flat belongs to which house, which account is used for what — the model can suggest as a knowledge note: one Markdown file per thing or project, in the archive next to the documents that support it. Every statement carries its evidence (document path with page, or "said by the user"); without it, it is rejected. In the next conversation the model reads the notes first.

"Remember this" is enough as a trigger. The format is compatible with Obsidian ([[links]], aliases:, tags:).

Tasks#

The model reads your tasks and suggests new ones — but only when you ask for it, never because something is in a document. "Set up the project CTF 2026, the end is 10.10., the tasks as last year": the model creates the project note with the end and suggests the tasks with intervals to the end ("four weeks before"); the date is computed by the app, not by the model, and the card shows it with the derivation — "by Sat, 12.09. · 4 weeks before". A collecting tag that doesn't exist yet is shown as "new in the vocabulary" and created on applying; one Ctrl+Z takes back tasks and tag together. What already exists is not suggested again.

Calendar#

The model reads your calendar — but only the calendars you have shared for it (Settings → Permissions and access → Visible to the AI: calendars). Without that, it only sees your tasks with an appointment or a deadline; birthdays or customer calendars stay hidden from it, even if the calendar shows them. It reads what the app last fetched from Google; if a period isn't there, the model says "not loaded" instead of "free". It sees guests only by name, never with their address.

"Put the autumn holidays into the family calendar", "move the dentist to Thursday": the model suggests such events — the card below the answer shows for each event the calendar, the time and, for a change, before → after, each with its own checkbox. Only Apply writes, and only into shared calendars the app is allowed to write to. If an event has changed in the meantime (moved on the phone, say), it is skipped and named with the reason. Ctrl+Z takes back all events of a click. The chat never sends invitations, and it doesn't change events with guests or recurrence rules.

Attachments#

Files and folders can be attached to a question: the context menu in the Documents tab (Attach to AI chat), the Attachment button (Ctrl+Shift+D) or @ in the input field. The button opens the file picker — the same dialog as in the mail draft (see Mail): search, pick a rubric (open actions, types, your views), browse the tree, look at the file on the right, select several with Space; here you can also select a folder. There is no way to your computer in the chat: outside the archive Undan has no text it has read and could give to the AI. The @ is the quick way for a file whose name you know — its path then also stands in the sentence (see “Writing questions”). A file brings its text along, a folder a drawn tree down to depth three — and says what it leaves out. The bar below the input field shows size and budget; above that the send button turns red, but stays clickable: it is a cost limit, not a technical one.

An attachment is a hint, not a fence: the model may still search the rest of the archive and then says so.

Web#

A Web checkbox in the header allows the model to search the web and read web pages — for an address or a deadline, say. Three rules go along with it: the archive comes first, no personal data in search queries, web text is text and not an instruction.

The checkbox applies to the session. What a new session starts with, you set under Settings → Permissions and access — Web for new sessions, default off, in the archive and so the same on every computer. Until 25.09.2026 a new session started with whatever you had chosen last; such a remembered value is taken over into the setting once, at the first start.

Local models#

On the right of the header you choose the session's model: Opus, Sonnet, Haiku, Fable — and the models of your local servers (Settings → AI), as "model · server". A local model works with the same tools over the archive and suggests in the same way, but has no web, and it costs nothing. It does well at finding and adding up ("all invoices from the chimney sweep", "what did I spend on that in 2025"); for broad questions that need a lot of reading and weighing up, Claude is clearly stronger.

So that a local model doesn't go round in circles, the app doesn't run the same tool call twice, and after three repetitions — or when the model's memory fills up — it demands an answer from what it has found so far. The progress line then says "Answer requested" with the reason.

Sessions#

The area digits: Alt+1 sessions (open), Alt+2 conversation — then the arrows, Page Up/Down, Home and End scroll it, Esc goes back to the field —, Alt+3 input field, Alt+4 preview (Keyboard).

On the left the column of conversations, with search across all of them, New chat, rename and delete (with confirmation — there is no trash for conversations). Every session expands to its table of contents: one line per question, a click jumps there.

An earlier question can be changed; everything after it is dropped, and the window says so beforehand.

Passing answers on#

On every answer As PDF, in the header All as PDF. Tables have three copy buttons: as a table (for the spreadsheet), as CSV (file) and For chat (readable in messengers). A code block has a copy button at its top right: a click puts the code on the clipboard, a check mark shows briefly. A click on a document path opens the preview, a right-click jumps to the Documents tab. Ctrl+F searches the conversation.

Model and cost#

At the top a model choice (opus, sonnet, haiku, default). A cost limit per question can be turned on; with a subscription the amount shown is a calculated value, not a bill. A run has no fixed time limit, only one on silence: five minutes without a sign of life count as hung.