Meredian is an AI-native deal-sourcing workflow for private equity. A user states an investment mandate in plain English, and the system structures the mandate, runs grounded web research, screens and ranks candidate companies, and returns a shortlist with source-backed company dossiers.
- Mandate intake. The user describes a target (sector, geography, revenue or employee bands, exclusions) as text, a voice recording, or an uploaded investment-thesis PDF. Meredian extracts structured criteria from any of these inputs.
- Discovery. Meredian runs live research through Gemini with Google Search grounding to find and enrich candidate companies from current public sources.
- Screening and ranking. Candidates are checked against the mandate for geography, size, sector, and stage mismatches, and for named exclusions. Matches are scored and ranked, with the reasoning behind each inclusion or exclusion preserved.
- Review. The user can open a full company dossier, run one custom research question across the whole shortlist, expand the list with new candidates, and export results to CSV or PDF.
| Component | Choice |
|---|---|
| API | Express (server/) |
| UI | React + Vite (client/) |
| MCP server | @modelcontextprotocol/sdk over stdio (mcp/) |
| Database | Neon PostgreSQL |
| Mandate parsing | Gemini gemini-flash-latest |
| Discovery and enrichment | Gemini gemini-flash-latest with Google Search grounding |
client/ React UI (mandate intake, results, company dive)
server/ Express API and pipeline source (server/src/)
mcp/ MCP server over stdio, wrapping the pipeline in-process
Dependencies are installed separately in client/, server/, and mcp/. There is no root package.json.
The frontend and API run on separate origins. The UI calls the API through VITE_API_URL; there is no Vite proxy.
cp server/.env.example server/.env
cp client/.env.example client/.env
# Set GEMINI_API_KEY and DATABASE_URL in server/.env
cd server && npm install && cd ..
cd client && npm install && cd ..Run the API and UI in separate terminals:
# Terminal 1: API on port 3001
cd server && npm run dev
# Terminal 2: UI on port 5173, calls the API at VITE_API_URL
cd client && npm run dev| Directory | Variable | Required | Description |
|---|---|---|---|
server/ |
GEMINI_API_KEY |
Yes | Google Gemini API key |
server/ |
DATABASE_URL |
Yes | Neon PostgreSQL connection string |
server/ |
SESSION_SECRET |
Yes | Signing secret for session cookies |
server/ |
CORS_ORIGINS |
Prod | Comma-separated frontend origins (defaults to http://localhost:5173 in dev) |
server/ |
LIGHT_LLM_MODEL |
No | Defaults to gemini-flash-latest |
server/ |
HEAVY_LLM_MODEL |
No | Defaults to gemini-flash-latest |
server/ |
TRANSCRIBE_LLM_MODEL |
No | Defaults to gemini-flash-latest |
server/ |
PORT |
No | Defaults to 3001 |
server/ |
SKIP_HEAVY_SEARCH |
No | Skips live heavy search when set to true |
client/ |
VITE_API_URL |
Yes | API origin, no trailing slash (for example http://localhost:3001) |
See server/.env.example for the full list, including optional discovery-tuning variables.
Deploy the API and UI independently.
- API: deploy
server/withCORS_ORIGINSset to your frontend domain. - UI: build
client/withVITE_API_URLset to your API domain, then deployclient/distto a static host such as Vercel, Netlify, or S3.
cd server && npm install
cd client && VITE_API_URL=https://your-api-domain.com npm run buildmcp/ exposes the discovery pipeline as MCP tools, so an MCP host such as Claude Desktop, Kiro, or Cursor can drive Meredian directly. It imports server/src/ in-process, so it needs only the Gemini API key; it does not start Express or connect to the database.
The API also exposes the same tools over Streamable HTTP at POST /mcp. This endpoint is intentionally unauthenticated in the demo deployment: anyone who can reach it can invoke Gemini-backed tools. Each MCP client gets an isolated in-memory session (mandates, shortlists, dossiers) that expires after 30 minutes of inactivity. Tune the session pool with MCP_MAX_SESSIONS (default 100) and MCP_SESSION_IDLE_TIMEOUT_MS.
cd mcp && npm installSee mcp/README.md for host configuration and the full tool reference.
cd server && npm test
cd mcp && npm testMeredian accelerates research; it does not replace investment judgment or diligence. Public-web evidence and financial estimates are research signals and require human verification before use in an investment decision. The unauthenticated MCP HTTP endpoint should not be exposed in a production deployment without adding authentication, authorization, rate limiting, and audit logging.