One assistant, 6 different answers.
The same question, asked by two people in different roles, returns two different answers, and that is the point. Access is applied while the records are being searched, not by hiding part of an answer after it has been written.
Who sees what
Taken from the roles on record, in the company's own words, with a line on who each one is. The assistant reads the same list the database does.
Owners / ExecutivesFull access
Everything.
The owners. They ask how a deal turned out, which counties earned their money, and what the portfolio did over a year.
Accounting
Authorised financial and accounting information.
Keeps the books straight. Asks what was paid, what came back, and which deals have two figures that disagree.
Acquisitions
Acquisition, property, comparable sales, deal and relevant financial data.
Buys the houses. Asks what comparable properties sold for and how similar deals have worked out before.
Construction
Projects, scopes, contractors, vendors, budgets, historical construction costs.
Runs the rehabs. Asks what a scope of work cost, which contractor did it, and how the budget held up.
Property Management
Rentals, tenants, maintenance, property information.
Looks after the rentals. Asks about tenants, maintenance history and the property itself.
VAs / Other
Only what a specific responsibility requires.
Support staff. Sees only the records the task in front of them needs, and nothing else.
Filtered on the way in, not on the way out
The difference matters. A system that retrieves everything and then trims the answer has already put the restricted text in front of the model, and is one prompt away from repeating it.
The role is decided first
Before a single record is read, the question is attached to the role asking it. Nothing downstream can widen that.
The filter goes into the query
Not around it. The database is asked only for rows whose allowed-roles list contains yours, so the others are never returned to the application at all.
Retrieval runs on what is left
The search for relevant passages happens inside that already-filtered set. A restricted passage cannot come back as the best match, because it was never in the running.
The answer is written from those passages only
The model is handed the retrieved passages and nothing else, so it has nothing to repeat that your role was not shown.
“The records do not answer that” is sometimes about you
If your role cannot reach the figures a question needs, the assistant will say it cannot answer, not that the figure does not exist. That is the filter working correctly. An owner asking the same question will get the number.
Every question is logged
Who asked, as which role, and which records came back. The audit trail exists so that a question about access can be answered with evidence rather than with an assurance.
Your role comes from your sign-in
Everyone signs in with their own DBC account, and the role is attached to that account by an executive. The assistant reads it from the account on every question; nobody can pick a role they were not given. Executives can also view the assistant as any role, to see exactly what each one is shown.
Your conversations are saved to your account, so they are there on any device you sign in from, and every question is recorded against the person who asked it.
See it from your own seat.
Open the assistant, set the role to yours, and ask for something you would not expect to be allowed to see.