{
  "document": "recourse.standards",
  "site_url": "https://recourse-mu.vercel.app",
  "rulebook_version": "0.4.0",
  "hash_recipe": "sha256 of the RFC 8785 canonical JSON of the published standard file, lowercase hex.",
  "data": [
    {
      "id": "OS-1",
      "version": "0.4.0",
      "title": "Support Resolution",
      "hash": "sha256:06c0dd79f36093e9d90cbde1a7f0ae192267b57e6bac189ea6bee07befb75590",
      "url": "https://recourse-mu.vercel.app/standards#OS-1",
      "document_url": "https://api.recourse.dev/v1/standards/OS-1",
      "standard": {
        "id": "OS-1",
        "version": "0.4.0",
        "title": "Support Resolution",
        "purpose": "Verify that a vendor's agent resolved a customer conversation without human handoff, so the vendor is paid per resolution and the buyer pays only for resolutions that hold.",
        "unit": "One customer conversation resolved by the vendor's agent without human handoff.",
        "evidence": {
          "artifacts": [
            {
              "name": "transcript",
              "media_types": [
                "text/plain",
                "text/markdown",
                "application/json"
              ],
              "required": true,
              "max_bytes": 10485760
            }
          ],
          "fields": [
            {
              "name": "conversation_id",
              "type": "id",
              "required": true,
              "dedupe_key": true
            },
            {
              "name": "channel",
              "type": "string",
              "required": true
            },
            {
              "name": "opened_at",
              "type": "datetime",
              "required": true
            },
            {
              "name": "last_agent_message_at",
              "type": "datetime",
              "required": true
            },
            {
              "name": "closed_at",
              "type": "datetime",
              "required": false
            },
            {
              "name": "inactivity_marker_at",
              "type": "datetime",
              "required": false
            },
            {
              "name": "handoff",
              "type": "boolean",
              "required": true
            },
            {
              "name": "customer_reply_after_close",
              "type": "boolean",
              "required": false
            }
          ]
        },
        "criteria": [
          {
            "id": "c1",
            "kind": "deterministic",
            "title": "No human handoff",
            "check": {
              "==": [
                {
                  "var": "fields.handoff"
                },
                false
              ]
            },
            "weight": "required",
            "comment": "Facts: fields.handoff (boolean, vendor-submitted, cross-checked against the buyer's system when connected)."
          },
          {
            "id": "c2",
            "kind": "deterministic",
            "title": "Closure marker present",
            "check": {
              "or": [
                {
                  "!=": [
                    {
                      "var": "fields.closed_at"
                    },
                    null
                  ]
                },
                {
                  "!=": [
                    {
                      "var": "fields.inactivity_marker_at"
                    },
                    null
                  ]
                },
                {
                  "==": [
                    {
                      "var": "connector.customer_confirmed_close"
                    },
                    true
                  ]
                }
              ]
            },
            "weight": "required",
            "comment": "Facts: fields.closed_at, fields.inactivity_marker_at (datetime or null); connector.customer_confirmed_close (boolean, explicit customer confirmation or accepted article from the source of truth). The default inactivity window is 72 hours."
          },
          {
            "id": "c3",
            "kind": "deterministic",
            "title": "Conversation id unique within the commitment",
            "check": {
              "==": [
                {
                  "var": "connector.recourse.dedupe_matches"
                },
                0
              ]
            },
            "weight": "required",
            "comment": "Facts: connector.recourse.dedupe_matches (number of previously verified units under this commitment whose dedupe key equals fields.conversation_id; Recourse's own record is the connector). A match rejects the duplicate (R-311)."
          },
          {
            "id": "c4",
            "kind": "deterministic",
            "title": "Opened within the period or the 7 days before it",
            "check": {
              "within_window": [
                {
                  "var": "fields.opened_at"
                },
                {
                  "var": "time.period_lookback_start"
                },
                {
                  "var": "time.period_end"
                }
              ]
            },
            "weight": "material",
            "comment": "Facts: fields.opened_at (datetime); time.period_lookback_start (period start minus 7 days); time.period_end. within_window is a registered custom op."
          },
          {
            "id": "c5",
            "kind": "deterministic",
            "title": "No reopening within 7 days of close",
            "check": {
              "==": [
                {
                  "var": "connector.reopened_within_7d"
                },
                false
              ]
            },
            "weight": "material",
            "comment": "Facts: connector.reopened_within_7d (boolean from the source of truth: the same customer reopened the same issue within 7 days of close)."
          },
          {
            "id": "r1",
            "kind": "rubric",
            "title": "The agent addressed the customer's stated issue",
            "rubric": {
              "question": "Did the agent address the customer's stated issue, rather than merely close the conversation?",
              "pass_condition": "The final agent message responds to the issue the customer raised and does not defer it.",
              "evidence_fields": [
                "transcript"
              ]
            },
            "weight": "required"
          },
          {
            "id": "r2",
            "kind": "rubric",
            "title": "No policy violation evident",
            "rubric": {
              "question": "Does the transcript show the agent making a promise the vendor is not authorized to make?",
              "pass_condition": "No promise the vendor is not authorized to make appears in the transcript.",
              "evidence_fields": [
                "transcript"
              ]
            },
            "weight": "material"
          }
        ],
        "exclusions": [
          "Spam conversations.",
          "Test conversations.",
          "Conversations the customer abandoned before the agent's first substantive reply."
        ],
        "gaming_defenses": [
          "Dedupe on conversation_id.",
          "Reopen check against the source of truth.",
          "Bursts of outcomes at period end raise sampling.",
          "Handoff detection cross-checked against the buyer's system when connected."
        ],
        "dedupe_key": "conversation_id",
        "windows": {
          "statement_dispute_hours": 120,
          "evidence_hours": 48,
          "inactivity_hours": 72
        }
      }
    },
    {
      "id": "OS-2",
      "version": "0.4.0",
      "title": "Qualified Lead",
      "hash": "sha256:4c01e45abaadb00dc4477c7afdf9a5fc32182d2cb5f8552830f695926902de6c",
      "url": "https://recourse-mu.vercel.app/standards#OS-2",
      "document_url": "https://api.recourse.dev/v1/standards/OS-2",
      "standard": {
        "id": "OS-2",
        "version": "0.4.0",
        "title": "Qualified Lead",
        "purpose": "Verify that a lead delivered by the vendor meets the buyer's stated qualification profile and is contactable, so the buyer pays only for leads it can act on.",
        "unit": "One lead delivered that meets the buyer's stated qualification profile and is contactable.",
        "evidence": {
          "artifacts": [
            {
              "name": "intent_signal",
              "media_types": [
                "application/json",
                "text/plain"
              ],
              "required": false,
              "max_bytes": 1048576
            }
          ],
          "fields": [
            {
              "name": "lead_id",
              "type": "id",
              "required": true,
              "dedupe_key": true
            },
            {
              "name": "company_domain",
              "type": "string",
              "required": true
            },
            {
              "name": "title",
              "type": "string",
              "required": true
            },
            {
              "name": "employee_count",
              "type": "number",
              "required": true
            },
            {
              "name": "region",
              "type": "string",
              "required": true
            },
            {
              "name": "source",
              "type": "string",
              "required": true
            },
            {
              "name": "delivered_at",
              "type": "datetime",
              "required": true
            },
            {
              "name": "contact_verification",
              "type": "string",
              "required": true
            },
            {
              "name": "contact_verified_at",
              "type": "datetime",
              "required": true
            }
          ]
        },
        "criteria": [
          {
            "id": "c1",
            "kind": "deterministic",
            "title": "Contact passes deliverability verification",
            "check": {
              "or": [
                {
                  "==": [
                    {
                      "var": "connector.email_check.deliverable"
                    },
                    true
                  ]
                },
                {
                  "==": [
                    {
                      "var": "connector.phone_check.valid"
                    },
                    true
                  ]
                }
              ]
            },
            "weight": "required",
            "comment": "Facts: connector.email_check.deliverable (boolean, SMTP/MX check run by Recourse's verifier, not vendor-supplied); connector.phone_check.valid (boolean, carrier lookup)."
          },
          {
            "id": "c2",
            "kind": "deterministic",
            "title": "Profile match on stated hard filters",
            "check": {
              "and": [
                {
                  ">=": [
                    {
                      "var": "fields.employee_count"
                    },
                    {
                      "var": "terms.profile.employee_count_min"
                    }
                  ]
                },
                {
                  "<=": [
                    {
                      "var": "fields.employee_count"
                    },
                    {
                      "var": "terms.profile.employee_count_max"
                    }
                  ]
                },
                {
                  "in": [
                    {
                      "var": "fields.region"
                    },
                    {
                      "var": "terms.profile.regions"
                    }
                  ]
                },
                {
                  "or": [
                    {
                      "==": [
                        {
                          "var": "terms.profile.titles"
                        },
                        null
                      ]
                    },
                    {
                      "in": [
                        {
                          "var": "fields.title"
                        },
                        {
                          "var": "terms.profile.titles"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "weight": "required",
            "comment": "Facts: fields.employee_count, fields.region, fields.title; terms.profile.employee_count_min/max (numbers), terms.profile.regions (list), terms.profile.titles (exact titles list or null; persona fit beyond an exact list is r1)."
          },
          {
            "id": "c3",
            "kind": "deterministic",
            "title": "Not a duplicate within 180 days",
            "check": {
              "==": [
                {
                  "var": "connector.recourse.dedupe_matches_180d"
                },
                0
              ]
            },
            "weight": "required",
            "comment": "Facts: connector.recourse.dedupe_matches_180d (number of leads delivered in the prior 180 days under this commitment whose dedupe key — normalized email or phone — matches; Recourse's own record is the connector)."
          },
          {
            "id": "c4",
            "kind": "deterministic",
            "title": "Company domain not on the buyer's suppression list",
            "check": {
              "==": [
                {
                  "var": "connector.suppression.domain_match"
                },
                false
              ]
            },
            "weight": "material",
            "comment": "Facts: connector.suppression.domain_match (boolean; the buyer supplies the list at acceptance, stored hashed)."
          },
          {
            "id": "c5",
            "kind": "deterministic",
            "title": "Company domain not affiliated with the vendor",
            "check": {
              "==": [
                {
                  "var": "connector.affiliation.vendor_match"
                },
                false
              ]
            },
            "weight": "material",
            "comment": "Facts: connector.affiliation.vendor_match (boolean, shared identifiers between the lead's domain and the vendor). A confirmed match is self-dealing (R-312)."
          },
          {
            "id": "r1",
            "kind": "rubric",
            "title": "Title matches the target persona",
            "rubric": {
              "question": "Does the lead's title reasonably match the target persona described in the terms?",
              "pass_condition": "The title falls within the persona description in the terms, allowing for common variants of the same role.",
              "evidence_fields": [
                "title",
                "company_domain"
              ]
            },
            "weight": "material"
          }
        ],
        "exclusions": [
          "Generic mailboxes (info@, sales@) unless terms allow.",
          "Leads sourced from the buyer's own CRM."
        ],
        "gaming_defenses": [
          "Vendor-affiliation detection.",
          "Contact verification must be recent (7 days old or less).",
          "Rate anomaly review."
        ],
        "dedupe_key": "lead_id",
        "windows": {
          "statement_dispute_hours": 120,
          "evidence_hours": 48,
          "contact_verification_max_age_hours": 168,
          "dedupe_lookback_hours": 4320
        }
      }
    },
    {
      "id": "OS-3",
      "version": "0.4.0",
      "title": "Booked Meeting, Held",
      "hash": "sha256:35866ddd94b84b8316e3757e1afa62c7cd6ed1a30307e3d1a6ee99a3d0d6daea",
      "url": "https://recourse-mu.vercel.app/standards#OS-3",
      "document_url": "https://api.recourse.dev/v1/standards/OS-3",
      "standard": {
        "id": "OS-3",
        "version": "0.4.0",
        "title": "Booked Meeting, Held",
        "purpose": "Verify that a meeting booked by the vendor's agent with an external prospect was attended by the buyer's representative and lasted long enough to count, so the buyer pays only for meetings that held.",
        "unit": "One meeting booked by the vendor's agent with an external prospect that the buyer's representative attended and that lasted at least the minimum duration.",
        "evidence": {
          "artifacts": [
            {
              "name": "recording_or_notes",
              "media_types": [
                "audio/mpeg",
                "video/mp4",
                "text/plain",
                "text/markdown",
                "application/json"
              ],
              "required": false,
              "max_bytes": 104857600
            }
          ],
          "fields": [
            {
              "name": "meeting_id",
              "type": "id",
              "required": true,
              "dedupe_key": true
            },
            {
              "name": "prospect_email",
              "type": "string",
              "required": true
            },
            {
              "name": "prospect_domain",
              "type": "string",
              "required": true
            },
            {
              "name": "booked_at",
              "type": "datetime",
              "required": true
            },
            {
              "name": "scheduled_start",
              "type": "datetime",
              "required": true
            },
            {
              "name": "scheduled_end",
              "type": "datetime",
              "required": true
            },
            {
              "name": "attended",
              "type": "boolean",
              "required": true
            },
            {
              "name": "duration_minutes",
              "type": "number",
              "required": true
            }
          ]
        },
        "criteria": [
          {
            "id": "c1",
            "kind": "deterministic",
            "title": "Calendar event confirmed with at least one external attendee",
            "check": {
              "and": [
                {
                  "==": [
                    {
                      "var": "connector.gcal.status"
                    },
                    "confirmed"
                  ]
                },
                {
                  ">=": [
                    {
                      "var": "connector.gcal.attendee_count_external"
                    },
                    1
                  ]
                }
              ]
            },
            "weight": "required",
            "comment": "Facts: connector.gcal.status (calendar event status); connector.gcal.attendee_count_external (attendees whose domain is neither the buyer's nor the vendor's)."
          },
          {
            "id": "c2",
            "kind": "deterministic",
            "title": "Attendance confirmed",
            "check": {
              "or": [
                {
                  "==": [
                    {
                      "var": "connector.attendance.confirmed"
                    },
                    true
                  ]
                },
                {
                  "==": [
                    {
                      "var": "connector.buyer.confirmed_attendance"
                    },
                    true
                  ]
                }
              ]
            },
            "weight": "required",
            "comment": "Facts: connector.attendance.confirmed (boolean from the source of truth: calendar or meeting platform attendance); connector.buyer.confirmed_attendance (boolean, buyer confirmation within the review window). If the buyer neither confirms nor disputes, R-401 applies."
          },
          {
            "id": "c3",
            "kind": "deterministic",
            "title": "Meeting lasted at least the minimum duration",
            "check": {
              ">=": [
                {
                  "var": "fields.duration_minutes"
                },
                {
                  "var": "terms.min_duration"
                }
              ]
            },
            "weight": "required",
            "comment": "Facts: fields.duration_minutes (number); terms.min_duration (minutes, default 15)."
          },
          {
            "id": "c4",
            "kind": "deterministic",
            "title": "Not a duplicate by event id or by prospect and week",
            "check": {
              "and": [
                {
                  "==": [
                    {
                      "var": "connector.recourse.meeting_id_matches"
                    },
                    0
                  ]
                },
                {
                  "==": [
                    {
                      "var": "connector.recourse.prospect_week_matches"
                    },
                    0
                  ]
                }
              ]
            },
            "weight": "required",
            "comment": "Facts: connector.recourse.meeting_id_matches (previously verified units with the same calendar event id); connector.recourse.prospect_week_matches (previously verified units with the same prospect_email in the same week). Recourse's own record is the connector; a match rejects the duplicate (R-311)."
          },
          {
            "id": "c5",
            "kind": "deterministic",
            "title": "Scheduled within the period and booked no more than 45 days before the start",
            "check": {
              "and": [
                {
                  "within_window": [
                    {
                      "var": "fields.scheduled_start"
                    },
                    {
                      "var": "time.period_start"
                    },
                    {
                      "var": "time.period_end"
                    }
                  ]
                },
                {
                  "<=": [
                    {
                      "var": "time.booked_lead_days"
                    },
                    45
                  ]
                }
              ]
            },
            "weight": "material",
            "comment": "Facts: fields.scheduled_start; time.period_start, time.period_end; time.booked_lead_days (days between booked_at and scheduled_start, derived). within_window is a registered custom op."
          },
          {
            "id": "r1",
            "kind": "rubric",
            "title": "Prospect matches the target profile",
            "rubric": {
              "question": "Does the prospect match the target profile in the terms by title and company?",
              "pass_condition": "The prospect's role and company fall within the target profile described in the terms.",
              "evidence_fields": [
                "prospect_email",
                "prospect_domain"
              ]
            },
            "weight": "material"
          }
        ],
        "exclusions": [
          "Meetings with existing customers or open opportunities in the buyer's CRM at booking time (buyer supplies hashed list).",
          "Reschedules count once."
        ],
        "gaming_defenses": [
          "Vendor-affiliated domains detected.",
          "No-show handling: a no-show is not a unit.",
          "Reschedule chains collapse to one unit."
        ],
        "dedupe_key": "meeting_id",
        "windows": {
          "statement_dispute_hours": 120,
          "evidence_hours": 48,
          "buyer_confirmation_hours": 120
        }
      }
    },
    {
      "id": "CD-0",
      "version": "0.4.0",
      "title": "Custom Deliverable",
      "hash": "sha256:e4e5a667c05365c2c6f2aeab392e2a9f6d8e13c9a958630dd941897a05df0e87",
      "url": "https://recourse-mu.vercel.app/standards#CD-0",
      "document_url": "https://api.recourse.dev/v1/standards/CD-0",
      "standard": {
        "id": "CD-0",
        "version": "0.4.0",
        "title": "Custom Deliverable",
        "purpose": "A schema for one-shot deliverables. The vendor defines acceptance criteria using the acceptance criterion schema in the technical specification §5. Recourse requires at least one required deterministic criterion and rejects criteria that are not testable (R-520 applies against the drafter).",
        "unit": "One deliverable as described in the terms.",
        "evidence": {
          "artifacts": [
            {
              "name": "deliverable",
              "media_types": [
                "application/octet-stream",
                "application/zip",
                "application/pdf",
                "text/plain",
                "text/csv",
                "application/json"
              ],
              "required": true,
              "max_bytes": 1073741824
            }
          ],
          "fields": [
            {
              "name": "deliverable_id",
              "type": "id",
              "required": true,
              "dedupe_key": true
            },
            {
              "name": "delivered_at",
              "type": "datetime",
              "required": true
            }
          ]
        },
        "criteria": [
          {
            "id": "c1",
            "kind": "deterministic",
            "title": "Submitted before the deadline plus grace",
            "check": {
              "==": [
                {
                  "var": "time.submitted_before_deadline"
                },
                true
              ]
            },
            "weight": "required",
            "comment": "Facts: time.submitted_before_deadline (boolean, derived: the submission event time falls on or before the terms' deadline plus grace). Baseline criterion; the vendor's terms add deliverable-specific criteria on top and may tighten but not remove this one. A late submission is R-101 or R-102."
          }
        ],
        "exclusions": [],
        "gaming_defenses": [
          "At least one required deterministic criterion is enforced at terms validation.",
          "Criteria that are not testable as written are rejected before acceptance; ambiguity in accepted terms is read against the drafter (R-520)."
        ],
        "dedupe_key": "deliverable_id",
        "windows": {
          "statement_dispute_hours": 120,
          "evidence_hours": 48,
          "buyer_review_hours": 120
        }
      }
    }
  ]
}