Dorado is a role-based founder-investor matching platform for startup discovery, AI-powered startup summaries, and faster first meetings.
The product supports two perspectives:
- Investor view: discover startups, review AI summaries, and browse matches.
- Founder view: browse investors, manage profile visibility, and request connections.
Investors and founders usually work across fragmented tools for discovery, filtering, and outreach. Dorado centralizes this flow with role-based dashboards, startup search, profile pages, AI summaries, and meeting links.
- Frontend: React 19, Vite, React Router, Axios, Lucide
- Backend: FastAPI, Pydantic, Uvicorn
- Database: MongoDB (Motor async driver)
- AI: Google Gemini (
gemini-2.0-flash) - Config:
python-dotenvenvironment loading
- Routers in
backend/app/routersexpose API endpoints. - Services in
backend/app/serviceshold business logic. - Repositories in
backend/app/repositoriesisolate MongoDB queries. - Schemas in
backend/app/schemasdefine request/response models.
create_indexes()inbackend/app/database.pycreates indexes for searchable fields.seed_if_empty()inbackend/app/seed.pyinserts demo founders, investors, and startups.generate_summary()inbackend/app/services/gemini_summary.pygenerates and caches summaries._hash_description()inbackend/app/services/gemini_summary.pyinvalidates cache on description changes.get_matches_for_investor()inbackend/app/services/matching.pycomputes ranked startup matches.get_investor_metrics()andget_founder_metrics()inbackend/app/services/dashboard.pybuild dashboard stats.getAiSummary()infrontend/src/api/summaries.jscallsPOST /api/summaries/{startup_id}.handleSummary()infrontend/src/components/StartupCard.jsxloads summary content on demand.
GET /api/startups- list startupsGET /api/startups/{startup_id}- startup detailPOST /api/startups- create startup (founder-only)PATCH /api/startups/{startup_id}- update startup (founder-only)DELETE /api/startups/{startup_id}- delete startup (founder-only)GET /api/search- filtered startup searchGET /api/matches- investor match feed (investor-only)GET /api/dashboard- role-aware dashboard metricsGET /api/network/POST /api/network/DELETE /api/network/{connection_id}- network operationsPOST /api/summaries/{startup_id}- Gemini summary generation with MongoDB caching
Swagger docs:
http://localhost:8000/docshttp://localhost:8000/redoc
- Role-based investor and founder experiences
- Filter-driven startup discovery
- AI startup summaries for investor review
- Lightweight investor-startup matching scores
- Profile and network views for both roles
- Meeting links integrated in dashboard/detail/profile views
- Node.js 18+
- Python 3.11+ (3.12 recommended)
- MongoDB running locally
git clone <repository-url>
cd Doradocd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtCreate backend/.env:
GEMINI_API_KEY=your_gemini_api_key
MONGODB_URL=mongodb://localhost:27017
DATABASE_NAME=doradoRun backend:
uvicorn app.main:app --reload --port 8000cd ../frontend
npm install
npm run devFrontend runs on http://localhost:3000 and proxies /api to http://localhost:8000.
Dorado/
├── prd.md
├── backend/
│ ├── app/
│ │ ├── main.py
│ │ ├── database.py
│ │ ├── dependencies.py
│ │ ├── seed.py
│ │ ├── core/config.py
│ │ ├── routers/
│ │ ├── services/
│ │ ├── repositories/
│ │ └── schemas/
│ └── requirements.txt
└── frontend/
├── src/
│ ├── api/
│ ├── components/
│ ├── context/
│ └── pages/
├── package.json
└── vite.config.js
- Some frontend screens still use mock adapters in
frontend/src/api/mockData.js. - AI summaries are served by the real backend summaries endpoint.
- Meeting integration is currently Calendly-link based.
This project was developed with assistance from AI tools (Cursor, Claude, ChatGPT, and Gemini) for implementation support, debugging, and documentation. All generated outputs were reviewed and adapted by the team.