{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "GeoTwins Africa opportunity email descriptor (advisory)",
  "description": "Suggested fields for plain-text emails sent to admin@geotwins.org. This is not a live API endpoint.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "subject",
    "sender_name",
    "reply_to",
    "opportunity_type",
    "description"
  ],
  "properties": {
    "subject": {
      "type": "string",
      "maxLength": 180,
      "pattern": "^GeoTwins Africa \\| "
    },
    "sender_name": {
      "type": "string",
      "minLength": 2,
      "maxLength": 120
    },
    "sender_type": {
      "enum": [
        "human",
        "authorized_ai_agent"
      ]
    },
    "organization": {
      "type": "string",
      "maxLength": 150
    },
    "reply_to": {
      "type": "string",
      "format": "email"
    },
    "opportunity_type": {
      "enum": [
        "gis_consultancy",
        "geoai_research",
        "digital_twin_pilot",
        "earth_observation",
        "infrastructure_climate",
        "software_development",
        "partnership",
        "private_pilot_access",
        "feedback",
        "other"
      ]
    },
    "description": {
      "type": "string",
      "minLength": 10,
      "maxLength": 10000
    },
    "geographic_scope": {
      "type": "string",
      "maxLength": 250
    },
    "data_sources": {
      "type": "string",
      "maxLength": 1000
    },
    "deliverables": {
      "type": "string",
      "maxLength": 1500
    },
    "deadline": {
      "type": "string",
      "maxLength": 100
    },
    "budget_or_procurement": {
      "type": "string",
      "maxLength": 500
    },
    "public_references": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "maxItems": 10
    },
    "human_authorization": {
      "type": "boolean",
      "description": "When sending as an agent, confirm you are authorized by the represented person or organization."
    }
  }
}
