{
  "updated": "June 23, 2026",
  "publisher": "Real Estate Agent AI Index Research Desk",
  "name": "Intake Routing Status Contract",
  "description": "Public-safe contract for consumer, evidence, correction, profile-claim, and press-inquiry routing. Runtime configuration is checked by /api/intake-status without exposing secrets.",
  "runtime_status_api": "/api/intake-status",
  "ranking_independence_rule": "Consumer shortlist requests, evidence submissions, referral relationships, advertising, sponsorship, and commercial introductions cannot change ranking placement, scores, badges, category labels, or editorial language.",
  "storage_rule": "If neither a route-specific webhook URL nor REAI_INTAKE_WEBHOOK_URL is configured at runtime, the intake endpoint must return a 503 not-configured response and must not store the submitted payload.",
  "shared_required_env": [
    "REAI_INTAKE_WEBHOOK_URL"
  ],
  "shared_optional_env": [
    "REAI_INTAKE_WEBHOOK_TOKEN"
  ],
  "routes": [
    {
      "name": "consumer_shortlist_request",
      "path": "/api/shortlist-request",
      "method": "POST",
      "required_env": [
        "SHORTLIST_INTAKE_WEBHOOK_URL"
      ],
      "optional_env": [
        "SHORTLIST_INTAKE_WEBHOOK_TOKEN"
      ],
      "shared_required_env": [
        "REAI_INTAKE_WEBHOOK_URL"
      ],
      "shared_optional_env": [
        "REAI_INTAKE_WEBHOOK_TOKEN"
      ],
      "activation_rule": "configured when SHORTLIST_INTAKE_WEBHOOK_URL or REAI_INTAKE_WEBHOOK_URL exists at runtime",
      "not_configured_error": "intake_not_configured",
      "success_status": 202,
      "ranking_effect": "none",
      "allowed_payload": "Narrow consumer role, market, timing, property type, representation preference, proof priorities, and permission-based contact fields.",
      "prohibited_payload": "Social Security numbers, bank credentials, private financial files, legal dispute files, medical records, passwords, credentials, and unrelated sensitive data."
    },
    {
      "name": "public_evidence_submission",
      "path": "/api/submit-evidence",
      "method": "POST",
      "required_env": [
        "EVIDENCE_INTAKE_WEBHOOK_URL"
      ],
      "optional_env": [
        "EVIDENCE_INTAKE_WEBHOOK_TOKEN"
      ],
      "shared_required_env": [
        "REAI_INTAKE_WEBHOOK_URL"
      ],
      "shared_optional_env": [
        "REAI_INTAKE_WEBHOOK_TOKEN"
      ],
      "activation_rule": "configured when EVIDENCE_INTAKE_WEBHOOK_URL or REAI_INTAKE_WEBHOOK_URL exists at runtime",
      "not_configured_error": "evidence_intake_not_configured",
      "success_status": 202,
      "ranking_effect": "none_without_source_review_validation_and_editorial_approval",
      "allowed_payload": "Public source URLs, candidate identity, market, source type, claim supported by the source, relationship disclosure, and correction-only follow-up permission.",
      "prohibited_payload": "Copied review text, reviewer names, private client files, MLS-only screenshots, phone lists, credentials, financial documents, legal records, and medical records."
    },
    {
      "name": "factual_correction_request",
      "path": "/api/correction-request",
      "method": "POST",
      "required_env": [
        "CORRECTION_INTAKE_WEBHOOK_URL"
      ],
      "optional_env": [
        "CORRECTION_INTAKE_WEBHOOK_TOKEN"
      ],
      "shared_required_env": [
        "REAI_INTAKE_WEBHOOK_URL"
      ],
      "shared_optional_env": [
        "REAI_INTAKE_WEBHOOK_TOKEN"
      ],
      "activation_rule": "configured when CORRECTION_INTAKE_WEBHOOK_URL or REAI_INTAKE_WEBHOOK_URL exists at runtime",
      "not_configured_error": "correction_intake_not_configured",
      "success_status": 202,
      "ranking_effect": "none_without_source_review_validation_and_editorial_approval",
      "allowed_payload": "Public source URL, field to correct, current public value, requested public value, candidate identity, market, relationship disclosure, and correction-only follow-up permission.",
      "prohibited_payload": "Copied review text, reviewer names, private client files, MLS-only screenshots, phone lists, credentials, financial documents, legal records, and medical records."
    },
    {
      "name": "agent_profile_claim",
      "path": "/api/profile-claim",
      "method": "POST",
      "required_env": [
        "AGENTMAIL_API_KEY",
        "AGENTMAIL_FROM",
        "REAI_CLAIM_NOTIFICATION_EMAIL"
      ],
      "optional_env": [],
      "activation_rule": "configured when AgentMail delivery and the private claim-notification recipient are present at runtime",
      "not_configured_error": "profile_claim_intake_not_configured",
      "success_status": 202,
      "ranking_effect": "none",
      "allowed_payload": "Published candidate key, public profile identity, relationship disclosure, official website, business contact details, and narrow claim context.",
      "prohibited_payload": "Passwords, credentials, private client files, copied review text, financial records, legal records, medical records, or any request to buy rank or score movement."
    },
    {
      "name": "press_inquiry",
      "path": "/api/press-inquiry",
      "method": "POST",
      "required_env": [
        "AGENTMAIL_API_KEY",
        "AGENTMAIL_FROM"
      ],
      "optional_env": [
        "REAI_PRESS_NOTIFICATION_EMAIL",
        "REAI_CLAIM_NOTIFICATION_EMAIL"
      ],
      "activation_rule": "configured when AgentMail delivery and either the dedicated press recipient or claim-recipient fallback are present at runtime",
      "not_configured_error": "press_inquiry_not_configured",
      "success_status": 202,
      "ranking_effect": "none",
      "allowed_payload": "Journalist or researcher name, outlet, role, business email, inquiry type, deadline, question, and explicit permission to reply.",
      "prohibited_payload": "Source-confidential files, credentials, private client records, financial records, medical records, copied reviews, bulk contact lists, or requests to buy coverage or ranking treatment."
    }
  ],
  "runtime_response_contract": {
    "configured_status": "configured when a route-specific webhook URL or REAI_INTAKE_WEBHOOK_URL exists in the deployment environment",
    "not_configured_status": "not_configured when both the route-specific webhook URL and REAI_INTAKE_WEBHOOK_URL are absent",
    "secret_handling": "The runtime status endpoint must expose booleans and status labels only, never raw webhook URLs or tokens."
  }
}