This project was built as part of the Data-Driven VC Hackathon organized by Red River West & Bivwak! by BNP Paribas
The Startup Runway Estimator helps venture capitalists (VCs) project a startup’s financial runway by analyzing revenue and costs month by month. This tool leverages data from external sources, including People Data Labs, SimilarWeb, and Harmonic, combined with salary benchmarks, to provide actionable insights into a startup’s financial health and projected time until cash depletion.
- Python 3.9+
- Docker (for MongoDB and Mongo Express)
To run the project, you’ll need API keys for the following services:
- People Data Labs (PDL): To fetch headcount data.
- Harmonic: To filter and select target companies.
- GPT API: To estimate revenue using website traffic and employee data.
Install the required Python libraries by running:
pip install -r requirements.txt
git clone https://github.com/YOUR_REPO_URL
cd YOUR_PROJECT_NAME
Create a .env
file in the project root and include the following variables:
HARMONIC_API_KEY=your_harmonic_api_key
PDL_API_KEY=your_pdl_api_key
GPT_API_KEY=your_gpt_api_key
Use Docker to start the MongoDB and Mongo Express services:
docker-compose up
This will:
- Start MongoDB on
localhost:27017
- FastAPI on
localhost:8000
Load initial data from Harmonic by clicking the "synchronise database" button on the application:
python main.py
This fetches company data from Harmonic and populates the MongoDB database.
Start the FastAPI server:
uvicorn backend:app --reload
- API Endpoints:
GET /
: Returns a welcome message.POST /data
: Placeholder for future data endpoints.
The main.py
script calculates and updates each company’s Estimated Time of Death (ETOD) in the MongoDB database. It uses:
- Revenue estimates from the GPT API (using website traffic and employee data).
- Cost projections based on salary benchmarks and headcount data.
- Funding data from Harmonic.
The salary benchmarks used in the calculation can be updated in get_monthly_salaries.py
:
salaries = {
"engineering": 4160,
"sales": 4000,
"marketing": 3660,
# Add or modify as needed
}
Adjust salary ratios for roles and seniority in the same file:
salary_ratios = {
"entry": 0.7,
"senior": 1.3,
"manager": 1.5,
# Add or modify as needed
}
Update the prompts used for revenue calculation in the retrieve_sw
function within main.py
.
- Revenue Estimation: The model relies on GPT and website traffic data, which may not accurately reflect B2B SaaS revenue.
- Assumptions: Salary data and multipliers are based on benchmarks for France and may not generalize globally.
- Data Sources: SimilarWeb data relevance varies, especially for B2C startups.
This project is licensed under the MIT License. See the LICENSE
file for details.
Contributions are welcome! Please open an issue or submit a pull request for bugs, improvements, or new features.