Skip to content
Minit Jain
← Work

Meridian AI

Realtime AI chat assistant with conditional web search.

Soloshippedrepo
Screenshot of Meridian AI

Overview

A realtime chat assistant that decides, per message, whether it needs a live web search before answering, and streams the answer token-by-token either way.

Why I built it

Most chat assistants either always search (slow, noisy) or never search (stale). Wanted a classifier in the loop deciding per-message, so a factual query gets fresh results and small talk doesn't pay the latency cost.

Architecture

React 19 frontend, Express 5 + Socket.IO backend, LangChain for tool-calling, Mistral AI for both the search-routing classifier and the main chat model, Tavily for web search, Zod for runtime-typed tool schemas. The AI core has zero dependency on Express or Socket.IO: it's a standalone module that could be dropped into a different transport layer without changes.

Clientreact · socket.io-client
Serverexpress · socket.io
AIlangchain · mistral ai · tavily search · zod (tool schemas)
Toolsnodemailer (send_email tool)

Challenges

Built conditional web search: a Mistral classifier decides per-message whether a query needs a live Tavily search, with results streamed token-by-token via Server-Sent Events layered over the Socket.IO connection. Added LangChain tool-calling with a Zod-typed send_email tool the model can invoke mid-conversation, with the post-tool follow-up streaming back seamlessly instead of breaking the response into two disjoint messages.

Outcome

Working end-to-end demo with streaming responses, live search routing, and an in-conversation email tool. Decoupled AI core is reusable as a standalone module independent of the chat UI.

Tech used

reacttypescriptexpresssocketiolangchainmistral-aitavilyzod