INDATA Nexus™
Building an AI agent for buy-side investment management — solo, in fifteen months.
I'm Director of Product Management at INDATA, an investment-management software firm whose buy-side OMS, accounting, performance and reporting platform sits inside the back office of asset managers, hedge funds, wealth managers, pension funds, and institutional advisors. In February 2025 I started building an AI agent for that platform. I have not stopped.
INDATA Nexus is the result: a production AI Platform that lets portfolio managers, traders, compliance officers, operations staff and executives interact with their portfolio data — holdings, transactions, performance, accounting, compliance — using natural language. It launched publicly on May 12, 2026 (press release) and is in production at one buy-side client today, with more rollouts in progress.
The detail that doesn't appear in any press release: I designed and led the development of the entire system, working alone with Claude Code as my development partner.
The reason I can design a system like this from scratch is that I have, at one point or another, sat in nearly every seat it's built to serve. At Duncan-Hurst I ran the operations and the compliance program and was backup on the trading desk. At Relational Investors I was backup to the head trader at an eight-billion-dollar activist fund. In each technology role across thirty years, I had to learn the underlying business cold in order to automate it. Building Nexus wasn't a technologist guessing at workflows — it was someone who has done the workflows building the tool he wishes he'd had.
v1 — the prototype that taught me what mattered
The first version was deliberately narrow. Text-to-SQL, a single LLM call per question, one large system prompt containing the schema for our two most-asked-about tables (holdings and transactions). The model returned SQL, we executed it inside our perimeter, we rendered the result to a data grid. No client data ever reached the LLM.
It shipped to production. Usage was low. But the lessons fed everything that came next:
- A single system prompt can't carry the schema for a real OMS platform — there are hundreds of tables and thousands of columns. The prompt would never fit.
- Users wanted more than rows in a grid. They wanted summaries, comparisons, multi-step questions (“get news for my top five holdings”), document Q&A against the policy library.
- Single-shot calls have no memory. Conversation needs orchestration, not just a longer prompt.
- And — quietly — users wanted the answer to speak English back to them.
v2 — the rewrite
I started over in October 2025. The new agent has:
A LangGraph workflow with five intent paths, chosen at runtime by an LLM router: SQL for direct portfolio queries; TOOL for external integrations; CHAIN for multi-step workflows (the news-for-top-five-holdings case); KNOWLEDGE for document Q&A with strict grounding and source citations; OUT_OF_SCOPE for graceful declines.
RAG over the schema instead of a monolithic prompt. Table definitions and per-table documentation are retrieved per-query from a Qdrant vector store, so coverage scales with the data model rather than the context window.
Redis-checkpointed conversation state with full versioning and time-travel debugging. LangSmith observability with per-request tracing control. An audit log with stage-by-stage timing.
Two MCP roles, which is the unusual part:
- Nexus consumes external MCP servers — third-party market-data providers and an internal REST API — with progressive tool discovery for wrapper-style servers, tool whitelisting, response filtering before narrative generation, and automatic session-context injection into tool calls.
- Nexus publishes its own MCP server — read-only access to holdings, transactions, performance and composites — so external AI agents (Claude Desktop, Cursor, Cowork, MCP Inspector) can query INDATA portfolio data over the open protocol. As of mid-2026, almost no buy-side technology vendor has shipped one.
Genuine LLM neutrality across four providers — OpenAI direct, Anthropic direct, Azure OpenAI Service (for GPT/DeepSeek on Azure), Azure AI Foundry (for Claude on Azure) — with per-task model selection in a single YAML file. Clients choose their LLM, including Entra ID authentication for enterprise Azure deployments.
The privacy trade-off, honestly told
The press release truthfully says: “no actual client data is sent to the LLM, only the metadata.” That is accurate at the query-construction step — when the model generates SQL, it sees column and table names, never rows.
But Nexus produces conversational narrative responses. That means the result rows are sent to the LLM at narrative-generation time, after the query has executed inside our perimeter. This was a conscious design decision: the UX of conversational answers is substantially better than rendering grids, and the industry's posture on sending data to commercial LLM APIs has matured — paid-tier providers (Anthropic, OpenAI, Azure) offer enforceable contractual privacy guarantees, no training on data, retention controls.
The honest framing is two-part: schema-only at query construction; result rows sent to the LLM only for narrative generation, under explicit privacy terms; all client data remains inside the perimeter at execution. The naive “no data ever to the LLM” framing oversimplifies and erodes credibility with technical readers. I chose precision over marketing.
The frontend
The user-facing surface is an embeddable React 19 widget that drops into INDATA's existing host shell. It renders in three modes — embedded side-panel inside the host app, standalone, full-screen pop-out — and uses createPortal to escape host CSS interference cleanly. Runtime configuration via window.indataConfig means a single built artifact serves every deployment. AG Grid for tabular results, Recharts for visualization (the chart spec is generated by the same agent), React Markdown for narrative, and host-inherited Dark/Light theming.
I originally built the frontend with Google Antigravity / Gemini, then migrated it to Claude Code earlier this year. Both shipped production code; I have informed comparative opinions on what working alongside each is actually like. That's a future post.
What this is — and isn't
Nexus is not the only AI work at INDATA — natural-language features have been part of our Architect AI product for years. Nexus is the next-generation layer underneath: the AI platform, the MCP server, the LLM-neutral abstraction, the orchestrated agent. It is in production at one buy-side client today, with additional rollouts in progress. Active development continues — API Viewer, Dashboards, a growing SQL RAG few-shot library, deployment automation — and a newly hired AI-forward developer is about to join the team to help extend the system.
I've been the sole contributor on both repositories to date and the sole merge authority going forward as the team scales.
Corroboration
INDATA's May 12, 2026 press release for the launch: indataipm.com — press release. Product page: INDATA Nexus. The named author of the quoted material is INDATA's President; I built the system, he announced it.
For deeper conversation about the design, the implementation details that aren't described here, or anything else — jarlnelson@outlook.com.