The data-rooms plugin
One room per engagement — a deal, a project — holding everything ingested about it and everything written from it: the sources filed with a weight and a score, the rules the agent reads first, the notes, the timeline, the open items on Review. A collector files clear matches after every sync and asks about plausible ones. What it is, who it is for, and the line that turns it on.
Status: shipped, at version 1.0.0 in vocion-core (packages/core/templates/plugins/data-rooms/).
Moved out of a sample workspace into a plugin on 2026-09-18
(vocion-core#451, Data rooms and proposals, as
plugins); the collector's first production filing is
A data room that fills itself (2026-09-19). Docs: Data
rooms.
# workspace.yaml
plugins: [data-rooms]
What it is
Documents are only as good as the room they are written from. A room is a data_room record —
a business object — anchored to one entity (a CRM deal, a project, an engagement) and collecting
everything about it:
| Part | What it holds |
|---|---|
| Sources | Transcripts, threads, shared documents, each with a weight (three stars: read this before writing anything), the channel, the date, who filed it and the match score when the collector did |
| Rules | What the agent reads first about this room; a correction a person gives becomes a rule |
| Notes, status, timeline | The room's working notes; one dated status paragraph; milestones |
| Highlights | A quote, a metric, a win, a risk — kept for the case study |
| Open items | Asks on the room, decided on Review |
| Artifacts | Decision logs, documents, working files written from the room, with versions |
A sales room persists into delivery: the stage moves, the collection stays.
Who it is for
A team that asks where the transcript, the thread or the document about a client was filed. A
document that has to be written from what is known about one engagement. The same client coming
up across several conversations with nothing collecting it. A deal reaching a proposal or
negotiation stage in the CRM. Those are the plugin's recommend.when lines; it works better with
the HubSpot, Zoom, Gmail, Drive and Granola connectors.
What turning it on adds
- The
data_roomobject type with its schema and classification prompt. - The
data-roomsskill: how to file, weight, log a decision, keep status and open items, and read a room before writing from it. - The Room keeper agent and its standing weekday mission: read what landed, file what the collector left as a question, refresh each active room's status and timeline, file highlights.
- The Data rooms row in the sidebar — a core route the plugin owns — and the collector that runs after every sync.
- The
data-roomsteam, graded on rooms opened and sources filed.
The collector
This is the part that makes a room grow without anyone filing. After every source sync, the collector scores each candidate document against the open rooms from evidence a person can read back — a sender or attendee domain the room collects, the client or codename in the title or the body, someone on the room's cast on the thread — and acts on the confidence rather than asking:
- At or above 0.75, and 0.2 clear of the runner-up room → filed, as an
autosource carrying its score and its evidence. The room shows filed automatically · 92%, with Remove one move away, and a removed document is remembered. - At or above 0.45 → asked, not filed: a Choice on Review with the candidate rooms listed and the recommended one marked. A near-tie between two rooms lands here too, whatever the score.
- Below that → nothing. A sync is no place to ask about every document it saw.
The candidate set is the source's last thirty days, not only what the sync just touched — a room is usually opened long after most of its material arrived. Re-reading the same documents every hour is safe: a filed document is skipped, and an ask is an upsert on the document, so the same question is never raised twice. A deal reaching Proposal stage opens its own room.
What it measures
Rooms opened. Sources filed. The team report grades it from the day it is on.
Where it fits
The proposals plugin depends on this one: a document is written from a room, and turning proposals on turns data rooms on. The wiki keeps what is true of the workspace; a room keeps what is true of one engagement.
Customise it in the workspace: patch the keeper with agents/room-keeper.yaml + extends: core,
replace the skill whole-file at skills/data-rooms/SKILL.md, add rules to a room from chat, or
tell the keeper what a good status reads like — it becomes a learning. Every fixture in the plugin
and on this page is fictional; Metacto is the seller.