reference
startup.json schema
playbook/startup.schema.json
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Atelier — startup.json contract",
"description": "Source unique de vérité par sprint Atelier. Versionné. Chaque station enrichit sa section.",
"type": "object",
"required": ["atelier_version", "sprint_id", "input"],
"additionalProperties": false,
"properties": {
"atelier_version": { "type": "string", "enum": ["1.0"] },
"sprint_id": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}-[a-z0-9-]+$",
"description": "Format YYYY-MM-DD-slug, ex: 2026-05-16-prearrival"
},
"started_at": { "type": "string", "format": "date-time" },
"current_station": { "type": "string", "enum": ["S1", "S2", "S3", "S4", "S5", "S6", "S7", "DONE"] },
"input": {
"type": "object",
"description": "Idea card brute, copiée depuis saas-pipeline.json ou autre source.",
"required": ["title", "tagline", "problem", "icp"],
"properties": {
"source_id": { "type": "string" },
"title": { "type": "string" },
"tagline": { "type": "string" },
"problem": { "type": "string" },
"solution_hint": { "type": "string" },
"icp": { "type": "string" },
"wedge": { "type": "string" },
"martin_asset": { "type": "string" },
"pricing_hint": { "type": "string" }
}
},
"s1_stress_test": {
"type": "object",
"description": "Livrable S1 — Idea Stress Test (J1)",
"properties": {
"completed_at": { "type": "string", "format": "date-time" },
"verdict": { "type": "string", "enum": ["GO", "STOP"] },
"score": { "type": "number", "minimum": 0, "maximum": 10 },
"doc": { "type": "string", "description": "Chemin relatif vers le MD" },
"yc_one_pager": {
"type": "object",
"properties": {
"what_you_do": { "type": "string" },
"problem": { "type": "string" },
"solution": { "type": "string" },
"why_now": { "type": "string" },
"who_for": { "type": "string" },
"why_us": { "type": "string" }
}
},
"stress_test_responses": {
"type": "object",
"description": "Réponses aux questions critiques (problème réel ? combien sont-ils ? paient-ils déjà pour des palliatifs ?)"
}
}
},
"s2_market_intel": {
"type": "object",
"properties": {
"completed_at": { "type": "string", "format": "date-time" },
"doc": { "type": "string" },
"tam_sam_som": {
"type": "object",
"properties": {
"tam_eur": { "type": "string" },
"sam_eur": { "type": "string" },
"som_eur": { "type": "string" },
"method": { "type": "string" }
}
},
"competitors": {
"type": "array",
"description": "20 concurrents (directs + indirects) avec pricing + reviews + SEO gap",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"url": { "type": "string" },
"type": { "type": "string", "enum": ["direct", "indirect", "adjacent"] },
"pricing": { "type": "string" },
"positioning": { "type": "string" },
"weakness": { "type": "string" }
}
}
},
"positioning_gap": { "type": "string" },
"unfair_angle": { "type": "string" }
}
},
"s3_brand": {
"type": "object",
"properties": {
"completed_at": { "type": "string", "format": "date-time" },
"doc": { "type": "string" },
"telegram_gate_approved_at": { "type": "string", "format": "date-time" },
"candidates": {
"type": "array",
"description": "20-50 noms générés selon 4 frameworks",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"framework": { "type": "string", "enum": ["compound", "abstract", "metaphor", "founder-credible"] },
"rationale": { "type": "string" }
}
}
},
"finalists": {
"type": "array",
"maxItems": 5,
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"domain_com_available": { "type": "boolean" },
"domain_io_available": { "type": "boolean" },
"x_handle_available": { "type": "boolean" },
"instagram_handle_available": { "type": "boolean" },
"linkedin_handle_available": { "type": "boolean" },
"trademark_uspto_clear": { "type": "boolean" },
"trademark_euipo_clear": { "type": "boolean" },
"verified_at": { "type": "string", "format": "date-time" }
}
}
},
"final_name": { "type": "string" },
"final_domain": { "type": "string" }
}
},
"s4_spec": {
"type": "object",
"properties": {
"completed_at": { "type": "string", "format": "date-time" },
"doc": { "type": "string" },
"telegram_gate_approved_at": { "type": "string", "format": "date-time" },
"features_v1": {
"type": "array",
"maxItems": 3,
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"user_story": { "type": "string" },
"acceptance_criteria": { "type": "array", "items": { "type": "string" } }
}
}
},
"out_of_scope_v1": { "type": "array", "items": { "type": "string" } },
"design_tokens": {
"type": "object",
"properties": {
"palette": { "type": "object" },
"typography": { "type": "object" },
"motion": { "type": "object" },
"radius": { "type": "object" }
}
},
"wireframes": { "type": "array", "items": { "type": "string" }, "description": "Chemins vers PNG/Figma exports" }
}
},
"s5_build": {
"type": "object",
"properties": {
"completed_at": { "type": "string", "format": "date-time" },
"telegram_gate_approved_at": { "type": "string", "format": "date-time" },
"repo_url": { "type": "string", "format": "uri" },
"live_url": { "type": "string", "format": "uri" },
"custom_domain_pointed": { "type": "boolean" },
"stripe_live": { "type": "boolean" },
"supabase_project_ref": { "type": "string" },
"e2e_passing": { "type": "boolean" },
"playwright_run_url": { "type": "string" }
}
},
"s6_launch": {
"type": "object",
"properties": {
"completed_at": { "type": "string", "format": "date-time" },
"telegram_gate_approved_at": { "type": "string", "format": "date-time" },
"landing_url": { "type": "string", "format": "uri" },
"product_hunt_scheduled_at": { "type": "string", "format": "date-time" },
"emails_sent": { "type": "integer", "minimum": 0 },
"prospects_source": { "type": "string", "description": "VibeProspecting / Apollo / LinkedIn Sales Nav" },
"build_in_public_posts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"platform": { "type": "string", "enum": ["x", "linkedin", "tiktok", "youtube"] },
"url": { "type": "string" },
"published_at": { "type": "string", "format": "date-time" }
}
}
}
}
},
"s7_iterate": {
"type": "object",
"properties": {
"posthog_project_id": { "type": "string" },
"weekly_retros": {
"type": "array",
"items": {
"type": "object",
"properties": {
"week": { "type": "integer" },
"doc": { "type": "string" },
"mrr_eur": { "type": "number" },
"activation_d1_pct": { "type": "number" },
"retention_d7_pct": { "type": "number" },
"free_to_paid_pct": { "type": "number" }
}
}
},
"j30_verdict": { "type": "string", "enum": ["GO", "PIVOT", "KILL"] },
"j30_doc": { "type": "string" }
}
}
}
}