An AI-assisted workspacefor a consulting firm.

Clients, files, requests, meetings and money in one place, with AI that helps and a wall between every client's information.

The firm is kept anonymous. All testing used made-up companies and data.

Who
A consulting firm with one consultant-owner, a small team and many client companies.
Challenge
Bring client work into one place, and use AI on it without one client ever seeing another's information.
What we built
A private workspace for every client, with AI assistants that can only read what each person is allowed to see.
Status
Running in production on Google Cloud, with every change tested automatically.

The challenge

A consultant works across many client companies at once. Each company has its own files, requests, meetings, invoices and people, and every one of them expects their information to stay private.

AI can save a consultant hours. Used carelessly, though, it can also mix one client's details into another's answer. The firm needed one workspace where AI helps, but every client's information stays behind its own wall.

What we built

  • A workroom for every clientMembers, files, requests, messages, projects and tasks for each client company, with its own home page.
  • The right people, the right accessThe owner invites client members and assigns roles. Team members see only the clients assigned to them.
  • One view of the businessA dashboard of every client, piece of work and payment. It also covers time tracking, invoices, income and expenses, with spreadsheet imports.
  • Meetings that write their own notesMeetings are recorded in the browser, then transcribed and summarized. The recap email goes out only after the owner approves it.
  • An AI assistant for the consultantIt answers questions across clients, summarizes each one and drafts weekly updates. Drafts wait for review and are never sent on their own.
  • A read-only assistant for each clientClient members can ask questions and get answers drawn only from the records they're allowed to see.
  • Set up by talkingA voice conversation with the assistant sets up a new workspace: services, billing style and time tracking. You can interrupt it, just like a person.
  • A safe goodbyeRemoving a client deletes its records, files, AI assistant and encryption key through a reviewed clean-up.

How we kept it safe

The hardest part wasn't the features. It was making sure no person, and no AI, could ever reach information that isn't theirs.

  • Walls built into the databaseRow-level security in PostgreSQL means each person can only ever read their own company's records, even if the app has a bug.
  • A separate key for every clientEach company's files are encrypted with its own key. When a client is permanently deleted, its key is destroyed, so its files become unreadable for good.
  • AI that can't wanderEach client company has its own AI agent with a single read-only tool. Every request carries a short-lived signed permission ticket for that person and company, and it can't be replayed.
  • Clients decide about AIEvery uploaded document has a "Use with AI" switch. If a client turns it off, nobody can override that, not even the owner.
  • Screened, scanned and loggedAI questions and answers are screened, uploads are scanned for malware, and AI activity is recorded in an append-only log.
  • A private databaseThe database has no public address and accepts only encrypted connections, with point-in-time recovery and daily backups.

Under the hood

The technology, in plain words.

Built with

  • Node.js 22
  • Express
  • JavaScript modules
  • esbuild
  • WebSockets
  • Python
  • OpenTelemetry

A fast, lean web app with no heavy framework, and with tracing built in, so problems are easy to find.

Hosted on Google Cloud

  • Cloud Run
  • Cloud SQL
  • PostgreSQL 17
  • Cloud Storage
  • Cloud KMS
  • Secret Manager
  • Cloud Scheduler

Every service runs under its own identity, with no key files lying around.

Security

  • Row-level security
  • Per-tenant KMS keys
  • Crypto-shredding
  • RFC 9421 signed requests
  • mTLS
  • TOTP MFA
  • ClamAV
  • Private IP

Each client is walled off in the database, in storage and in the AI, so one company's information never reaches another.

AI

  • Gemini 2.5 Flash
  • Vertex AI Agent Engine
  • Agent Development Kit
  • Model Armor
  • Embeddings
  • MCP

One agent for each client company, with read-only access, screening on every question and answer, and usage caps.

Voice & meetings

  • Gemini Live
  • Speech-to-Text
  • Text-to-Speech

Natural, interruptible voice conversation, and meeting recordings turned into notes.

Testing & delivery

  • GitHub Actions
  • Node test runner
  • Playwright
  • Dependabot
  • Workload Identity Federation

Every change is tested against a real database, and releases go out with no traffic first.

What do these words mean?
Tenant isolation
Each client company ("tenant") is kept completely apart from the others.
Row-level security
The database itself checks every row before showing it, so people only see their own company's records.
Cloud KMS keys
Encryption keys managed by Google's key service. Here, each client has its own.
Crypto-shredding
Destroying a client's key, which makes their encrypted files permanently unreadable.
RFC 9421 signed requests
A web standard for signing each request, so it can't be faked or changed in transit.
mTLS
Both sides of a connection prove who they are before any data moves.
Model Armor
Google's screening layer that checks AI questions and answers for misuse.
Embeddings
Turning text into numbers so the AI can search by meaning, not just exact words.
MCP
Model Context Protocol. A standard way to connect an AI assistant to a tool, here read-first.
ClamAV
An open-source virus scanner that checks every upload.
TOTP MFA
Signing in needs a password plus a short code from an authenticator app.
Workload Identity Federation
Deploys prove who they are without stored passwords or key files.
Playwright
Automated browser tests that click through the app like a real person.

The result

The firm has one workspace for every client, with AI that saves time and walls that keep each company's information its own. It runs in production on Google Cloud, with every change tested automatically and one-step rollback.

What this means for you

AI can save you hours, but it should never put your clients' trust at risk. The safest setups decide who can see what first, then add AI on top. Whether you're adding AI to client work or checking tools you already use, we can help you do it carefully.

See all case studies

Something similar on your mind?

Tell us what you're building or what you're worried about. A short note is plenty.

Start a conversation