Sense Makers - Staging QA Test Commands

Base44 Staging QA (API only) - cURL Commands & Postman Collection

Setup

Endpoint: https://czifxiwestltvhvcpgph.functions.supabase.co/chat-with-openai-v2

Expected Version:

SM-DEPLOY-031

Scenario A — Low Clarity Entry (Triage 1)

Version Check (GET)

Expected: X-Debug-Version: SM-DEPLOY-031

curl -X GET "https://czifxiwestltvhvcpgph.functions.supabase.co/chat-with-openai-v2" -H "x-client-info: b44-1.2.3" -v 2>&1 | grep -i "x-debug-version"

A1. Triage 1 - Kickoff (Create Chat)

⚠️ Save the chat_id from response

curl -X POST "https://czifxiwestltvhvcpgph.functions.supabase.co/chat-with-openai-v2" \
  -H "Content-Type: application/json" \
  -H "x-client-info: b44-1.2.3" \
  -d '{
    "user_text": "Kickoff – triage 1",
    "base44_inquiry_id": "qa-'$(date +%s)'",
    "journey_stage": "triage_selected_1",
    "debug_persist": true
  }' | jq

A2. Probe

curl -X POST "https://czifxiwestltvhvcpgph.functions.supabase.co/chat-with-openai-v2" \
  -H "Content-Type: application/json" \
  -H "x-client-info: b44-1.2.3" \
  -d '{
    "user_text": "next",
    "chat_id": "<PASTE_CHAT_ID_HERE>",
    "set_stage_to": "triage_followup_2",
    "debug_persist": true
  }' | jq

A3. Suggestion Bridge

curl -X POST "https://czifxiwestltvhvcpgph.functions.supabase.co/chat-with-openai-v2" \
  -H "Content-Type: application/json" \
  -H "x-client-info: b44-1.2.3" \
  -d '{
    "user_text": "bridge",
    "chat_id": "<PASTE_CHAT_ID_HERE>",
    "override_stage": "suggestion_bridge",
    "set_stage_to": "suggestion_bridge",
    "debug_persist": true
  }' | jq

A4. Solution Hub

curl -X POST "https://czifxiwestltvhvcpgph.functions.supabase.co/chat-with-openai-v2" \
  -H "Content-Type: application/json" \
  -H "x-client-info: b44-1.2.3" \
  -d '{
    "user_text": "choose",
    "chat_id": "<PASTE_CHAT_ID_HERE>",
    "override_stage": "solution_type",
    "set_stage_to": "solution_type",
    "debug_persist": true
  }' | jq

A5a. Artefact Offer

curl -X POST "https://czifxiwestltvhvcpgph.functions.supabase.co/chat-with-openai-v2" \
  -H "Content-Type: application/json" \
  -H "x-client-info: b44-1.2.3" \
  -d '{
    "user_text": "I want resources",
    "chat_id": "<PASTE_CHAT_ID_HERE>",
    "override_stage": "artefact_offer",
    "set_stage_to": "artefact_offer",
    "debug_persist": true
  }' | jq

A5b. Facilitator Match Intent

curl -X POST "https://czifxiwestltvhvcpgph.functions.supabase.co/chat-with-openai-v2" \
  -H "Content-Type: application/json" \
  -H "x-client-info: b44-1.2.3" \
  -d '{
    "user_text": "I want to speak with an expert",
    "chat_id": "<PASTE_CHAT_ID_HERE>",
    "override_stage": "facilitator_match_intent",
    "set_stage_to": "facilitator_match_intent",
    "debug_persist": true
  }' | jq
Scenario B — Some Clarity Entry (Triage 2)

B1. Triage 2 - Kickoff

Then follow A2-A5 with this chat_id

curl -X POST "https://czifxiwestltvhvcpgph.functions.supabase.co/chat-with-openai-v2" \
  -H "Content-Type: application/json" \
  -H "x-client-info: b44-1.2.3" \
  -d '{
    "user_text": "Kickoff – triage 2",
    "base44_inquiry_id": "qa-'$(date +%s)'-b",
    "journey_stage": "triage_selected_2",
    "debug_persist": true
  }' | jq
Scenario C — Knows Support Type (Triage 3)

C1. Triage 3 - Kickoff

curl -X POST "https://czifxiwestltvhvcpgph.functions.supabase.co/chat-with-openai-v2" \
  -H "Content-Type: application/json" \
  -H "x-client-info: b44-1.2.3" \
  -d '{
    "user_text": "Kickoff – triage 3",
    "base44_inquiry_id": "qa-'$(date +%s)'-c",
    "journey_stage": "triage_selected_3",
    "debug_persist": true
  }' | jq

C2. Jump to Solution Type

curl -X POST "https://czifxiwestltvhvcpgph.functions.supabase.co/chat-with-openai-v2" \
  -H "Content-Type: application/json" \
  -H "x-client-info: b44-1.2.3" \
  -d '{
    "user_text": "choose",
    "chat_id": "<PASTE_CHAT_ID_HERE>",
    "override_stage": "solution_type",
    "set_stage_to": "solution_type",
    "debug_persist": true
  }' | jq
What to Verify on Each Response

1. Stage Fields

  • stage = stored stage
  • debug.effective_stage = stage that assembled this turn

2. Modules Assembled (debug.module_names)

  • suggestion_bridge: includes suggestion_bridge__A_reflect_and_ask, suggestion_bridge__B_curated_paths
  • solution_type: includes solution_type__hub
  • artefact_offer: includes artefact_offer__summary_brief
  • facilitator_match_intent: includes facilitator_match_intent__soft_gate

3. Heartbeat

debug.last_message_at is non-null and updates

4. OpenAI Integration

  • debug.used_openai = true (when enabled)
  • debug.oai_status = 200
  • debug.model shows the model used
Postman Collection (Import JSON)

Copy this JSON and import it into Postman

{
  "info": {
    "name": "Sense Makers QA - Staging",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    {
      "key": "FN",
      "value": "https://czifxiwestltvhvcpgph.functions.supabase.co/chat-with-openai-v2"
    },
    {
      "key": "chat_id",
      "value": ""
    }
  ],
  "item": [
    {
      "name": "0. Version Check (GET)",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "x-client-info",
            "value": "b44-1.2.3"
          }
        ],
        "url": "{{FN}}"
      }
    },
    {
      "name": "A1. Triage 1 - Kickoff",
      "event": [
        {
          "listen": "test",
          "script": {
            "exec": [
              "const res = pm.response.json();",
              "pm.collectionVariables.set('chat_id', res.chat_id);"
            ]
          }
        }
      ],
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          },
          {
            "key": "x-client-info",
            "value": "b44-1.2.3"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"user_text\": \"Kickoff – triage 1\",\n  \"base44_inquiry_id\": \"qa-{{$timestamp}}\",\n  \"journey_stage\": \"triage_selected_1\",\n  \"debug_persist\": true\n}"
        },
        "url": "{{FN}}"
      }
    }
  ]
}