Paperbrief
Conversations

Conversations

Every chat round-trip is saved automatically under your organisation. Conversations persist forever (no expiry today) and are visible in the Conversations section of the Paperbrief sidebar, sorted by most-recent activity.

Per-org, not per-user (today)

Anyone in your organisation can see every conversation the organisation has ever had — there's no per-user privacy. This is a deliberate v1 choice to keep the model simple; per-user privacy + shareable links are on the roadmap.

If your team uses Paperbrief for confidential per-user research and you need privacy, tell us — we'll prioritise.

What's stored per message

For every turn (user + assistant):

  • The text content
  • The list of documents in scope when the turn was sent
  • For assistant turns: the citations + token-count breakdown

The document_ids are recorded per-message — so if you change the document selection mid-conversation, past messages still show the correct attribution.

Renaming + deleting

  • Rename: backend endpoint exists, no UI today. Use a sensible auto-generated title (first 60 chars of your first question) until we ship the rename UI.
  • Delete: hover any conversation in the sidebar → click the × → confirm. The conversation row + all its message rows are removed (FK CASCADE). S3 traces: none — conversations don't touch S3.

Starting fresh

Click + New chat in the sidebar. The chat panel clears; the first question you send creates a new conversation row. The new conversation's URL gains a ?c=<id> query param so the page state is shareable + reload-safe.

What the model sees across turns

Nothing beyond the current question. Every turn is a fresh call:

  • System prompt (always the same)
  • Top-K chunks retrieved for THIS question's selected documents
  • THIS question's text

No conversation history is included. If you ask "what about page 5?" without context, the model has no idea what "that" refers to — it'll respond as if it's the first message.

This is deliberate to keep retrieval quality high (history can mislead the embedding search) and tokens predictable. If you want conversational memory ("remember what we discussed yesterday"), tell us and we'll prioritise.

Hydration on reload

When you click a saved conversation, the full message history is fetched in one API call and rendered with the same components used for streaming. Citations + token counts are restored from the database — same shape as the SSE events, so the renderer doesn't need a separate path.

Limits

  • No max conversation count per org.
  • No max message count per conversation.
  • No max age — conversations live forever unless deleted.

If you have thousands of conversations and the sidebar becomes unwieldy, search is on the roadmap. For now, the conversation list is sorted by last_message_at DESC with the most-recent at the top.