{
  "version": "ai-assistant-example",
  "timestamp": "2026-10-24 12:00:00",
  "project": {
    "projectTitle": "Customer Service Excellence",
    "projectDescription": "A four-week journey that builds product knowledge, service skills, and healthy peer competition for the support team.",
    "heading": "<p>Customer Service Excellence</p>",
    "projectPrivate": false,
    "projectDiscussionEnabled": true,
    "challengeSearchEnabled": true,
    "guestEnabled": false,
    "communityTitle": "Service Commons",
    "communityDescription": "Share tips, ask the team, and celebrate wins.",
    "storeRedemptionLimit": 3,
    "categories": [
      {
        "categoryId": 9001,
        "categoryName": "Core Curriculum",
        "categoryDescription": "Required learning paths for every agent."
      },
      {
        "categoryId": 9002,
        "categoryName": "Optional Enrichment",
        "categoryDescription": "Nice-to-have electives."
      }
    ],
    "topics": [
      {
        "topicId": 1,
        "topicTitle": "Service Foundations",
        "topicDescription": "The mindset and standards behind great service.",
        "topicType": "standard",
        "heading": "<p>Service Foundations</p>",
        "published": true,
        "topicPrivate": false,
        "allowReset": false,
        "completionFeedbackEnabled": true,
        "bonusPoints": 50,
        "categoryIds": [9001],
        "challengeCategories": [
          {
            "categoryId": 9101,
            "categoryName": "Knowledge Check",
            "categoryDescription": "Quiz-format content."
          }
        ],
        "challenges": [
          {
            "challengeId": 101,
            "challengeTitle": "Our service promise",
            "challengeDescription": "Read our service promise, then complete the quiz below.",
            "challengeType": "quiz",
            "published": true,
            "points": 20,
            "completionMessage": "Correct! Our service promise is the standard behind every interaction.",
            "completionMessage2": "Not quite - review the service promise and try again.",
            "quizType": "multiselect",
            "categoryIds": [9101],
            "options": [
              {
                "optionTitle": "Respond to every customer within one business day",
                "optionAnswer": true,
                "optionValue": 1
              },
              {
                "optionTitle": "Confirm the customer's issue before offering a solution",
                "optionAnswer": true,
                "optionValue": 2
              },
              {
                "optionTitle": "Close the ticket first and investigate later",
                "optionAnswer": false,
                "optionValue": 3,
                "completionMessage": "We confirm the issue before we close anything."
              },
              {
                "optionTitle": "Escalate only when the customer threatens to leave",
                "optionAnswer": false,
                "optionValue": 4,
                "completionMessage": "Escalation is for unresolved issues, not just angry ones."
              }
            ]
          },
          {
            "challengeId": 102,
            "challengeTitle": "The greeting script, step by step",
            "challengeDescription": "Name the first steps of our opening greeting.",
            "challengeType": "multi-field",
            "published": true,
            "points": 25,
            "completionMessage": "Nicely done - that is the full sequence.",
            "charLimit": 200,
            "categoryIds": [9101],
            "fields": [
              {
                "fieldTitle": "Step 1: Greeting",
                "fieldType": "TEXT",
                "required": true,
                "points": 5
              },
              {
                "fieldTitle": "Step 2: Verify identity",
                "fieldType": "TEXT",
                "required": true,
                "points": 5
              },
              {
                "fieldTitle": "Step 3: Acknowledge the issue",
                "fieldType": "OPTION",
                "required": true,
                "points": 5,
                "options": [
                  {
                    "optionTitle": "Restate what you heard",
                    "points": 5
                  },
                  {
                    "optionTitle": "Read the account notes",
                    "points": 0
                  },
                  {
                    "optionTitle": "Offer a refund",
                    "points": 0
                  }
                ]
              },
              {
                "fieldTitle": "How confident do you feel delivering this script?",
                "fieldType": "SCALE",
                "required": true,
                "scale": {
                  "scaleName": "Confidence",
                  "scaleDescription": "Self-rated confidence for this week's practice log.",
                  "scaleMinLabel": "Needs practice",
                  "scaleMaxLabel": "Ready for customers",
                  "scaleLevels": [
                    {
                      "levelLabel": "Needs practice",
                      "levelNumber": 1
                    },
                    {
                      "levelLabel": "Getting there",
                      "levelNumber": 2
                    },
                    {
                      "levelLabel": "Comfortable",
                      "levelNumber": 3
                    },
                    {
                      "levelLabel": "Ready for customers",
                      "levelNumber": 4
                    }
                  ]
                }
              }
            ]
          },
          {
            "challengeId": 103,
            "challengeTitle": "Product refreshers",
            "challengeDescription": "One key fact about our product, in your own words.",
            "challengeType": "normal",
            "published": true,
            "points": 10,
            "challengeRepeatEvery": 24,
            "charLimit": 120
          },
          {
            "challengeId": 104,
            "challengeTitle": "Tone check: refund request",
            "challengeDescription": "Which response best matches our service promise when a long-time customer asks for a refund outside policy?",
            "challengeType": "quiz",
            "published": true,
            "points": 15,
            "completionMessage": "Exactly - acknowledge first, then explain the policy.",
            "completionMessage2": "Review the service promise and try again.",
            "categoryIds": [9101],
            "options": [
              {
                "optionTitle": "Explain the policy, then offer the nearest alternative that helps them",
                "optionAnswer": true,
                "optionValue": 1
              },
              {
                "optionTitle": "Approve the refund to keep them happy",
                "optionAnswer": false,
                "optionValue": 2
              },
              {
                "optionTitle": "Quote the policy and end the conversation",
                "optionAnswer": false,
                "optionValue": 3
              }
            ]
          },
          {
            "challengeId": 105,
            "challengeTitle": "Weekly pulse: what slowed you down?",
            "challengeDescription": "Pick the biggest friction you hit this week. Results shape our next coaching session.",
            "challengeType": "survey",
            "published": true,
            "points": 5,
            "options": [
              {
                "optionTitle": "Unclear account history",
                "optionAnswer": false,
                "optionValue": 1
              },
              {
                "optionTitle": "Waiting on another team",
                "optionAnswer": false,
                "optionValue": 2
              },
              {
                "optionTitle": "Tooling or system lag",
                "optionAnswer": false,
                "optionValue": 3
              },
              {
                "optionTitle": "Nothing - smooth week",
                "optionAnswer": false,
                "optionValue": 4
              }
            ]
          },
          {
            "challengeId": 106,
            "challengeTitle": "Recognition code",
            "challengeDescription": "Enter the code your team lead shares at the end of each service recognition huddle.",
            "challengeType": "key",
            "published": true,
            "points": 30,
            "correctAnswerTitle": "Appreciate",
            "challengeRepeatEvery": 168
          },
          {
            "challengeId": 107,
            "challengeTitle": "Policy card: data handling",
            "challengeDescription": "Quick reference: what you may and may not do with customer data.",
            "challengeType": "non-interactive",
            "published": true,
            "points": 0
          }
        ]
      },
      {
        "topicId": 2,
        "topicTitle": "Practice & Prove It",
        "topicDescription": "Apply the foundations to real scenarios and earn your service badge.",
        "topicType": "standard",
        "heading": "<p>Practice &amp; Prove It</p>",
        "published": true,
        "topicPrivate": false,
        "allowReset": false,
        "completionFeedbackEnabled": true,
        "bonusPoints": 100,
        "categoryIds": [9001],
        "challenges": [
          {
            "challengeId": 201,
            "challengeTitle": "This week's focus",
            "challengeDescription": "Scan the QR code at the front desk to check in to this week's focus session.",
            "challengeType": "qr",
            "published": true,
            "points": 10,
            "challengeRepeatEvery": 168
          },
          {
            "challengeId": 202,
            "challengeTitle": "Snap your service win",
            "challengeDescription": "Post a screenshot of praise from a customer, internal teammate, or a review you handled.",
            "challengeType": "normal",
            "published": true,
            "points": 15,
            "photoOnly": true,
            "challengeRepeatEvery": 24,
            "charLimit": 100,
            "votePoints": 2,
            "votePointsLimit": 5
          },
          {
            "challengeId": 203,
            "challengeTitle": "Where will we land?",
            "challengeDescription": "Predict our team's average satisfaction score for this month, then check the result at month-end.",
            "challengeType": "prediction",
            "published": true,
            "points": 20,
            "options": [
              {
                "optionTitle": "Above 4.7",
                "optionAnswer": true,
                "optionValue": 1
              },
              {
                "optionTitle": "Between 4.5 and 4.7",
                "optionAnswer": false,
                "optionValue": 2
              },
              {
                "optionTitle": "Below 4.5",
                "optionAnswer": false,
                "optionValue": 3
              }
            ]
          },
          {
            "challengeId": 204,
            "challengeTitle": "Final assessment",
            "challengeDescription": "Question covering the service promise, greeting steps, and data handling. Keep trying until you get it right.",
            "challengeType": "quiz-repeat",
            "published": true,
            "points": 50,
            "completionMessage": "You passed the final assessment. Well done!",
            "completionMessage2": "Review Service Foundations and try again.",
            "repeatUntilCorrect": true,
            "options": [
              {
                "optionTitle": "Within one business day",
                "optionAnswer": true,
                "optionValue": 1
              },
              {
                "optionTitle": "Within one hour",
                "optionAnswer": false,
                "optionValue": 2
              },
              {
                "optionTitle": "Only for premium accounts",
                "optionAnswer": false,
                "optionValue": 3
              }
            ]
          }
        ]
      }
    ]
  }
}
