{
  "schema": "atris.aeo.workflow.v1",
  "updated_at": "2026-05-20",
  "product": {
    "company": "Atris Labs",
    "name": "Atris AEO",
    "category": "AI Engine Optimization",
    "canonical_definition": "Atris AEO is workspace-native AI Engine Optimization for products that need AI agents to discover, cite, parse, and complete product workflows.",
    "public_urls": {
      "overview": "https://atris.ai/aeo",
      "answer_source": "https://atris.ai/aeo/answer-source",
      "workspace_native_aeo": "https://atris.ai/aeo/workspace-native-aeo",
      "self_serve_guide": "https://atris.ai/aeo/self-serve",
      "self_serve_run_sheet": "https://atris.ai/aeo/self-serve/run-sheet",
      "self_serve_practice": "https://atris.ai/aeo/self-serve/practice",
      "self_serve_walkthrough": "https://atris.ai/aeo/self-serve/walkthrough",
      "self_serve_quickstart": "https://atris.ai/aeo/self-serve/quickstart",
      "self_serve_baseline": "https://atris.ai/aeo/self-serve/baseline",
      "self_serve_fix_builder": "https://atris.ai/aeo/self-serve/build-fix",
      "self_serve_fix_check": "https://atris.ai/aeo/self-serve/fix-check",
      "self_serve_proof_check": "https://atris.ai/aeo/self-serve/check",
      "self_serve_user_test": "https://atris.ai/aeo/self-serve/user-test",
      "self_serve_user_test_kit": "https://atris.ai/aeo/self-serve/user-test-kit",
      "self_serve_user_test_summary": "https://atris.ai/aeo/self-serve/user-test-summary",
      "self_serve_field_test": "https://atris.ai/aeo/self-serve/field-test",
      "self_serve_custom_quickstart": "https://atris.ai/aeo/self-serve/quickstart?url=https%3A%2F%2Fexample.com&practice_type=saas",
      "self_serve_custom_run_sheet": "https://atris.ai/aeo/self-serve/run-sheet?source_url=https%3A%2F%2Fexample.com&practice_type=saas",
      "self_serve_custom_walkthrough": "https://atris.ai/aeo/self-serve/walkthrough?source_url=https%3A%2F%2Fexample.com&practice_type=saas",
      "self_serve_custom_practice": "https://atris.ai/aeo/self-serve/practice?source_url=https%3A%2F%2Fexample.com&practice_type=saas",
      "self_serve_custom_baseline": "https://atris.ai/aeo/self-serve/baseline?url=https%3A%2F%2Fexample.com&practice_type=saas",
      "self_serve_custom_fix_builder": "https://atris.ai/aeo/self-serve/build-fix?source_url=https%3A%2F%2Fexample.com&practice_type=saas",
      "self_serve_custom_fix_check": "https://atris.ai/aeo/self-serve/fix-check?source_url=https%3A%2F%2Fexample.com&practice_type=saas",
      "self_serve_custom_proof_check": "https://atris.ai/aeo/self-serve/check?source_url=https%3A%2F%2Fexample.com&practice_type=saas",
      "self_serve_custom_user_test_kit": "https://atris.ai/aeo/self-serve/user-test-kit?source_url=https%3A%2F%2Fexample.com&practice_type=saas",
      "self_serve_custom_field_test": "https://atris.ai/aeo/self-serve/field-test?source_url=https%3A%2F%2Fexample.com&practice_type=saas",
      "self_serve_custom_user_test_slot": "https://atris.ai/aeo/self-serve/user-test?source_url=https%3A%2F%2Fexample.com&practice_type=saas&tester_slot=tester_1",
      "self_serve_proof_packet": "https://atris.ai/aeo/self-serve/quickstart#aeo-proof-packet-template",
      "pilot_intake": "https://atris.ai/aeo/pilot",
      "owner_approval": "https://atris.ai/aeo/owner-approval",
      "llms_txt": "https://atris.ai/llms.txt",
      "workflow_json": "https://atris.ai/aeo/workflow.json"
    },
    "answer_source_facts": [
      "Atris AEO is workspace-native AI Engine Optimization for agent discovery and agent usability.",
      "Workspace-native AEO is AI Engine Optimization where the customer workspace becomes the machine-readable source of truth for AI answers and agent workflows.",
      "Atris AEO publishes llms.txt, workflow JSON, JSON-LD, workflow maps, action contracts, friction reports, task evals, and proof packets.",
      "Atris AEO does not claim live AI-engine citation, customer deployment, payment, or repeatable pilot proof until external evidence exists."
    ]
  },
  "offer": {
    "name": "Atris Agent Experience Pilot",
    "price_usd_monthly": 2000,
    "interval": "month",
    "buyer_scope": "one buyer segment, one citation surface, one agent workflow, one proof packet",
    "checkout_creation": "admin_only_after_founder_review",
    "payment_claim_status": "not_paid_until_stripe_payment_succeeds"
  },
  "self_serve": {
    "status": "browser_baseline_ready_backend_self_serve_deploy_blocked",
    "start_url": "https://atris.ai/aeo/self-serve",
    "run_sheet_url": "https://atris.ai/aeo/self-serve/run-sheet",
    "practice_url": "https://atris.ai/aeo/self-serve/practice",
    "walkthrough_url": "https://atris.ai/aeo/self-serve/walkthrough",
    "quickstart_url": "https://atris.ai/aeo/self-serve/quickstart",
    "baseline_url": "https://atris.ai/aeo/self-serve/baseline",
    "fix_builder_url": "https://atris.ai/aeo/self-serve/build-fix",
    "fix_check_url": "https://atris.ai/aeo/self-serve/fix-check",
    "proof_check_url": "https://atris.ai/aeo/self-serve/check",
    "user_test_url": "https://atris.ai/aeo/self-serve/user-test",
    "user_test_kit_url": "https://atris.ai/aeo/self-serve/user-test-kit",
    "user_test_summary_url": "https://atris.ai/aeo/self-serve/user-test-summary",
    "field_test_url": "https://atris.ai/aeo/self-serve/field-test",
    "backend_quickstart_url": "https://api.atris.ai/api/business/aeo/self-serve.html",
    "backend_baseline_audit_url": "https://api.atris.ai/api/business/aeo/baseline-audit",
    "fallback_mode": "same-site quickstart returns static proof-action guide when the backend quickstart is stale or unavailable",
    "recommended_first_action": "Paste a public target URL into the no-JS form, create a first-run sheet, use practice mode only when the tester has no edit access, use the walkthrough whenever the next step is unclear, read the browser baseline result, build or copy one fix, check the first-fix draft, publish it on the same URL, rerun, save the proof receipts, check the receipts, use the user-test kit to recruit three unfamiliar testers with assigned tester slots, have each tester use the one-page tester runner and receipt form, track the field test in the no-JS console, ask each tester to record a user-test receipt, then stop before outbound or live-citation claims.",
    "start_flow": {
      "shown_on": "https://atris.ai/aeo/self-serve",
      "section_id": "run-baseline",
      "requires_javascript": false,
      "steps": [
        "paste_public_url",
        "create_first_run_sheet",
        "use_walkthrough_if_stuck",
        "run_browser_baseline",
        "build_first_fix_from_fields",
        "copy_one_fix",
        "check_first_fix",
        "publish_and_rerun",
        "save_receipts",
        "check_receipts",
        "recruit_three_unfamiliar_testers",
        "record_first_time_user_test",
        "track_field_test_console"
      ],
      "receipts": [
        "aeo_first_run_sheet",
        "baseline_result_url",
        "first_fix_draft",
        "before_after_receipt_uri",
        "after_baseline_result_url",
        "after_publish_proof_addendum",
        "proof_check_summary",
        "aeo_self_serve_review_packet",
        "user_test_recruiting_plan",
        "tester_slot",
        "first_time_user_test_receipt",
        "self_serve_user_test_summary",
        "aeo_field_test_console",
        "self_serve_ease_review_packet"
      ],
      "blocked_claims": [
        "live citation",
        "buyer interest",
        "approved outbound",
        "payment",
        "repeatable pilot proof"
      ]
    },
    "run_sheet": {
      "shown_on": "https://atris.ai/aeo/self-serve/run-sheet",
      "linked_from": "https://atris.ai/aeo/self-serve",
      "method": "GET",
      "section_id": "run-sheet-status",
      "goal": "turn one pasted public URL into an ordered first-run checklist with prefilled baseline, builder, checker, tester, summary, and final-proof links",
      "inputs": [
        "source_url",
        "practice_type"
      ],
      "output": "copyable AEO First-Run Sheet",
      "steps": [
        "run_baseline",
        "build_first_fix",
        "check_first_fix",
        "publish_same_url",
        "rerun_after_publish",
        "check_receipts",
        "recruit_testers",
        "track_field_test",
        "summarize_user_tests",
        "check_final_proof"
      ],
      "receipt_order": [
        "baseline_result_url",
        "first_fix_draft",
        "first_fix_check_summary",
        "before_after_receipt_uri",
        "after_baseline_result_url",
        "aeo_self_serve_review_packet",
        "user_test_recruiting_plan",
        "aeo_field_test_console",
        "self_serve_user_test_summary",
        "self_serve_ease_review_packet"
      ],
      "includes_prefilled_links": [
        "baseline_url",
        "first_fix_builder_url",
        "first_fix_check_url",
        "receipt_checker_url",
        "practice_no_edit_access_url",
        "tester_1_url",
        "tester_2_url",
        "tester_3_url",
        "user_test_summary_url",
        "field_test_url",
        "final_proof_check_url"
      ],
      "success_rule": "the sheet is navigation and receipt ordering only; any missing receipt or practice-only receipt keeps completion, repeatability, and ease claims blocked",
      "requires_javascript": false,
      "calls_backend": false,
      "does_not_fetch_receipt_urls": true,
      "creates_lead": false,
      "does_not_send_messages": true,
      "does_not_measure_live_citation": true
    },
    "walkthrough": {
      "shown_on": "https://atris.ai/aeo/self-serve/walkthrough",
      "linked_from": "https://atris.ai/aeo/self-serve",
      "method": "GET",
      "section_id": "walkthrough-status",
      "goal": "help first-time operators choose the next self-serve step from their current receipt state",
      "inputs": [
        "source_url",
        "practice_type",
        "has_baseline_result_url",
        "has_first_fix_draft",
        "has_first_fix_check_summary",
        "has_before_after_receipt_uri",
        "has_after_baseline_result_url",
        "has_proof_check_summary"
      ],
      "next_step_order": [
        "choose_public_url",
        "run_baseline",
        "copy_first_fix",
        "check_first_fix",
        "publish_same_url",
        "rerun_after_publish",
        "check_receipts",
        "ready_for_internal_review"
      ],
      "output": "copyable AEO Walkthrough Check summary",
      "success_rule": "returns exactly one next step and keeps blocked claims blank until separate receipts exist",
      "requires_javascript": false,
      "calls_backend": false,
      "does_not_fetch_receipt_urls": true,
      "creates_lead": false,
      "does_not_send_messages": true,
      "does_not_measure_live_citation": true
    },
    "practice_mode": {
      "shown_on": "https://atris.ai/aeo/self-serve/practice",
      "linked_from": "https://atris.ai/aeo/self-serve",
      "method": "GET",
      "section_id": "practice-status",
      "goal": "let a newcomer learn baseline, first-fix draft, and first-fix check when they cannot edit the audited URL",
      "inputs": [
        "source_url",
        "practice_type",
        "has_baseline_result_url",
        "has_first_fix_draft",
        "has_first_fix_check_summary",
        "no_edit_reason"
      ],
      "output": "copyable AEO Practice-Only Receipt",
      "success_rule": "practice can show the first half was understood, but can_count_as_first_time_user_pass and can_count_as_repeatable_self_serve_pass must remain no",
      "cannot_count_as": [
        "completed self-serve pass",
        "first-time user pass candidate",
        "repeatable self-serve pass candidate",
        "live citation",
        "buyer interest",
        "approved outbound",
        "payment"
      ],
      "requires_javascript": false,
      "calls_backend": false,
      "does_not_fetch_receipt_urls": true,
      "creates_lead": false,
      "does_not_send_messages": true,
      "does_not_measure_live_citation": true
    },
    "completion_rubric": {
      "shown_on": "https://atris.ai/aeo/self-serve",
      "section_id": "aeo-self-evaluation",
      "done_when": [
        "baseline_result_url and baseline score exist before editing",
        "first_fix_draft is published on the same audited public URL",
        "after_baseline_result_url exists after publishing",
        "proof packet includes before_after_receipt_uri",
        "proof packet includes after_publish_proof_addendum",
        "blocked claims stay blank until receipts exist"
      ],
      "if_missing": "return to the matching self-serve step and keep the missing claim blank",
      "blocked_claims": [
        "live citation",
        "buyer interest",
        "approved outbound",
        "payment",
        "repeatable pilot proof"
      ],
      "does_not_measure_live_citation": true
    },
    "url_picker_guide": {
      "shown_on": "https://atris.ai/aeo/self-serve",
      "section_id": "aeo-url-picker",
      "goal": "help first-time operators choose the first public page and practice type before running a baseline",
      "best_first_urls": [
        "product or feature page that explains what the product does, who it is for, and the outcome",
        "pricing or comparison page for cost, plan, alternative, and versus questions",
        "docs or API page for developer-tool setup, SDK, integration, or workflow questions"
      ],
      "avoid_first": [
        "login wall",
        "checkout-only screen",
        "PDF",
        "staging URL",
        "image-only page",
        "thin homepage"
      ],
      "practice_type_hints": {
        "saas": "software or service sold to a business user",
        "marketplace": "buyers, sellers, supply, demand, or listings",
        "ecommerce": "catalog, product, pricing, cart, or purchase path",
        "developer_tool": "docs, API, SDK, integration, CLI, or setup pages"
      },
      "requires_javascript": false
    },
    "example_completed_pass": {
      "shown_on": "https://atris.ai/aeo/self-serve",
      "section_id": "aeo-example-completed-pass",
      "goal": "give first-time operators a concrete proof-packet shape before they judge their own run complete",
      "uses_demo_values_only": true,
      "target_url_example": "https://example.com/product",
      "practice_type_example": "saas",
      "must_replace": [
        "target_url",
        "practice_type",
        "baseline_result_url",
        "baseline_score",
        "first_fix_draft",
        "published_fix_location",
        "after_baseline_result_url",
        "after_publish_proof_addendum"
      ],
      "receipt_fields": [
        "baseline_result_url",
        "first_fix_draft",
        "published_fix_location",
        "after_baseline_result_url",
        "after_publish_proof_addendum",
        "blocked_claims"
      ],
      "blocked_claims_still_blank": [
        "live citation",
        "buyer interest",
        "approved outbound",
        "payment"
      ],
      "requires_javascript": false,
      "does_not_measure_live_citation": true
    },
    "custom_target_run": {
      "default_target_url": "https://atris.ai/aeo",
      "default_practice_type": "saas",
      "input_form": {
        "url": "https://atris.ai/aeo/self-serve",
        "method": "GET",
        "action": "https://atris.ai/aeo/self-serve/baseline",
        "fields": [
          {
            "name": "url",
            "type": "url",
            "required": false,
            "placeholder": "https://example.com"
          },
          {
            "name": "practice_type",
            "type": "select",
            "required": false,
            "default": "saas"
          }
        ],
        "requires_javascript": false
      },
      "quickstart_url_template": "https://atris.ai/aeo/self-serve/quickstart?url={encoded_public_url}&practice_type={practice_type}",
      "baseline_url_template": "https://atris.ai/aeo/self-serve/baseline?url={encoded_public_url}&practice_type={practice_type}",
      "example_url": "https://atris.ai/aeo/self-serve/baseline?url=https%3A%2F%2Fexample.com&practice_type=saas",
      "query_params": [
        {
          "name": "url",
          "required": false,
          "description": "Public http or https page to baseline. Invalid or missing values fall back to the Atris sample."
        },
        {
          "name": "practice_type",
          "required": false,
          "description": "Short lowercase practice label such as saas, marketplace, ecommerce, or developer_tool."
        }
      ],
      "safety": {
        "allowed_protocols": [
          "https:",
          "http:"
        ],
        "max_url_length": 2048,
        "invalid_url_fallback": "https://atris.ai/aeo",
        "does_not_fetch_target_page_from_browser": true
      }
    },
    "browser_baseline_result": {
      "url": "https://atris.ai/aeo/self-serve/baseline",
      "method": "GET",
      "calls_backend": "https://api.atris.ai/api/business/aeo/baseline-audit",
      "shows": [
        "summary.score",
        "summary.verdict",
        "top_priorities[0]",
        "baseline_progress_checklist",
        "copyable_first_fix",
        "paste_ready_html_fix",
        "publish_by_site_type",
        "baseline_proof_packet_starter",
        "rerun_after_publishing",
        "after_publish_check",
        "after_publish_proof_addendum",
        "citation_check",
        "no_change_troubleshooting",
        "baseline_error_recovery",
        "claim_boundary"
      ],
      "requires_javascript": false,
      "does_not_measure_live_citation": true,
      "creates_lead": false,
      "does_not_send_messages": true
    },
    "baseline_progress_checklist": {
      "shown_on": "https://atris.ai/aeo/self-serve/baseline",
      "section_id": "baseline-progress-checklist",
      "goal": "show first-time operators where they are in the self-serve proof loop before they read the detailed sections",
      "steps": [
        "save_baseline_result_url",
        "copy_first_fix_draft",
        "publish_fix_and_save_before_after_receipt_uri",
        "rerun_and_save_after_baseline_result_url",
        "optional_citation_check_transcript"
      ],
      "receipt_fields": [
        "baseline_result_url",
        "first_fix_draft",
        "before_after_receipt_uri",
        "after_baseline_result_url",
        "citation_check_transcript_uri",
        "live_citation"
      ],
      "blank_until_receipt_exists": [
        "before_after_receipt_uri",
        "after_baseline_result_url",
        "citation_check_transcript_uri",
        "live_citation"
      ],
      "success_rule": "leave missing receipt fields blank instead of converting them into claims",
      "requires_javascript": false,
      "does_not_measure_live_citation": true,
      "creates_lead": false,
      "does_not_send_messages": true
    },
    "proof_checker": {
      "shown_on": "https://atris.ai/aeo/self-serve/check",
      "linked_from": "https://atris.ai/aeo/self-serve/baseline",
      "method": "GET",
      "section_id": "receipt-check-status",
      "goal": "let first-time operators verify whether their proof packet has enough receipts and whether unfamiliar-user evidence can support an ease claim candidate",
      "checks_required_receipts": [
        "baseline_result_url",
        "first_fix_draft",
        "before_after_receipt_uri",
        "after_baseline_result_url"
      ],
      "optional_receipts": [
        "citation_check_transcript_uri",
        "cited_url",
        "live_citation",
        "user_test_summary"
      ],
      "statuses": [
        "Paste receipts to check",
        "Missing required receipts",
        "Fix proof claims",
        "Ready for internal review"
      ],
      "unsafe_claim_rule": "live_citation is unsafe unless citation_check_transcript_uri and cited_url are both present",
      "ease_proof_check": {
        "field": "user_test_summary",
        "section_id": "ease-proof-status",
        "ready_status": "Self-serve ease claim candidate",
        "pass_rule": "base required receipts complete plus pasted AEO Self-Serve User Test Summary with repeatable_self_serve_pass_candidate=yes, distinct_tester_slots_complete=yes, pass_candidate_receipts >= 3, missing_tester_slots=none, and duplicate_tester_slots=none",
        "blocked_statuses": [
          "Base receipts incomplete",
          "Needs user-test summary",
          "User-test summary blocked"
        ],
        "output_fields": [
          "ease_claim_status",
          "self_serve_ease_claim_candidate",
          "user_test_summary_present",
          "repeatable_self_serve_pass_candidate",
          "distinct_tester_slots_complete",
          "missing_tester_slots",
          "duplicate_tester_slots",
          "pass_candidate_receipts"
        ]
      },
      "output": "copyable AEO Receipt Check summary and AEO Self-Serve Review Packet with self_serve_ease_claim_candidate",
      "review_packet_section_id": "review-packet",
      "review_packet": "copyable AEO Self-Serve Review Packet with required receipts, optional citation fields, pasted user-test summary status, blocked claims, unsafe live-citation state, ease-claim candidate status, and owner-gate reminder",
      "requires_javascript": false,
      "calls_backend": false,
      "does_not_fetch_receipt_urls": true,
      "creates_lead": false,
      "does_not_send_messages": true,
      "does_not_measure_live_citation": true
    },
    "user_test_kit": {
      "shown_on": "https://atris.ai/aeo/self-serve/user-test-kit",
      "linked_from": "https://atris.ai/aeo/self-serve",
      "method": "GET",
      "section_id": "user-test-kit-status",
      "goal": "help an operator recruit three unfamiliar testers without hand-writing links, instructions, or summary steps",
      "inputs": [
        "source_url",
        "practice_type"
      ],
      "tester_slots_required": 3,
      "required_distinct_tester_slots": [
        "tester_1",
        "tester_2",
        "tester_3"
      ],
      "slot_query_param": "tester_slot",
      "outputs": [
        "copyable AEO Three-Tester Recruit Message",
        "copyable AEO User-Test Recruiting Plan",
        "three assigned tester receipt links",
        "tester_1_link",
        "tester_2_link",
        "tester_3_link",
        "first_run_sheet_url",
        "user-test summary link"
      ],
      "start_rule": "each tester receives one assigned tester receipt link; the tester page includes the ordered runner links and receipt form in one place, with the first-run sheet kept as a backup checklist",
      "pass_rule": "the kit only prepares collection; repeatable self-serve proof still requires three clean AEO First-Time User Test receipts with distinct tester_slot values tester_1, tester_2, and tester_3 summarized by the user-test summary route",
      "failure_rule": "missing, confused, practice-only, or low-confidence tester receipts become product feedback",
      "requires_javascript": false,
      "calls_backend": false,
      "does_not_fetch_receipt_urls": true,
      "creates_lead": false,
      "does_not_send_messages": true,
      "does_not_measure_live_citation": true
    },
    "first_time_user_test": {
      "shown_on": "https://atris.ai/aeo/self-serve/user-test",
      "linked_from": "https://atris.ai/aeo/self-serve",
      "method": "GET",
      "section_id": "user-test-status",
      "goal": "turn an unfamiliar operator run into a copyable receipt so the self-serve flow can be improved or proven with real user evidence",
      "inputs": [
        "source_url",
        "practice_type",
        "tester_slot",
        "tester_role",
        "minutes_spent",
        "completed_without_help",
        "could_repeat",
        "confidence_score",
        "baseline_result_url",
        "first_fix_draft_uri",
        "first_fix_check_summary",
        "before_after_receipt_uri",
        "after_baseline_result_url",
        "proof_check_summary",
        "review_packet_uri"
      ],
      "tester_slot_values": [
        "tester_1",
        "tester_2",
        "tester_3"
      ],
      "required_steps": [
        "baseline_result_url",
        "first_fix_draft_uri",
        "first_fix_check_summary",
        "before_after_receipt_uri",
        "after_baseline_result_url",
        "proof_check_summary",
        "review_packet_uri"
      ],
      "required_evidence_fields": [
        "baseline_result_url",
        "first_fix_draft_uri",
        "first_fix_check_summary",
        "before_after_receipt_uri",
        "after_baseline_result_url",
        "proof_check_summary",
        "review_packet_uri"
      ],
      "optional_steps": [
        "practice_only_receipt"
      ],
      "practice_only_fallback": {
        "url": "https://atris.ai/aeo/self-serve/practice",
        "field": "has_practice_only_receipt",
        "receipt_field": "practice_only_receipt",
        "status": "Practice-only feedback",
        "cannot_count_as": [
          "completed self-serve pass",
          "first-time user pass candidate",
          "repeatable self-serve pass candidate"
        ]
      },
      "output": "copyable AEO First-Time User Test receipt",
      "receipt_fields": [
        "source_url",
        "practice_type",
        "tester_slot",
        "status",
        "tester_role",
        "minutes_spent",
        "completed_without_help",
        "could_repeat",
        "confidence_score",
        "baseline_result_url",
        "first_fix_draft_uri",
        "first_fix_check_summary",
        "before_after_receipt_uri",
        "after_baseline_result_url",
        "proof_check_summary",
        "review_packet_uri",
        "evidence_fields_complete",
        "required_steps_complete",
        "missing_steps",
        "practice_only_receipt",
        "no_edit_access_path",
        "stuck_step",
        "stuck_reason",
        "review_packet_uri"
      ],
      "tester_brief_section_id": "tester-brief",
      "tester_brief": "copyable AEO First-Time Tester Brief with tester-runner start link, backup first-run sheet link, target URL, practice type, assigned tester slot, no-edit-access practice link, ordered assignment, tester receipt form link, and blocked-claim reminder",
      "tester_runner_section_id": "tester-runner",
      "tester_runner": "inline ordered run checklist on the user-test page with baseline, first-fix builder, first-fix checker, publish guidance, rerun, receipt checker, and review-packet links beside required pasted evidence fields and the receipt form",
      "tester_start_url": "https://atris.ai/aeo/self-serve/user-test#tester-runner",
      "backup_tester_start_url": "https://atris.ai/aeo/self-serve/run-sheet",
      "pass_candidate_rule": "all required evidence fields present, evidence_fields_complete=yes, tester_slot present, completed_without_help=yes, could_repeat=yes, confidence_score >= 4, and no stuck_step or stuck_reason; checked boxes alone do not count, and practice_only_receipt cannot satisfy same-URL publish proof, rerun proof, or review packet proof",
      "failure_rule": "any missing evidence field, no-edit-access practice-only receipt, or confusion becomes product feedback, not a completion claim",
      "requires_javascript": false,
      "calls_backend": false,
      "does_not_fetch_receipt_urls": true,
      "creates_lead": false,
      "does_not_send_messages": true,
      "does_not_measure_live_citation": true
    },
    "user_test_summary": {
      "shown_on": "https://atris.ai/aeo/self-serve/user-test-summary",
      "linked_from": "https://atris.ai/aeo/self-serve/user-test",
      "method": "GET",
      "section_id": "user-test-summary-status",
      "goal": "summarize multiple unfamiliar-user receipts and decide whether the self-serve path has repeatable pass-candidate evidence",
      "minimum_pass_receipts_required": 3,
      "required_distinct_tester_slots": [
        "tester_1",
        "tester_2",
        "tester_3"
      ],
      "required_evidence_fields": [
        "baseline_result_url",
        "first_fix_draft_uri",
        "first_fix_check_summary",
        "before_after_receipt_uri",
        "after_baseline_result_url",
        "proof_check_summary",
        "review_packet_uri"
      ],
      "pass_receipt_rule": "each pasted receipt must be an AEO First-Time User Test with status=First-time user pass candidate, tester_slot in tester_1/tester_2/tester_3, completed_without_help=yes, could_repeat=yes, all required evidence fields nonblank, required_steps_complete=yes, missing_steps=none, confidence_score >= 4, and blank stuck fields; the three pass receipts must cover distinct tester_slot values tester_1, tester_2, and tester_3",
      "output": "copyable AEO Self-Serve User Test Summary, AEO User-Test Follow-Up Plan, and AEO User-Test Product Fix Backlog",
      "output_fields": [
        "distinct_tester_slots_complete",
        "missing_tester_slots",
        "duplicate_tester_slots",
        "next_missing_tester_slot",
        "next_tester_url",
        "ready_for_final_proof_check",
        "repeatable_self_serve_pass_candidate",
        "receipt_1_evidence_fields_complete"
      ],
      "follow_up_plan_section_id": "follow-up-plan",
      "follow_up_plan_fields": [
        "next_missing_tester_slot",
        "next_tester_url",
        "tester_1_url",
        "tester_2_url",
        "tester_3_url",
        "kit_url",
        "follow_up_message",
        "ready_for_final_proof_check",
        "blocked_claims"
      ],
      "failure_rule": "any incomplete or confused receipt becomes product feedback, not a repeatable ease claim; failed receipts create a copyable backlog with top_blocker, top_product_fix, evidence, rerun_rule, and blocked claims",
      "product_fix_backlog_section_id": "product-fix-backlog",
      "product_fix_backlog_fields": [
        "failed_or_incomplete_receipts",
        "top_blocker",
        "top_product_fix",
        "receipt evidence",
        "rerun_rule",
        "blocked_claims"
      ],
      "requires_javascript": false,
      "calls_backend": false,
      "does_not_fetch_receipt_urls": true,
      "creates_lead": false,
      "does_not_send_messages": true,
      "does_not_measure_live_citation": true
    },
    "field_test_console": {
      "shown_on": "https://atris.ai/aeo/self-serve/field-test",
      "linked_from": "https://atris.ai/aeo/self-serve",
      "method": "GET",
      "section_id": "field-test-status",
      "goal": "give operators one no-JS console for target URL, first-run sheet, assigned tester links, pasted tester receipts, next missing tester slot, summary route, and final proof checker link",
      "inputs": [
        "source_url",
        "practice_type",
        "receipt_1",
        "receipt_2",
        "receipt_3"
      ],
      "output": "copyable AEO Field-Test Console tracker",
      "required_evidence_fields": [
        "baseline_result_url",
        "first_fix_draft_uri",
        "first_fix_check_summary",
        "before_after_receipt_uri",
        "after_baseline_result_url",
        "proof_check_summary",
        "review_packet_uri"
      ],
      "output_fields": [
        "first_run_sheet_url",
        "tester_1_url",
        "tester_2_url",
        "tester_3_url",
        "summary_url",
        "final_proof_check_url",
        "present_receipts",
        "pass_candidate_receipts",
        "failed_or_incomplete_receipts",
        "missing_tester_slots",
        "duplicate_tester_slots",
        "next_tester_slot",
        "next_tester_url",
        "ready_for_final_proof_check",
        "receipt_1_evidence_fields_complete",
        "follow_up_message",
        "blocked_claims"
      ],
      "pass_receipt_rule": "matches the user-test summary: status=First-time user pass candidate, tester_slot in tester_1/tester_2/tester_3, completed_without_help=yes, could_repeat=yes, all required evidence fields nonblank, required_steps_complete=yes, missing_steps=none, confidence_score >= 4, blank stuck fields, and no duplicate tester_slot values",
      "statuses": [
        "Create field test",
        "Collect more tester receipts",
        "Fix product feedback first",
        "Ready for final proof check"
      ],
      "failure_rule": "any incomplete, confused, or duplicate-slot receipt blocks the console at product feedback before recruiting another tester",
      "requires_javascript": false,
      "calls_backend": false,
      "does_not_fetch_receipt_urls": true,
      "creates_lead": false,
      "does_not_send_messages": true,
      "does_not_measure_live_citation": true
    },
    "baseline_error_recovery": {
      "shown_on": "https://atris.ai/aeo/self-serve/baseline",
      "section_id": "baseline-error-recovery",
      "appears_when": "backend baseline audit returns non-2xx or is unavailable",
      "status_code": 200,
      "receipt_to_save": "baseline_error_receipt_url",
      "retry_rule": "retry once with the same target URL and practice type before changing inputs",
      "checks": [
        "target URL is public",
        "not a login wall",
        "not a PDF",
        "not a staging URL",
        "not a checkout-only screen",
        "not an image-only page"
      ],
      "allowed_next_step": "open quickstart and draft one manual first-fix block while waiting for a real baseline",
      "fields_to_leave_blank": [
        "baseline_score",
        "baseline_result_url",
        "live citation"
      ],
      "blocked_claims": [
        "live citation",
        "buyer interest",
        "approved outbound",
        "payment",
        "completion"
      ],
      "creates_lead": false,
      "does_not_send_messages": true,
      "does_not_measure_live_citation": true
    },
    "first_fix_template": {
      "shown_on": "https://atris.ai/aeo/self-serve/baseline",
      "format": "copyable_markdown",
      "section_id": "copyable-first-fix",
      "required_fill_ins": [
        "product_name",
        "category",
        "customer",
        "outcome",
        "source_url"
      ],
      "proof_to_save": [
        "baseline score",
        "draft block",
        "exact page or PR where the block is placed"
      ],
      "blocked_claims": [
        "deployed fix",
        "live citation",
        "buyer interest",
        "payment"
      ]
    },
    "first_fix_builder": {
      "shown_on": "https://atris.ai/aeo/self-serve/build-fix",
      "linked_from": "https://atris.ai/aeo/self-serve/baseline#copyable-first-fix",
      "method": "GET",
      "section_id": "first-fix-builder-status",
      "goal": "help first-time operators turn simple product facts into a first-fix Markdown and HTML answer block",
      "fields": [
        "source_url",
        "practice_type",
        "question",
        "product_name",
        "category",
        "customer",
        "job",
        "mechanism",
        "outcome",
        "updated_date"
      ],
      "output": [
        "copyable Markdown first_fix_draft",
        "copyable paste-ready HTML",
        "prefilled fix-check link"
      ],
      "success_rule": "generated copy must still pass the first-fix checker before publishing and is not deployment or citation proof",
      "requires_javascript": false,
      "calls_backend": false,
      "does_not_fetch_receipt_urls": true,
      "creates_lead": false,
      "does_not_send_messages": true,
      "does_not_measure_live_citation": true
    },
    "first_fix_checker": {
      "shown_on": "https://atris.ai/aeo/self-serve/fix-check",
      "linked_from": "https://atris.ai/aeo/self-serve/baseline#copyable-first-fix",
      "method": "GET",
      "section_id": "first-fix-check-status",
      "goal": "help first-time operators validate the copied first-fix answer block before publishing it",
      "checks": [
        "no_placeholders",
        "question_heading",
        "definition_sentence",
        "source_url",
        "updated_date"
      ],
      "statuses": [
        "Paste first fix to check",
        "Fix draft before publishing",
        "Ready to publish draft"
      ],
      "success_rule": "ready only means the answer block has the basic AEO shape; deployment and citation claims still need separate receipts",
      "output": "copyable AEO First Fix Check summary",
      "requires_javascript": false,
      "calls_backend": false,
      "does_not_fetch_receipt_urls": true,
      "creates_lead": false,
      "does_not_send_messages": true,
      "does_not_measure_live_citation": true
    },
    "paste_ready_html_fix": {
      "shown_on": "https://atris.ai/aeo/self-serve/baseline",
      "format": "paste_ready_html",
      "section_id": "paste-ready-html-fix",
      "target_page_rule": "Place on the audited target page below the hero or intro and before feature grids, footers, or legal copy.",
      "keeps_visible": [
        "H2 question heading",
        "direct answer paragraph",
        "source URL",
        "updated date"
      ],
      "avoid": [
        "hidden tabs",
        "accordions",
        "image-only text",
        "footer-only placement"
      ],
      "proof_to_save": [
        "changed page URL",
        "pull request URL",
        "before_after_receipt_uri"
      ]
    },
    "publish_by_site_type": {
      "shown_on": "https://atris.ai/aeo/self-serve/baseline",
      "section_id": "publish-by-site-type",
      "goal": "help non-experts place the copied first-fix block in the correct editor surface for their site type",
      "universal_rule": "publish one visible answer on the same audited URL, then save the public page URL or pull request as before_after_receipt_uri",
      "platforms": [
        {
          "type": "wordpress_or_cms",
          "place": "Custom HTML or rich-text block below the intro on the audited page",
          "avoid": [
            "sidebar only",
            "footer only",
            "hidden tab",
            "draft preview"
          ]
        },
        {
          "type": "webflow_framer_site_builder",
          "place": "embed or text block visible on load on the same audited page",
          "avoid": [
            "unpublished branch",
            "symbol-only component",
            "interaction-gated panel"
          ]
        },
        {
          "type": "shopify_ecommerce",
          "place": "product, collection, comparison, or policy page that was audited",
          "avoid": [
            "checkout",
            "cart",
            "account",
            "app-only surface"
          ]
        },
        {
          "type": "docs_developer_portal",
          "place": "relevant setup, API, SDK, or integration section",
          "avoid": [
            "changelog only",
            "collapsed table of contents",
            "private docs space"
          ]
        },
        {
          "type": "custom_app_or_repo",
          "place": "small pull request against the audited route or markdown source",
          "avoid": [
            "page refactor",
            "unrelated content moves"
          ]
        }
      ],
      "proof_to_save": [
        "before_after_receipt_uri",
        "published page URL",
        "pull request URL"
      ],
      "requires_javascript": false
    },
    "rerun_after_publishing": {
      "shown_on": "https://atris.ai/aeo/self-serve/baseline",
      "method": "GET",
      "section_id": "rerun-after-publishing",
      "carries_forward": [
        "previous_score",
        "previous_answered",
        "previous_verdict",
        "previous_top_priority"
      ],
      "compares": [
        "score",
        "answered_questions",
        "top_priority"
      ],
      "proof_to_save": [
        "after_baseline_result_url",
        "before_after_receipt_uri"
      ],
      "does_not_measure_live_citation": true
    },
    "after_publish_proof_addendum": {
      "shown_on": "https://atris.ai/aeo/self-serve/baseline",
      "format": "copyable_markdown",
      "section_id": "after-publish-proof-addendum",
      "appears_when": "after_publish_check renders from previous_* query params",
      "includes": [
        "source_url",
        "practice_type",
        "after_baseline_result_url",
        "before_after_receipt_uri",
        "before_score",
        "current_score",
        "before_answered_questions",
        "current_answered_questions",
        "before_top_priority",
        "current_top_priority",
        "result",
        "blocked_claims"
      ],
      "proof_to_save": [
        "after_baseline_result_url",
        "before_after_receipt_uri"
      ],
      "blocked_claims": [
        "live citation",
        "buyer interest",
        "approved outbound",
        "payment",
        "repeatable pilot proof"
      ],
      "does_not_measure_live_citation": true
    },
    "citation_check": {
      "shown_on": "https://atris.ai/aeo/self-serve/baseline",
      "section_id": "citation-check",
      "timing": "after publishing the fix and saving after_baseline_result_url",
      "engines": [
        "ChatGPT",
        "Claude",
        "Gemini",
        "Perplexity"
      ],
      "prompt_fields": [
        "target_url",
        "practice_type",
        "question_to_answer",
        "require_source_url",
        "say_not_found_if_uncited"
      ],
      "proof_to_save": [
        "citation_check_prompt",
        "citation_check_transcript_uri",
        "cited_url",
        "answer_engine",
        "checked_at"
      ],
      "success_rule": "live_citation stays blank unless the saved transcript cites the audited target URL",
      "blocked_claims": [
        "buyer interest",
        "approved outbound",
        "payment",
        "repeatable pilot proof"
      ],
      "requires_javascript": false,
      "does_not_measure_live_citation": true,
      "creates_lead": false,
      "does_not_send_messages": true
    },
    "no_change_troubleshooting": {
      "shown_on": "https://atris.ai/aeo/self-serve/baseline",
      "section_id": "no-change-troubleshooting",
      "appears_when": "after_publish_check renders from previous_* query params and score, answered count, and top priority do not improve",
      "checks": [
        "same target URL",
        "same practice type",
        "visible answer without interaction",
        "H2 question heading",
        "source URL and updated date",
        "no noindex or robots block",
        "no login wall",
        "no preview-only URL"
      ],
      "proof_to_save": [
        "after_baseline_result_url",
        "before_after_receipt_uri"
      ],
      "does_not_measure_live_citation": true
    },
    "baseline_proof_packet_starter": {
      "shown_on": "https://atris.ai/aeo/self-serve/baseline",
      "format": "copyable_markdown",
      "section_id": "baseline-proof-packet-starter",
      "includes": [
        "source_url",
        "practice_type",
        "baseline_score",
        "baseline_verdict",
        "answered_questions",
        "top_priority",
        "first_fix_draft",
        "proof_to_save",
        "blocked_claims"
      ],
      "blocked_claims": [
        "live citation",
        "deployed fix",
        "buyer interest",
        "approved outbound",
        "payment",
        "repeatable pilot proof"
      ]
    },
    "operator_steps": [
      {
        "id": "open_guide",
        "label": "Open self-serve guide",
        "url": "https://atris.ai/aeo/self-serve"
      },
      {
        "id": "create_run_sheet",
        "label": "Create one first-run sheet from the target URL",
        "url": "https://atris.ai/aeo/self-serve/run-sheet"
      },
      {
        "id": "practice_without_edit_access",
        "label": "Use practice mode only when no edit access exists",
        "url": "https://atris.ai/aeo/self-serve/practice"
      },
      {
        "id": "find_next_step",
        "label": "Use walkthrough if the next step is unclear",
        "url": "https://atris.ai/aeo/self-serve/walkthrough"
      },
      {
        "id": "run_sample_baseline",
        "label": "Use Atris sample and run baseline",
        "url": "https://atris.ai/aeo/self-serve/baseline"
      },
      {
        "id": "build_first_fix",
        "label": "Build the first-fix block from plain fields",
        "url": "https://atris.ai/aeo/self-serve/build-fix"
      },
      {
        "id": "draft_first_fix",
        "label": "Copy the first-fix template and replace the blanks",
        "url": "https://atris.ai/aeo/self-serve/baseline"
      },
      {
        "id": "check_first_fix",
        "label": "Check the first-fix draft before publishing",
        "url": "https://atris.ai/aeo/self-serve/fix-check"
      },
      {
        "id": "place_html_fix",
        "label": "Paste the HTML fix on the audited page",
        "url": "https://atris.ai/aeo/self-serve/baseline"
      },
      {
        "id": "save_baseline_proof_packet",
        "label": "Save the prefilled baseline proof packet",
        "url": "https://atris.ai/aeo/self-serve/baseline"
      },
      {
        "id": "rerun_after_publishing",
        "label": "Rerun the baseline after publishing the fix",
        "url": "https://atris.ai/aeo/self-serve/baseline"
      },
      {
        "id": "check_receipts",
        "label": "Check whether required receipts are present",
        "url": "https://atris.ai/aeo/self-serve/check"
      },
      {
        "id": "recruit_three_testers",
        "label": "Recruit three unfamiliar testers",
        "url": "https://atris.ai/aeo/self-serve/user-test-kit"
      },
      {
        "id": "track_field_test",
        "label": "Track tester receipts and next missing slot",
        "url": "https://atris.ai/aeo/self-serve/field-test"
      },
      {
        "id": "check_final_proof",
        "label": "Paste the user-test summary into the receipt checker",
        "url": "https://atris.ai/aeo/self-serve/check"
      },
      {
        "id": "owner_gate",
        "label": "Finish owner approval before outbound",
        "url": "https://atris.ai/aeo/owner-approval"
      }
    ],
    "proof_actions": [
      {
        "id": "save_baseline_receipt",
        "good_result": "baseline JSON includes summary.score and any top_priorities[0]",
        "proof_to_save": "baseline-audit JSON",
        "failure_action": "fix the URL or practice type, then rerun baseline before editing",
        "do_not_claim": "live citation, deployment, payment, or outbound"
      },
      {
        "id": "save_first_fix_receipt",
        "good_result": "one missing answer or workflow gap has a concrete proposed block",
        "proof_to_save": "before/after note plus proposed copy or schema",
        "failure_action": "reduce scope to one answer, one source, or one approval step",
        "do_not_claim": "deployed fix"
      },
      {
        "id": "save_review_request_receipt",
        "good_result": "a founder can see the score, first fix, and exact next decision",
        "proof_to_save": "review request text and target URL",
        "failure_action": "rewrite the request until it names one decision and one artifact",
        "do_not_claim": "buyer interest"
      },
      {
        "id": "stop_at_owner_gate",
        "good_result": "owner approval page lists route_confirmation_source_uri, exact owner reply, owner_response_source_uri, manual_send, and send_evidence_uri",
        "proof_to_save": "route confirmation source, exact owner reply, and concrete owner_response_source_uri",
        "failure_action": "do not send; collect the missing route, owner, or send field first",
        "do_not_claim": "approved_outbound_sent until real send_evidence_uri exists"
      }
    ],
    "proof_packet_template": {
      "url": "https://atris.ai/aeo/self-serve/quickstart#aeo-proof-packet-template",
      "format": "markdown",
      "section_id": "aeo-proof-packet-template",
      "copy_target_id": "aeo-proof-packet-markdown",
      "required_fields": [
        "source_url",
        "run_at",
        "baseline_receipt_uri",
        "baseline_score",
        "top_priority",
        "fix_summary",
        "before_after_receipt_uri",
        "review_request_uri",
        "decision_needed",
        "route_confirmation_source_uri",
        "owner_response_source_uri",
        "send_evidence_uri"
      ],
      "allowed_now": [
        "self-serve baseline",
        "proposed first fix",
        "review request prepared"
      ],
      "blocked_until_evidence": [
        "live citation",
        "deployed fix",
        "buyer interest",
        "approved outbound",
        "payment",
        "repeatable pilot proof"
      ],
      "readiness_rule": "Leave unknown fields blank; do not convert a missing receipt into a claim."
    },
    "proof_boundary": {
      "same_site_quickstart_ready": true,
      "backend_self_serve_surface_ready": false,
      "backend_status": "stale_contract_waiting_deploy",
      "does_not_send_messages": true,
      "approved_outbound_sent": false,
      "requires_exact_owner_reply": true,
      "requires_route_confirmation_source_uri": true,
      "requires_owner_response_source_uri": true,
      "requires_real_send_evidence_uri": true
    }
  },
  "pillars": [
    {
      "id": "discovery",
      "name": "Discovery",
      "objective": "Make the product easy for AI engines to find, understand, and cite.",
      "target_surfaces": [
        "ChatGPT",
        "Perplexity",
        "Gemini",
        "DeepSeek",
        "Google AI",
        "Claude Code"
      ],
      "artifacts": [
        "question_map",
        "entity_graph",
        "faq_atoms",
        "comparison_claims",
        "json_ld",
        "llms_txt"
      ]
    },
    {
      "id": "usability",
      "name": "Usability",
      "objective": "Make the product path easy for AI agents to complete without human rescue.",
      "workflows": [
        "compare",
        "price",
        "configure",
        "approve",
        "checkout",
        "onboard",
        "support"
      ],
      "artifacts": [
        "workflow_map",
        "action_contract",
        "friction_report",
        "task_eval",
        "proof_packet"
      ]
    }
  ],
  "operator_console": {
    "source_url": "https://atris.ai/aeo",
    "status": "public_sales_surface_ready_external_proof_blocked",
    "loop": [
      {
        "id": "discover",
        "label": "Discover",
        "objective": "Map buyer questions and AI-engine mention gaps.",
        "output": "question_map"
      },
      {
        "id": "publish",
        "label": "Publish",
        "objective": "Create source-backed answers, schema, and agent-readable artifacts.",
        "output": "structured_answer_surface"
      },
      {
        "id": "route",
        "label": "Route",
        "objective": "Send AI traffic to the clean agent-readable page instead of ambiguous product UI.",
        "output": "agent_page_route"
      },
      {
        "id": "evaluate",
        "label": "Evaluate",
        "objective": "Measure workflow completion, friction, and proof gates.",
        "output": "task_eval_and_scorecard"
      }
    ],
    "question_map_preview": [
      {
        "question": "Best agent-ready sales platform?",
        "current_status": "missing_atris_in_answer",
        "fix_surface": "answer_source"
      },
      {
        "question": "How do I price a founder-led pilot?",
        "current_status": "needs_proof_gated_offer",
        "fix_surface": "pilot_intake"
      },
      {
        "question": "Can an agent request checkout?",
        "current_status": "needs_approval_path",
        "fix_surface": "admin_checkout_creation"
      }
    ],
    "agent_surface_artifacts": [
      {
        "artifact": "llms.txt",
        "status": "ready",
        "url": "https://atris.ai/llms.txt"
      },
      {
        "artifact": "workflow_json",
        "status": "ready",
        "url": "https://atris.ai/aeo/workflow.json"
      },
      {
        "artifact": "self_serve_guide",
        "status": "ready",
        "url": "https://atris.ai/aeo/self-serve"
      },
      {
        "artifact": "self_serve_walkthrough",
        "status": "ready",
        "url": "https://atris.ai/aeo/self-serve/walkthrough"
      },
      {
        "artifact": "self_serve_quickstart",
        "status": "ready",
        "url": "https://atris.ai/aeo/self-serve/quickstart"
      },
      {
        "artifact": "self_serve_baseline",
        "status": "ready",
        "url": "https://atris.ai/aeo/self-serve/baseline"
      },
      {
        "artifact": "self_serve_fix_builder",
        "status": "ready",
        "url": "https://atris.ai/aeo/self-serve/build-fix"
      },
      {
        "artifact": "self_serve_fix_check",
        "status": "ready",
        "url": "https://atris.ai/aeo/self-serve/fix-check"
      },
      {
        "artifact": "action_contract",
        "status": "approval_gated",
        "url": "https://atris.ai/aeo/workflow.json#admin_api"
      },
      {
        "artifact": "task_eval",
        "status": "blocked_on_live_customer_run",
        "url": null
      }
    ],
    "proof_gates": {
      "live_citation_evidence": false,
      "approved_outbound_sent": false,
      "buyer_response_logged": false,
      "customer_approved_deployment": false,
      "live_task_eval_completed": false,
      "paid_checkout_receipt": false,
      "repeatable_paid_pilots": false
    },
    "owner_approval_gate": {
      "url": "https://atris.ai/aeo/owner-approval",
      "robots": "noindex,nofollow",
      "status": "waiting_exact_owner_reply",
      "required_before_approved_outbound_sent": [
        "route_confirmation_source_uri",
        "exact_owner_reply",
        "owner_response_source_uri",
        "manual_send",
        "real_send_evidence_uri"
      ],
      "does_not_send_messages": true,
      "does_not_open_draft": true,
      "does_not_mark_external_proof": true,
      "requires_route_confirmation_source_uri": true,
      "approved_outbound_sent": false
    },
    "next_action": "Collect exact owner approval, manually send the approved pilot message, and attach real sent-message evidence before claiming approved_outbound_sent."
  },
  "workflow": [
    {
      "id": "buyer_question_map",
      "step": 1,
      "agent_action": "Identify the exact buyer questions and prompts Atris should answer.",
      "inputs": [
        "workspace_docs",
        "sales_notes",
        "support_threads",
        "competitor_surfaces"
      ],
      "outputs": [
        "question_map",
        "content_gaps"
      ],
      "success_metric": "target query has a direct Atris answer and sourceable claim"
    },
    {
      "id": "agent_readable_surface",
      "step": 2,
      "agent_action": "Create or update machine-readable surfaces that agents can parse.",
      "inputs": [
        "entity_graph",
        "canonical_definition",
        "pricing_terms",
        "workflow_contract"
      ],
      "outputs": [
        "llms_txt",
        "json_ld",
        "workflow_json",
        "faq_atoms"
      ],
      "success_metric": "agent can cite Atris AEO and load the workflow without scraping ambiguous UI text"
    },
    {
      "id": "workflow_friction_test",
      "step": 3,
      "agent_action": "Run an agent through the target workflow and record failure points.",
      "inputs": [
        "workflow_json",
        "pilot_scope",
        "checkout_gate",
        "approval_policy"
      ],
      "outputs": [
        "friction_report",
        "task_eval",
        "before_after"
      ],
      "success_metric": "agent knows which actions are allowed, blocked, or approval-gated"
    },
    {
      "id": "admin_checkout_creation",
      "step": 4,
      "agent_action": "After founder approval, create the fixed Stripe checkout link through the admin path.",
      "inputs": [
        "buyer_email",
        "optional_agreement_id",
        "authenticated_admin_session"
      ],
      "outputs": [
        "checkout_url",
        "checkout_session_id",
        "payment_evidence_uri"
      ],
      "success_metric": "checkout link exists, but payment is not claimed until Stripe confirms success"
    },
    {
      "id": "proof_packet",
      "step": 5,
      "agent_action": "Package citation, usability, checkout, and payment evidence into one reviewable proof packet.",
      "inputs": [
        "question_map",
        "friction_report",
        "task_eval",
        "checkout_session",
        "stripe_payment_receipt"
      ],
      "outputs": [
        "proof_packet",
        "scorecard",
        "next_distribution_asset"
      ],
      "success_metric": "external proof exists for discovery, usability, and payment before the customer is counted as sold"
    }
  ],
  "claim_gates": {
    "can_claim_public_offer": true,
    "can_claim_checkout_created": "only_with_checkout_session_id",
    "can_claim_paid_customer": "only_with_stripe_payment_success_receipt",
    "can_claim_repeatable_motion": "only_after_multiple_external buyer receipts"
  },
  "admin_api": {
    "web_proxy": "/api/subscription/admin/aeo-pilot-checkout",
    "auth": "required",
    "method": "POST",
    "required_body": {
      "buyer_email": "string email"
    },
    "optional_body": {
      "agreement_id": "string"
    }
  }
}