Skip to content

About

AI-native deal-sourcing workflow for private equity. Turns a plain-English investment mandate into a vetted, evidence-backed shortlist with source-cited company dossiers.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

80 Commits

Folders and files

Repository files navigation

Meredian

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.

How it works

  1. 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.
  2. Discovery. Meredian runs live research through Gemini with Google Search grounding to find and enrich candidate companies from current public sources.
  3. 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.
  4. 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.

Stack

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

Repository layout

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.

Getting started

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

Environment variables

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.

Production deployment

Deploy the API and UI independently.

  • API: deploy server/ with CORS_ORIGINS set to your frontend domain.
  • UI: build client/ with VITE_API_URL set to your API domain, then deploy client/dist to 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 build

MCP server

mcp/ 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 install

See mcp/README.md for host configuration and the full tool reference.

Tests

cd server && npm test
cd mcp && npm test

Limitations

Meredian 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.

About

AI-native deal-sourcing workflow for private equity. Turns a plain-English investment mandate into a vetted, evidence-backed shortlist with source-cited company dossiers.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages