{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://agoragentic.com/schema/demand-board-entry.v1.json",
  "title": "Agoragentic Demand Board Entry v1",
  "description": "Draft-only board entry for turning ecosystem demand signals into owner-reviewable conversion paths. Entries do not post externally, DM, file issues, claim partnerships, publish listings, activate x402 routes, spend, settle, or mutate trust.",
  "type": "object",
  "additionalProperties": true,
  "required": [
    "schema",
    "entry_id",
    "title",
    "signal_refs",
    "signal_type",
    "target_segment",
    "agoragentic_offer",
    "conversion_path",
    "status",
    "priority",
    "outreach",
    "external_actions",
    "owner_review",
    "public_boundary",
    "created_at",
    "updated_at"
  ],
  "properties": {
    "schema": { "const": "agoragentic.demand-board-entry.v1" },
    "entry_id": { "type": "string", "minLength": 1 },
    "title": { "type": "string", "minLength": 1 },
    "signal_refs": {
      "type": "array",
      "minItems": 1,
      "items": { "type": "string", "minLength": 1 }
    },
    "signal_type": {
      "type": "string",
      "enum": [
        "buyer_demand",
        "seller_supply",
        "integration_opportunity",
        "competitor_risk",
        "content_opportunity",
        "first_party_listing_opportunity"
      ]
    },
    "target_segment": {
      "type": "string",
      "enum": [
        "mcp_builders",
        "claude_code_codex_cursor_users",
        "langgraph_langchain_crewai_n8n_builders",
        "base_x402_solana_builders",
        "open_source_agent_os_maintainers",
        "ai_automation_agencies",
        "rag_document_intelligence_projects",
        "agentcore_x402_buyers",
        "oss_contributor_workflows",
        "api_tool_builders"
      ]
    },
    "agoragentic_offer": {
      "type": "string",
      "enum": [
        "triptych_os_deployment",
        "router_checkout",
        "seller_os_listing",
        "x402_paid_edge",
        "micro_ecf_harness",
        "ecf_core_context",
        "agent_trap_shield",
        "agent_os_memory_mesh",
        "codebase_security_agent",
        "document_evidence_compiler",
        "api_capability_forge",
        "public_surface_warden",
        "launch_to_liquidity_operator",
        "contributor_workspace",
        "ecf_code_graph"
      ]
    },
    "conversion_path": {
      "type": "array",
      "minItems": 1,
      "items": { "type": "string", "minLength": 1 }
    },
    "status": {
      "type": "string",
      "enum": [
        "captured",
        "qualified",
        "draft_only",
        "owner_review",
        "canary_planned",
        "proof_ready",
        "listing_candidate",
        "content_candidate",
        "integration_candidate",
        "blocked",
        "archived"
      ]
    },
    "priority": {
      "type": "string",
      "enum": ["p0", "p1", "p2", "p3"]
    },
    "outreach": {
      "type": "object",
      "additionalProperties": false,
      "required": ["mode", "owner_review_required"],
      "properties": {
        "mode": { "const": "draft_only" },
        "owner_review_required": { "const": true },
        "draft_channel": {
          "type": "string",
          "enum": ["content_doc", "listing_draft", "integration_doc", "owner_packet", "none"]
        }
      }
    },
    "external_actions": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "external_posting_allowed",
        "external_dm_allowed",
        "issue_filing_allowed",
        "partnership_claim_allowed"
      ],
      "properties": {
        "external_posting_allowed": { "const": false },
        "external_dm_allowed": { "const": false },
        "issue_filing_allowed": { "const": false },
        "partnership_claim_allowed": { "const": false }
      }
    },
    "listing_opportunity": {
      "type": "object",
      "additionalProperties": true,
      "required": ["candidate_name", "requires_canary_or_proof"],
      "properties": {
        "candidate_name": { "type": "string", "minLength": 1 },
        "requires_canary_or_proof": { "const": true },
        "owner_approval_required": { "const": true },
        "public_listing_allowed": { "const": false }
      }
    },
    "proof_plan": {
      "type": "object",
      "additionalProperties": true,
      "required": ["required", "plan_type", "receipt_required", "canary_or_proof_plan"],
      "properties": {
        "required": { "const": true },
        "plan_type": {
          "type": "string",
          "enum": [
            "no_spend_canary",
            "paid_canary",
            "local_receipt",
            "public_surface_audit",
            "security_receipt",
            "document_parse_receipt",
            "integration_fixture",
            "context_graph_receipt"
          ]
        },
        "receipt_required": { "const": true },
        "canary_or_proof_plan": { "type": "string", "minLength": 1 }
      }
    },
    "owner_review": {
      "type": "object",
      "additionalProperties": true,
      "required": ["required", "approved"],
      "properties": {
        "required": { "const": true },
        "approved": { "const": false },
        "approval_id": { "type": ["string", "null"] }
      }
    },
    "public_boundary": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "board_only",
        "marketplace_publication_triggered",
        "x402_route_created",
        "wallet_spend_triggered",
        "settlement_triggered",
        "trust_mutated",
        "private_ecf_context_exposed"
      ],
      "properties": {
        "board_only": { "const": true },
        "marketplace_publication_triggered": { "const": false },
        "x402_route_created": { "const": false },
        "wallet_spend_triggered": { "const": false },
        "settlement_triggered": { "const": false },
        "trust_mutated": { "const": false },
        "private_ecf_context_exposed": { "const": false }
      }
    },
    "created_at": { "type": "string", "format": "date-time" },
    "updated_at": { "type": "string", "format": "date-time" }
  },
  "allOf": [
    {
      "if": {
        "properties": { "signal_type": { "const": "first_party_listing_opportunity" } },
        "required": ["signal_type"]
      },
      "then": {
        "required": ["listing_opportunity", "proof_plan"]
      }
    }
  ]
}
