DMN/Software

ProjectsSource chat

Source chat modeled on NotebookLM

Upload your own sources, ask questions about them in a chat and trace every statement in the answer back to the passage it came from.

notebook.dmn-software.com Source on GitHub

Demo login: demo@notebook.local

Password demo-citations-2026

Chat answer to the question of what the warranty covers and what is excluded, as two lists with numbered citations after every point, the source Framework Agreement Zephyr 7 on the right with the cited passage from page 3 highlighted
After clicking a citation: the source opens next to the chat, with the passage the citation refers to highlighted. The answer stays in place, so both can be compared directly.

Key facts

As of

Tests
102 in 15 spec files, 11 of them against a real database
Demo
no sign-up, read-only account
Availability over the last 30 days
100.00 %

Every statement has a source

Answers rely only on the sources in the notebook. Every statement gets a numbered citation, and clicking it leads to the passage it came from.

That way an answer can be checked instead of simply having to be believed.

From source to answer

  1. Source added as PDF, DOCX, website or text
  2. Index makes the source searchable
  3. Question asked in the chat
  4. Answer comes with numbered citations
  5. Click on a number opens the passage
Chat answer about a framework agreement, organized by topics such as payment, warranty and maintenance, with small numbered citations after every statement
Answer with numbered citations after every statement.

Search in Postgres

On upload, the text of a source is split into chunks of at most 3000 characters that overlap by up to 450 characters. Each chunk is stored with its vector of 768 dimensions and a full-text index in the same table.

A question searches both ways: for the words in the full text, in German and English, and for similar meaning through the vector. Both rankings are merged by Reciprocal Rank Fusion with k = 60. Only the position in each list counts, with no manual weighting, and whatever shows up in both lists moves up.

The model receives the eight best chunks, numbered, and backs every statement with a number. Numbers without a matching chunk are dropped, the rest are renumbered and lead to the passage in the chat.

Excerpts from the real code, shortened.

Studio

From the same sources the studio generates further formats. It sits on the right, next to the chat.

A notebook with two sources: on the left the list of sources with buttons for file, website and text, in the middle the empty chat with suggested questions, on the right the studio with Briefing, FAQ, Study guide, Mind map, audio overview and notes
A notebook with two sources. Sources on the left, chat in the middle, studio on the right.

Technology

Frontend
Next.js
Backend
NestJS
Data
Supabase with PostgreSQL and pgvector
Search
Vector and full text, merged with Reciprocal Rank Fusion
Access
Row Level Security, queries run with the user's token
Operations
own server, Supabase self-hosted, Caddy in front

Try it

The account is read-only. Chat and studio are limited to a few requests per hour.