Manuel Porras

All work / White-label AI platform

Earlier project · Platform

30+ AI assistants in one environment, configured instead of coded

A white-label platform from 2025: each of a consultancy’s clients got its own assistant, and adding a new one meant writing a configuration file, not shipping code.

In short: A consultancy wanted a personalised AI assistant for each of its clients, and a separate deployment for each of more than 30 configurations would have been too expensive to keep alive. I built one Node.js runtime that serves all assistants; each one is defined by a single JSON file with system prompt, model, temperature and capabilities, plus its own knowledge base. The result (2025): 30+ AI assistants in one environment, where adding one means writing a configuration file, not shipping code.

30+AI assistants in one environment
1shared runtime for all assistants

The problem

A consultancy wanted to give each of its clients a personalised AI assistant. Every client needed its own system prompt, knowledge base, conversation style and branding.

Running and maintaining a separate deployment for each of more than 30 configurations would have been too expensive and too much work to keep alive.

Configuration instead of code

Each assistant is defined by one JSON file: system prompt, preferred model, temperature and capabilities. A single Node.js runtime serves all of them and routes each request by the identifier in a shareable link.

assistant.json
  system prompt
  model + temperature
  capabilities
  knowledge base

Changing an assistant means editing its file. No code change, no redeployment.

What each assistant could do

  • Answer from its own knowledge base (documents split into chunks and embedded per assistant).
  • Stream responses in real time.
  • Keep the conversation history per session.

A web UI provided the chat. An admin dashboard showed usage, session depth and engagement across all assistants.

Where it led

These were chat assistants, not autonomous agents. The principle stayed: the difference between two clients should live in configuration and knowledge files, not in forked code.

The same idea runs my agent fleet today: each client agent has its own CLAUDE.md and knowledge files, and a new one is set up by script in minutes.

Technology

Node.jsTypeScriptExpressOpenAI APIMySQLREST API