{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/hlido-eu/json-schema/hlido-eu-recommend-request-schema.json",
  "title": "RecommendRequest",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/hlido-eu-openapi.json#/components/schemas/RecommendRequest",
  "type": "object",
  "required": [
    "need"
  ],
  "properties": {
    "need": {
      "type": "string",
      "minLength": 3,
      "maxLength": 500,
      "description": "Free-text description of the buyer's need."
    },
    "constraints": {
      "type": "object",
      "properties": {
        "category": {
          "$ref": "#/$defs/Category"
        },
        "min_tier": {
          "$ref": "#/$defs/Tier"
        },
        "budget_eur": {
          "type": "number",
          "description": "Advisory only (surfaced in rationale, not used for filtering)."
        },
        "languages": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 5
        },
        "deployment": {
          "type": "string",
          "enum": [
            "cloud",
            "self-host",
            "cli",
            "web",
            "api"
          ],
          "description": "Advisory only."
        }
      },
      "additionalProperties": false
    },
    "k": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "description": "Default 3 for paid tiers; FORCED to 1 for free tier regardless of input."
    }
  },
  "additionalProperties": false,
  "$defs": {
    "Category": {
      "type": "string",
      "enum": [
        "AI Agent",
        "Coding",
        "Customer Experience",
        "Workflow & Automation",
        "Infrastructure",
        "Voice",
        "Productivity",
        "Image & Design",
        "Frameworks & Eval",
        "Specialized verticals",
        "Chat & Companion",
        "Research",
        "Marketing & Content"
      ]
    },
    "Tier": {
      "type": "string",
      "enum": [
        "VITAL",
        "STEADY",
        "FADING",
        "FLATLINE"
      ]
    }
  }
}