How to Integrate Next.js for wealth management with Vercel AI SDK for multi-agent systems
Wealth management teams need agent systems that can pull portfolio data, summarize client context, and route tasks across specialized assistants without turning the app into a mess of glue code. Pairing Next.js for wealth management with the Vercel AI SDK gives you a clean frontend/server boundary plus a structured way to orchestrate multi-agent workflows for advice prep, risk checks, and client servicing.
Prerequisites
- •Python 3.10+
- •A running Next.js for wealth management app
- •Vercel AI SDK installed in your Next.js project
- •API access to your wealth management backend or data layer
- •An OpenAI-compatible model endpoint or another provider supported by Vercel AI SDK
- •
httpxinstalled for Python-side integration calls - •Environment variables configured:
- •
NEXT_PUBLIC_APP_URL - •
WEALTH_API_KEY - •
VERCEL_AI_API_KEYor provider-specific key
- •
Integration Steps
- •
Expose a wealth-management API contract from Next.js
Your Next.js app should expose routes that return normalized client, portfolio, and suitability data. Keep the schema stable so agents can rely on it.
import httpx import os NEXT_APP_URL = os.environ["NEXT_PUBLIC_APP_URL"] WEALTH_API_KEY = os.environ["WEALTH_API_KEY"] def fetch_client_profile(client_id: str) -> dict: url = f"{NEXT_APP_URL}/api/clients/{client_id}" headers = {"Authorization": f"Bearer {WEALTH_API_KEY}"} response = httpx.get(url, headers=headers, timeout=15) response.raise_for_status() return response.json() def fetch_portfolio_summary(client_id: str) -> dict: url = f"{NEXT_APP_URL}/api/portfolios/{client_id}/summary" headers = {"Authorization": f"Bearer {WEALTH_API_KEY}"} response = httpx.get(url, headers=headers, timeout=15) response.raise_for_status() return response.json() - •
Define agent roles for the multi-agent system
Split responsibilities. One agent should gather facts, another should analyze risk, and a third should draft the client-facing response. This keeps prompts narrow and outputs predictable.
from dataclasses import dataclass @dataclass class AgentTask: name: str instructions: str CLIENT_RESEARCHER = AgentTask( name="client_researcher", instructions="Summarize client profile, account structure, and recent activity." ) RISK_ANALYST = AgentTask( name="risk_analyst", instructions="Assess portfolio concentration, volatility exposure, and suitability flags." ) RESPONSE_DRAFTER = AgentTask( name="response_drafter", instructions="Draft a concise advisor-ready summary using prior agent outputs." ) - •
Call Vercel AI SDK from your orchestration layer
In practice, the Vercel AI SDK runs in your Next.js server routes or server actions. From Python, you typically invoke those endpoints as part of the workflow orchestration. The Python service coordinates tasks; the Next.js route uses
streamText,generateText, or tool calling through the SDK.import httpx import os VERCEL_AGENT_ENDPOINT = f"{os.environ['NEXT_PUBLIC_APP_URL']}/api/agent/run" def run_agent(task_name: str, payload: dict) -> dict: body = { "task": task_name, "input": payload, } response = httpx.post( VERCEL_AGENT_ENDPOINT, json=body, timeout=60, headers={"Content-Type": "application/json"} ) response.raise_for_status() return response.json() def run_multi_agent_workflow(client_id: str) -> dict: profile = fetch_client_profile(client_id) portfolio = fetch_portfolio_summary(client_id) research_result = run_agent("client_researcher", { "profile": profile, "portfolio": portfolio, "instructions": CLIENT_RESEARCHER.instructions, }) risk_result = run_agent("risk_analyst", { "profile": profile, "portfolio": portfolio, "instructions": RISK_ANALYST.instructions, "research_notes": research_result["output"], }) draft_result = run_agent("response_drafter", { "profile": profile, "portfolio": portfolio, "instructions": RESPONSE_DRAFTER.instructions, "research_notes": research_result["output"], "risk_notes": risk_result["output"], }) return { "research": research_result, "risk": risk_result, "draft": draft_result, } - •
Wire tool access into the Next.js side
If an agent needs live data lookups, expose tool endpoints in Next.js and call them through the SDK’s tool mechanism on the server side. The Python coordinator only needs to trigger the workflow; the model can decide when to call tools.
import httpx import os def trigger_advisor_review(client_id: str) -> dict: url = f"{os.environ['NEXT_PUBLIC_APP_URL']}/api/advisor/review" payload = {"clientId": client_id} with httpx.Client(timeout=60) as client: resp = client.post(url, json=payload) resp.raise_for_status() return resp.json() if __name__ == "__main__": result = trigger_advisor_review("client_123") print(result) - •
Persist agent outputs back into your wealth management app
Store summaries, risk flags, and next actions in your application database so advisors can review them inside Next.js dashboards.
import httpx import os def save_workflow_result(client_id: str, result: dict) -> None: url = f"{os.environ['NEXT_PUBLIC_APP_URL']}/api/workflows/{client_id}/results" headers = {"Authorization": f"Bearer {os.environ['WEALTH_API_KEY']}"} payload = { "researchSummary": result["research"]["output"], "riskAssessment": result["risk"]["output"], "advisorDraft": result["draft"]["output"], } response = httpx.put(url, json=payload, headers=headers, timeout=15) response.raise_for_status()
Testing the Integration
Run a single end-to-end check against one client record and assert that each agent returns output.
def test_workflow():
result = run_multi_agent_workflow("client_123")
assert "output" in result["research"]
assert "output" in result["risk"]
assert "output" in result["draft"]
print("Research:", result["research"]["output"][:120])
print("Risk:", result["risk"]["output"][:120])
print("Draft:", result["draft"]["output"][:120])
if __name__ == "__main__":
test_workflow()
Expected output:
Research: Client holds diversified equities with recent cash inflow and updated beneficiary details...
Risk: Portfolio concentration is moderate; tech exposure exceeds internal threshold by 4%...
Draft: Advisor note: Review sector concentration with client and confirm whether cash allocation should be increased...
Real-World Use Cases
- •
Advisor prep assistant
- •Pulls client history from Next.js APIs.
- •Uses Vercel AI SDK agents to summarize holdings before meetings.
- •
Suitability and risk review
- •One agent checks concentration limits.
- •Another drafts remediation steps for advisors to approve.
- •
Client service automation
- •Multi-agent workflow handles routine requests like address changes, statement questions, and contribution updates.
- •Human review stays in the loop for regulated actions.
Keep learning
- •The complete AI Agents Roadmap — my full 8-step breakdown
- •Free: The AI Agent Starter Kit — PDF checklist + starter code
- •Work with me — I build AI for banks and insurance companies
By Cyprian Aarons, AI Consultant at Topiax.
Want the complete 8-step roadmap?
Grab the free AI Agent Starter Kit — architecture templates, compliance checklists, and a 7-email deep-dive course.
Get the Starter Kit