Skip to content
Rubatt

Conversation-first AI secretary

Synca

A secretary that lives inside the conversation, with per-user vector recall.

Stack

  • FastAPI
  • Next.js
  • pgvector
  • PostgreSQL
  • Claude API

How we built Synca

The problem

Founders were losing decisions inside conversations. The commitments existed, but only in threads nobody re-read, so follow through depended on whoever happened to remember. Every tool offered to fix this asked people to leave the conversation and maintain a second system, which is exactly the behaviour that was already failing.

The constraints

  • Recall had to stay relevant as history grew, not degrade with volume
  • One user’s conversation history could never surface in another user’s results
  • The system had to explain why it surfaced something, or nobody would trust it

What we built

A secretary that reads the thread rather than sitting beside it. It extracts commitments and the context around them, and surfaces the right piece at the moment it matters instead of when somebody thinks to ask. The interface is the conversation itself, so there is no second system to maintain.

The decision that mattered

Scoping enforced at the query layer, not after retrieval

The obvious way to build multi-user vector recall is to search a shared index and filter the results by user. It is simple, it appears to work, and it is wrong: it means every user’s embeddings are candidates for every query, so correctness depends on a filter that has to be right every single time. We pushed the scope into the query itself, so material outside a user’s own corpus is never a candidate in the first place. That also made recall better rather than worse, because scoring runs against a small, coherent corpus instead of a large diluted one.

The outcome

Recall that stays relevant as history grows, because scoring runs against a user’s own corpus rather than a shared index that dilutes with every new account. The retrieval trace is surfaced with each answer, so a wrong result can be diagnosed as a retrieval problem or a reasoning problem in about a minute.

Recognise this problem?

The architecture usually transfers even when the sector does not. Tell us what you are trying to automate.