{"gates": [{"id": 1, "name": "Contact name required", "step": 1, "field": "contact_name", "severity": "block", "min_length": 2, "required": true, "regex": "", "min_lines": 0, "message": "Please enter your full name (at least 2 characters).", "help": "We use this on quotes and confirmation emails."}, {"id": 2, "name": "Valid email required", "step": 1, "field": "email", "severity": "block", "min_length": 5, "required": true, "regex": "^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$", "min_lines": 0, "message": "Please enter a valid email address so we can send your design and quote.", "help": "Work email preferred."}, {"id": 3, "name": "Company name recommended", "step": 1, "field": "company_name", "severity": "warn", "min_length": 2, "required": true, "regex": "", "min_lines": 0, "message": "Adding a company name helps us tailor the proposal (optional but recommended).", "help": "Optional for freelancers / individuals."}, {"id": 4, "name": "Application name required", "step": 3, "field": "app_name", "severity": "block", "min_length": 3, "required": true, "regex": "", "min_lines": 0, "message": "Please name your application (at least 3 characters).", "help": ""}, {"id": 5, "name": "App description depth", "step": 3, "field": "app_description", "severity": "block", "min_length": 40, "required": true, "regex": "", "min_lines": 0, "message": "Please describe the app in more detail (at least ~40 characters) so we can design it properly.", "help": "What does it do? Who uses it? What outcomes matter?"}, {"id": 6, "name": "Business problem depth", "step": 3, "field": "business_problem", "severity": "block", "min_length": 30, "required": true, "regex": "", "min_lines": 0, "message": "Please describe the business problem in more detail (at least ~30 characters).", "help": ""}, {"id": 7, "name": "Expected users recommended", "step": 3, "field": "expected_users", "severity": "warn", "min_length": 0, "required": true, "regex": "", "min_lines": 0, "message": "Selecting expected users helps size security and performance (recommended).", "help": ""}, {"id": 8, "name": "Timeline required", "step": 3, "field": "timeline", "severity": "block", "min_length": 0, "required": true, "regex": "", "min_lines": 0, "message": "Please select a preferred timeline.", "help": ""}, {"id": 9, "name": "Odoo version required", "step": 4, "field": "odoo_version", "severity": "block", "min_length": 0, "required": true, "regex": "", "min_lines": 0, "message": "Please select a target Odoo version.", "help": ""}, {"id": 10, "name": "Deployment type required", "step": 4, "field": "deployment_type", "severity": "block", "min_length": 0, "required": true, "regex": "", "min_lines": 0, "message": "Please select a deployment type.", "help": ""}, {"id": 11, "name": "Integrations recommended", "step": 4, "field": "integration_requirements", "severity": "warn", "min_length": 10, "required": false, "regex": "", "min_lines": 0, "message": "If you need integrations (Stripe, Shopify, etc.), list them now so the design includes them.", "help": ""}, {"id": 12, "name": "Core features detail", "step": 5, "field": "core_features", "severity": "block", "min_length": 40, "required": true, "regex": "", "min_lines": 2, "message": "List at least 2 core features (one per line) with enough detail for a design spec.", "help": "One feature per line works best for our design generator."}, {"id": 13, "name": "User roles required", "step": 5, "field": "user_roles", "severity": "block", "min_length": 15, "required": true, "regex": "", "min_lines": 0, "message": "Describe who uses the app and what they can do (e.g. Admin / Manager / User).", "help": ""}, {"id": 14, "name": "Reporting recommended", "step": 5, "field": "reporting_needs", "severity": "warn", "min_length": 10, "required": false, "regex": "", "min_lines": 0, "message": "If you need dashboards or reports, describe them so we include them in scope.", "help": ""}]}