Import business models and assumptions from external tools and run validation journeys.
Create a new validation journey by posting your business model. Assumptions will be auto-extracted by AI.
curl -X POST /api/journey \
-H "Content-Type: application/json" \
-d '{
"name": "My Startup Idea",
"problemStatement": "Small businesses struggle to manage inventory",
"customerSegments": ["Retail store owners", "E-commerce sellers"],
"valueProposition": "AI-powered inventory prediction",
"solution": "Dashboard with demand forecasting",
"channels": ["Direct sales", "App marketplaces"],
"revenueStreams": ["Monthly subscription"],
"externalId": "your-system-id-123"
}'/api/journeyCreate a new validation journey from a business model.
{
"name": string, // Required: Journey name
"problemStatement": string, // The problem you're solving
"customerSegments": string[],
"valueProposition": string,
"solution": string,
"channels": string[],
"revenueStreams": string[],
"costStructure": string[],
"keyMetrics": string[],
"unfairAdvantage": string,
"jobsToBeDone": string[], // Optional: JTBD elements
"pains": string[],
"gains": string[],
// Optional: Pre-defined assumptions (if not provided, AI extracts them)
"assumptions": [{
"text": string,
"category": "Problem" | "Customer" | "Solution" | "Channel" | "Revenue" | "Cost" | "Other",
"riskLevel": "Critical" | "High" | "Medium" | "Low",
"stage": "Opportunity" | "Solution" | "Business Model" | "Scale"
}],
"externalId": string, // Optional: Your system's ID for linking
"webhookUrl": string // Optional: URL for status updates
}{
"success": true,
"journey": {
"id": "journey-xxx",
"url": "/journey?id=journey-xxx",
"endpoints": {
"get": "/api/journey/journey-xxx",
"iterations": "/api/journey/journey-xxx/iterations"
},
"assumptionsSummary": {
"total": 12,
"byStage": { "opportunity": 4, "solution": 3, ... },
"byRisk": { "critical": 2, "high": 5, ... }
},
"opportunityAssumptions": [...]
}
}/api/journeyList all validation journeys.
/api/journey/:idGet full details of a specific journey including model, assumptions, and iterations.
/api/journey/:id/iterationsStart a new test iteration. AI will plan experiments for the selected assumptions.
{
"targetAssumptionIds": ["assumption-1", "assumption-3"]
}/api/journey/:id/iterations/:iterationIdUpdate experiment results within an iteration.
{
"status": "running",
"experimentUpdates": [{
"experimentId": "exp-xxx",
"status": "completed",
"actuals": [
{ "metric": "Response Rate", "actual": "15%", "passed": true }
],
"outcome": "pass",
"learnings": "Customers showed strong interest...",
"evidence": "https://link-to-survey-results"
}]
}/api/journey/:id/iterations/:iterationId/completeComplete an iteration and get AI decision (Kill/Pivot/Tweak/Continue). All experiments must be completed first.
{
"success": true,
"decision": {
"type": "Pivot",
"confidence": "High",
"reasoning": "Problem validated but current customer segment too small...",
"pivotType": "Customer",
"pivotDescription": "Target mid-market instead of small business",
"nextSteps": ["Redefine ICP", "Update value prop messaging", ...],
"risksToWatch": ["Longer sales cycles", "Higher CAC"]
},
"assumptionUpdates": [...],
"modelChanges": [...],
"journeyStatus": "pivoted",
"currentPhase": "opportunity",
"newVersion": { ... }
}POST to /api/journey with your business model. Get back journey ID and extracted assumptions.
POST to /api/journey/:id/iterations with opportunity assumptions first. AI plans experiments.
PATCH to /api/journey/:id/iterations/:iterationId with experiment outcomes.
POST to /api/journey/:id/iterations/:iterationId/complete. AI recommends Kill/Pivot/Tweak/Continue.
Based on decision, either pivot/tweak model or advance to next phase (Solution, Business Model, Scale).
Journey is in progress
Model has been pivoted, continue testing
All phases validated successfully
Idea invalidated, do not proceed
View journeys in the UI at /journey