
Multi-Assistant AI Platform.
One platform, several independent clients, several delivery constraints
Year.
2025
Employer.
Sagacify
Role.
Tech Lead
Context.
Several client organizations needed an internal, conversational interface so their teams could get answers and run tasks against their own data, without that data ever leaving their infrastructure. Each one had a different delivery constraint: a standalone web app, an embeddable widget for an existing website, or a dedicated SharePoint integration for one client's intranet.
Challenge.
Own the full-stack platform (API, frontend, real-time delivery, and every client-specific integration) behind several independently branded assistants, while keeping the cost of onboarding a new client, or a new assistant for an existing one, low enough for a small team to sustain.
Decisions & trade-offs.
Shared Streaming Layer: Redis Pub/Sub wrapped in a small EventEmitter-based service, so the rest of the API could subscribe to a channel without touching the Redis client directly. It streams each assistant's response back to the user live, as it's generated, and the same streaming layer serves the web app, the embeddable widget, and the SharePoint integration alike, so none of the three needed its own version of it.
Two Assistant Types: Assistants come in two flavors under the hood: a simple conversational one for open-ended chat, and a structured one built around a multi-step form with typed inputs and outputs at each step. Setting up a new structured assistant is mostly a matter of describing that form as data, reusing the same set of input types (text, dropdown, file upload, and so on) rather than building new components each time.
Federated Identity per Client: Keycloak sits in front of each client's own Active Directory instead of a custom integration per client, so onboarding a new organization's users is a configuration step rather than new authentication code, whatever identity provider they already run.
Flexible Delivery Layer: Delivery adapts to where a client needs the assistant to live: a standalone web app, a framework-agnostic web component that embeds into any existing page, or a SharePoint SPFx widget for an intranet. Supporting all three meant investing in one flexible integration layer instead of building a one-off each time a client's constraints didn't match the others.
Feature-Flagged Capabilities: Features like document upload and voice input sit behind flags, so they can be turned on per assistant without a deploy, once a client's use case actually calls for them.
Result.
Several independent assistants run in production on this platform, with an admin console giving clients daily usage charts and a feedback table where every piece of feedback links back to the exact conversation it came from.
Stack.
Redis Pub/Sub for live streaming, Keycloak for identity, SharePoint SPFx for the intranet delivery.
TypeScript
React
Shadcn UI
Tailwind CSS
React Hook Form
React Query
Zod
Fastify
Objection.js
Unit Testing
Keycloak
AWS
Redis
Terraform