Skip to main content

Documentation Index

Fetch the complete documentation index at: https://howto.paigeme.dev/llms.txt

Use this file to discover all available pages before exploring further.

Paige includes two survey flow templates that show different approaches to collecting structured responses from a large number of participants inside WhatsApp. Both use a consent screen to open, collect the user’s answers across one or more screens, and gather personal contact details on a final screen. The key difference is in how questions are structured and how routing logic is handled.

Road extension survey (survey_road_extension)

This is a 3-screen community petition flow. The user first sees a consent statement, then selects whether they support or oppose a specific proposal, and finally fills in their personal details. It was built for a real-world civic survey about a planned road extension, and demonstrates how to collect a clear binary position alongside verified contact information.

Screen breakdown

The screen title is Before Starting. The heading reads: “Show your support or opposition to the planned Wildebosch Road Extension.” The body text explains that by participating the respondent declares they are an interested and affected party and mandates their ward councillor to submit the survey to the municipality and town planners.Tapping Continue navigates to the position screen.

Screen 2: Select position (SELECTION_SCREEN)

The screen title is Select your position.
FieldTypeRequiredOptions
Select your positionRadioButtonsGroupYesSUPPORT — I support the construction · OPPOSE — I oppose the construction
Tapping Continue passes the selected position to the details screen.

Screen 3: Personal details (SURVEY_DETAILS_SCREEN)

The screen title is Details. This is the terminal screen.
FieldTypeRequiredInput type / Notes
InitialsTextInputYesText
SurnameTextInputYesText
Street AddressTextInputYesText
Email AddressTextInputYesEmail
Cellphone NumberTextInputYesPhone
Date of BirthTextInputYesPattern YYYY-MM-DD, helper text “E.g. 1993-08-04”
Tapping Submit completes the flow.

Components used

TextHeading, TextBody, RadioButtonsGroup, TextInput, Footer

Submitted payload

KeyValue
position"support" or "oppose"
initialsInitials
surnameSurname
street_addressStreet address
emailEmail address
cellphone_numberCellphone number
date_of_birthDate of birth in YYYY-MM-DD format

How to generate this flow

Open the AI agent and send a prompt like:
  • "Use the road extension survey template"
  • "Create a community petition survey flow"
  • "Generate a survey flow with a consent screen, position selection, and personal details"

Flow JSON (Screen 1 and 2)

{
  "version": "7.3",
  "routing_model": {
    "CONSENT_SCREEN": ["SELECTION_SCREEN"],
    "SELECTION_SCREEN": ["SURVEY_DETAILS_SCREEN"],
    "SURVEY_DETAILS_SCREEN": []
  },
  "screens": [
    {
      "id": "CONSENT_SCREEN",
      "title": "Before Starting",
      "data": {},
      "layout": {
        "type": "SingleColumnLayout",
        "children": [
          {
            "type": "TextHeading",
            "text": "Show your support or opposition to the planned Wildebosch Road Extension."
          },
          {
            "type": "TextBody",
            "text": "By partipating in this survey I declare that I am an interested and affected party, and that I mandate my ward councillor MYNARD SLABBERT to send this surevy to both the Stellenbosch Municipality and town planners."
          },
          {
            "type": "Footer",
            "label": "Continue",
            "on-click-action": {
              "name": "navigate",
              "next": { "type": "screen", "name": "SELECTION_SCREEN" },
              "payload": {}
            }
          }
        ]
      }
    },
    {
      "id": "SELECTION_SCREEN",
      "title": "Select your position",
      "data": {},
      "layout": {
        "type": "SingleColumnLayout",
        "children": [
          {
            "type": "Form",
            "name": "text_input_form",
            "children": [
              {
                "type": "RadioButtonsGroup",
                "name": "position",
                "label": "Select your position",
                "required": true,
                "data-source": [
                  {
                    "id": "support",
                    "title": "SUPPORT",
                    "description": "I support the construction of the Wildebosch road extension."
                  },
                  {
                    "id": "oppose",
                    "title": "OPPOSE",
                    "description": "I oppose the construction of the Wildebosch road extension."
                  }
                ],
                "on-select-action": { "name": "update_data", "payload": {} }
              },
              {
                "type": "Footer",
                "label": "Continue",
                "on-click-action": {
                  "name": "navigate",
                  "next": { "type": "screen", "name": "SURVEY_DETAILS_SCREEN" },
                  "payload": { "position": "" }
                }
              }
            ]
          }
        ]
      }
    }
  ]
}