$ man content-wiki/chatbot-architecture

Tools and MCPsintermediate

How the NeoBots Work

Soul files, RAG scoring, and the ChatWidget pattern behind Nio, Rem, and Recon

by Shawn Tenam


Three Bots, One Pattern

Each site in the GTMe OS monorepo ships its own chatbot: Nio on shawnos.ai, Rem on thecontentos.ai, Recon on thegtmos.ai. They share the same ChatWidget component from the shared package but each has a distinct personality, knowledge base, and accent color. The bots are public-facing - no auth required - and exist to help visitors explore the wiki, blog, and knowledge base content on each site.
PATTERN

Soul Files and System Prompts

Each bot's personality is defined in its API route's system prompt. The prompt sets the tone (lowercase energy, direct, no fluff), the persona (Nio talks like a builder, Rem like a content strategist, Recon like an ops engineer), and the rules (only answer from provided context, never fabricate URLs, link to full articles). The system prompt is assembled at request time by injecting retrieved article content below the rules block. This means the bot's knowledge is always current with the wiki - no retraining needed.
PATTERN

RAG Retrieval Without a Vector DB

The bots use keyword-based retrieval instead of embeddings. Each wiki entry, knowledge term, and blog post is converted into a RetrievableItem with title, description, keywords, and truncated content. When a user sends a message, the retrieval engine scores every item against the query using keyword overlap, synonym expansion, and category matching. The top 5 results are injected into the system prompt as context. A synonym map per bot expands queries - asking about 'cold email' also matches 'outbound', 'sequence', and 'prospecting'. This approach is fast, deterministic, and costs zero infrastructure.
PRO TIP

The ChatWidget Component

All three bots render through a single ChatWidget component in the shared package. It handles the chat UI, message streaming, suggested questions, gating (Substack subscribe or CTA), and the floating bubble. Each site passes its own config: bot name, accent color, welcome message, suggested questions, and API endpoint. The avatar (animated APNG) is rendered separately by each site's wrapper component (NioChat, RemChat, ReconChat) with a slide-in animation when the chat opens.

related entries
NeoBot Avatar Pipelinethe content OS tool stack (what we actually use and why)
← content wikiknowledge guide →
ShawnOS.ai|theGTMOS.ai|theContentOS.ai