Case study 15 · Business systems and integrations
Meeting records and file permissions, modeled as a graph
In a white-label meeting platform for healthcare and finance, access to a file depends on a chain of links. The product was sold to an American bank.
Product sold to an American bank
The story in 5 steps
Stack
- Neo4j
- WebRTC
- AWS Transcribe
- React
- DocuSign
01 · Context
The platform runs remote meetings and is built around what each meeting leaves behind: who attended, what was said, which documents were in play, who was allowed to see them and who signed.
The platform runs remote meetings and is built around what each meeting leaves behind: who attended, what was said, which documents were in play, who was allowed to see them and who signed.
In a team of five, I chose the database, modeled the domain, and built file management, transcription, recording and post-processing.
The product was sold to an American bank.
02 · Could not change
In healthcare and finance, the video call is a commodity and customers pay for the record of the meeting, so the record is what the system has to guarantee.
In healthcare and finance, the video call is a commodity and customers pay for the record of the meeting, so the record is what the system has to guarantee.
The hard question is whether a person may open a particular file, and the answer depends on a chain: they attended a meeting, the meeting is linked to a document, the document has versions, a version carries a signature, and permission can come either directly or through the meeting. A document can also belong to several meetings at once, so it cannot simply be filed under one of them.
In a relational schema, every such permission check is a recursive join, which slows down with every new type of relationship and gets harder to maintain with every new rule.
03 · What we did
A graph data model in Neo4j. I modeled people, meetings, files and signatures as nodes, and attendance, attachment and permissions as edges.
A graph data model in Neo4j. I modeled people, meetings, files and signatures as nodes, and attendance, attachment and permissions as edges. There are four permissions: read, write, download and delete. A permission check becomes a traversal of the graph, which is the operation a graph database is built for.
Google models access control as a graph too, for the same reason, so this is a recognized pattern.
Files added during the meeting. A document can be uploaded in advance or attached while the meeting is running, and the moment it is attached it has to appear for everyone present, with the right permissions for each of them. The graph therefore changes live during the meeting, while people are watching.
Transcripts that feed the next meeting. Transcription runs in real time with speakers separated, and the finished transcript goes into the agenda of the next meeting.
Whiteboard saved as objects. Strokes, shapes and text are stored as separate elements with their own properties, not as a flat image, so the board can be reopened and edited after the meeting.
Guest access, because of HIPAA. A patient should not have to create an account to attend a consultation, so meeting HIPAA meant building a feature: patients can join as guests.
A browser extension with one permission. The extension is optional, is used for starting and reviewing meetings, and has no access to media at all. Extensions for meeting platforms tend to ask for broad permissions, such as tab capture, the microphone and access to every page. In a product sold into healthcare, broad permissions cause three problems: a harder review in the extension store, a warning at install, and a question in the customer's security review that has no good answer.
04 · Result
Permission checks answered by traversing the graph, however long the chain
- Permission checks answered by traversing the graph, however long the chain
- Documents that belong to several meetings, with version history and signing
- Real-time transcription with speakers separated, feeding the next meeting's agenda
- Guest access that satisfies HIPAA
- Product sold to an American bank
05 · Differently
Five of us built broadly for eight months, and no shared component layer ever emerged.
Five of us built broadly for eight months, and no shared component layer ever emerged. The data model was the product's strength, but the front end ended up with three UI frameworks and four dropdown libraries in the same codebase. We would build the shared component library first, which is what I did on the next project.
Related services
The services that draw on this work.
- Web developmentMulti-tenant and white-label SaaSA white-label meeting platform for healthcare and finance. Whether someone may open a file depends on a chain of relationships: the meetings they attended, the documents linked to those meetings, and the versions and signatures of each document.
- AIApp audit and rescueFor a healthcare and finance meetings platform, the server works out who may open each file by following the links between people, meetings, documents and signatures.
- Backend, data and integrationsAPI and backend developmentA permission model stored as a graph, so a question like “may this person open this file?” is answered by traversing it, however long the chain of links behind the answer.
- Backend, data and integrationsPermissions and RBACA meeting platform for healthcare and finance, where someone may open a file because they were given access or because they attended a meeting it is attached to, and one document can belong to several meetings. Every person, meeting, file and signature is a node in a graph, and a permission check follows the links between them, however many there are.
- Regulated and sensitive systemsHealthcare software under HIPAAA white-label meetings platform for healthcare and finance, with people, meetings, files and signatures stored as a graph. Whether someone may open a file is answered by tracing the connections from that person to the file.
- Regulated and sensitive systemsSecurity reviewOn a remote-meeting platform sold into healthcare and finance, file access follows a graph of people, meetings and documents, and the browser extension requests a single permission, without media access.
- AISupabase reviewIn a white-label meeting product for healthcare and finance, the right to open a file depended on a chain through a meeting, a document, its version and a signature. One condition on a row could not express that.
Related writing
Posts that came out of this project.
Case study 15
Working on a similar problem? We reply within one business day.
The first call takes 30 minutes, and you’re under no obligation.