Overview
VC Hunter is an internal tool built to streamline the venture capital research and outreach process for startup founders. Instead of spending days researching VCs, founders can describe their startup once and let AI agents discover relevant firms, find the right contacts, and draft personalized outreach messages.
The Challenge
The traditional VC outreach process is inefficient:
- Search for VCs that invest in your stage and sector
- Research their investment thesis and recent portfolio
- Find the right partner (not just any email on the website)
- Craft a personalized message that demonstrates you've done your homework
- Repeat for 50-100 firms
This takes weeks of work that founders should be spending on their product. The goal was to automate the research while keeping the outreach genuinely personalized.
Technical Approach
Agent Architecture
Rather than one monolithic AI call, I built specialized agents for each research task:
VC Discovery Agent: Takes startup context (stage, sector, check size, geography, unique aspects) and returns best-fit firms with reasoning for each match.
Contact Discovery Agent: Given a VC firm, researches partners and principals to find those with relevant portfolio companies or stated interest areas.
Enrichment Agent: Validates and fills in missing data—investment thesis details, contact LinkedIn URLs, recent investment announcements.
Message Composer Agent: Combines all context to generate outreach with specific connection points. Not templates—actual personalized content.
Data Model
The schema tracks the full research workflow:
- vc_firms: Name, website, thesis, check size, stages, sectors, status
- vc_contacts: Partner info, focus areas, recent investments, relevance score
- vc_research_tasks: Async job tracking with input/output JSONB, retry support
- startup_context: User's startup profile that feeds all AI agents
Async Processing
Graphile Worker handles all AI research as background jobs:
- User triggers discovery - API creates task record + enqueues job
- Frontend shows task status, polls for updates
- Worker executes agent - saves results to DB
- Task completes - frontend displays results
This pattern keeps the UI responsive during 10-30 second AI operations.
Type Safety
The monorepo structure ensures type consistency:
- packages/shared: DTOs, Zod schemas, constants
- apps/api: Repository pattern with typed DB rows
- apps/web: React Query hooks consuming typed DTOs
Zod schemas validate both API requests and form inputs. A single schema change propagates everywhere.
Results
The tool is in active internal use at Manifold Ventures. Key outcomes:
- Research Time: Days of manual work reduced to minutes of AI-powered discovery
- Personalization: Every outreach message includes specific, relevant connection points
- Data Quality: Enrichment agent fills gaps in VC data automatically
- Developer Experience: Full-stack type safety means confident refactoring
Tech Stack Summary
Backend: Express 5, TypeScript, PostgreSQL, Graphile Worker, Graphile Migrate, Pino
Frontend: React 19, Vite, TanStack Router + Query, shadcn/ui, Tailwind CSS, React Hook Form
AI: Claude API (Anthropic), specialized agents for discovery/enrichment/composition
Patterns: Repository pattern, DTOs, Zod validation, async job queue, monorepo workspaces