Calculators
Product-market-fit (PMF) score API
Transparent weighted PMF rubric (0-100) over five 0-1 factors with explicit weights — mustHaveSurvey 0.30 (Sean Ellis >40% 'very disappointed'), retention 0.25, organicGrowth 0.15, nps 0.15, usageFrequency 0.15 — returning a rating bucket (strong/emerging/weak/pre-PMF) and per-factor contribution breakdown. Answers 'do I have product-market fit','what is my PMF score','which PMF factor is weakest'.
Price$0.01per request
MethodPOST
Route/v1/calc/saas-pmf-score
StatusLive
MIME typeapplication/json
Rate limit120/minute
CacheNo cache
saaspmfproduct-market-fitscorestartuprubricretentioncalc
API URL
Integration docshttps://x402.hexl.dev/v1/calc/saas-pmf-scoreExample request
{
"mustHaveSurvey": 0.45,
"retention": 0.7,
"organicGrowth": 0.6,
"nps": 0.5,
"usageFrequency": 0.65
}Example response
{
"score": 57.25,
"rating": "weak-signal",
"weights": {
"mustHaveSurvey": 0.3,
"retention": 0.25,
"organicGrowth": 0.15,
"nps": 0.15,
"usageFrequency": 0.15
},
"breakdown": [
{
"factor": "mustHaveSurvey",
"label": "% very disappointed without product (Sean Ellis)",
"value": 0.45,
"weight": 0.3,
"contribution": 13.5
},
{
"factor": "retention",
"label": "cohort retention plateau",
"value": 0.7,
"weight": 0.25,
"contribution": 17.5
},
{
"factor": "organicGrowth",
"label": "share of organic/word-of-mouth growth",
"value": 0.6,
"weight": 0.15,
"contribution": 9
},
{
"factor": "nps",
"label": "net promoter score (normalised 0-1)",
"value": 0.5,
"weight": 0.15,
"contribution": 7.5
},
{
"factor": "usageFrequency",
"label": "active usage frequency vs. ideal",
"value": 0.65,
"weight": 0.15,
"contribution": 9.75
}
],
"formula": "score = 100 * (0.30*mustHaveSurvey + 0.25*retention + 0.15*organicGrowth + 0.15*nps + 0.15*usageFrequency)"
}Input schema
{
"type": "object",
"required": [
"mustHaveSurvey",
"retention",
"organicGrowth",
"nps",
"usageFrequency"
],
"properties": {
"mustHaveSurvey": {
"type": "number",
"description": "% very disappointed without product, normalised 0-1 (Sean Ellis)",
"examples": [
0.45
]
},
"retention": {
"type": "number",
"description": "cohort retention plateau 0-1",
"examples": [
0.7
]
},
"organicGrowth": {
"type": "number",
"description": "share of organic/word-of-mouth growth 0-1",
"examples": [
0.6
]
},
"nps": {
"type": "number",
"description": "net promoter score normalised 0-1",
"examples": [
0.5
]
},
"usageFrequency": {
"type": "number",
"description": "active usage frequency vs ideal 0-1",
"examples": [
0.65
]
}
}
}Output schema
{
"type": "object",
"additionalProperties": true
}