{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.bit2boardconsulting.com/rfp-schema.json",
  "title": "Bit2Board proposal or orientation-call request",
  "description": "Payload accepted by the Bit2Board lead endpoint. Send as application/json with 'Accept: application/json'. AI agents may submit on behalf of a user ONLY with that user's explicit consent to share their contact details for this purpose.",
  "type": "object",
  "required": [
    "type",
    "name",
    "email",
    "organisation",
    "message",
    "consent"
  ],
  "properties": {
    "type": {
      "enum": [
        "rfp",
        "call"
      ],
      "description": "rfp = request a proposal; call = free 30-minute orientation call"
    },
    "lang": {
      "enum": [
        "en",
        "de"
      ],
      "default": "en"
    },
    "name": {
      "type": "string",
      "maxLength": 200
    },
    "role": {
      "type": "string",
      "maxLength": 200
    },
    "organisation": {
      "type": "string",
      "maxLength": 200
    },
    "email": {
      "type": "string",
      "format": "email",
      "maxLength": 254
    },
    "phone": {
      "type": "string",
      "maxLength": 50
    },
    "org_type": {
      "enum": [
        "federal",
        "canton_commune",
        "public_enterprise",
        "private_company",
        "consultancy",
        "investor",
        "other"
      ]
    },
    "services": {
      "type": "array",
      "items": {
        "enum": [
          "technical-due-diligence",
          "fractional-cto",
          "eu-ai-act",
          "ai-innovation",
          "hermes-review",
          "it-procurement",
          "vendor-governance",
          "international",
          "enterprise-architecture",
          "integration-architecture",
          "iam-architecture",
          "architecture-review",
          "ai-service-management",
          "not_sure"
        ]
      }
    },
    "package": {
      "type": "string",
      "maxLength": 200
    },
    "message": {
      "type": "string",
      "maxLength": 5000,
      "description": "Situation and objective (rfp) or what to clarify (call)."
    },
    "deliverables": {
      "type": "string",
      "maxLength": 3000
    },
    "documents_url": {
      "type": "string",
      "format": "uri",
      "maxLength": 500
    },
    "start": {
      "type": "string",
      "description": "Desired start, e.g. 2026-11"
    },
    "decision_date": {
      "type": "string",
      "format": "date"
    },
    "budget": {
      "enum": [
        "lt10k",
        "10k_30k",
        "30k_100k",
        "gt100k",
        "undefined"
      ]
    },
    "procurement": {
      "enum": [
        "direct_award",
        "invitation",
        "open_tender",
        "framework",
        "private",
        "unknown"
      ]
    },
    "proposal_language": {
      "enum": [
        "en",
        "de",
        "fr"
      ]
    },
    "call_language": {
      "enum": [
        "en",
        "de",
        "fr",
        "ar"
      ]
    },
    "call_format": {
      "enum": [
        "video",
        "phone",
        "in_person"
      ]
    },
    "submitted_by": {
      "enum": [
        "human",
        "agent"
      ],
      "default": "human"
    },
    "agent_name": {
      "type": "string",
      "maxLength": 200,
      "description": "Name of the assistant or agent submitting on the user's behalf."
    },
    "consent": {
      "const": true,
      "description": "The person named agreed that Bit2Board may process these details to answer the request."
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "type": "rfp",
      "lang": "en",
      "name": "Anna Muster",
      "role": "Head of IT",
      "organisation": "Example AG",
      "email": "anna.muster@example.ch",
      "org_type": "private_company",
      "services": [
        "technical-due-diligence"
      ],
      "message": "We are acquiring a Swiss software SME (CHF 3M revenue) and need a technical due diligence before signing in 6 weeks.",
      "budget": "10k_30k",
      "procurement": "private",
      "proposal_language": "en",
      "submitted_by": "agent",
      "agent_name": "Example assistant",
      "consent": true
    }
  ]
}
