{
  "exported_at": "2026-08-18T14:50:39.698Z",
  "scope": "all",
  "data": {
    "profile": {
      "id": "profile_demo-alex",
      "user_id": "demo-alex~ec915fc6b39d497c",
      "display_name": "Alex Chan",
      "email": "alex@example.com",
      "handle": "alex-chan-ec91",
      "bio": "HKDSE candidate working through BAFS accounting. Everything on this page is backed by a marked diagnostic.",
      "education_or_career_stage": "Secondary school student",
      "preferred_language": "English",
      "explanation_style": "step_by_step",
      "weekly_study_minutes": 210,
      "general_goals": "Get to a level 5 in HKDSE BAFS and stop losing marks on double entry.",
      "learning_memory_enabled": true,
      "consent_store_conversations": true,
      "consent_granted_at": "2026-07-05T14:50:39.072Z",
      "onboarding_completed_at": "2026-07-05T14:50:39.072Z",
      "profile_visibility": "public",
      "public_show_scopes": true,
      "public_show_evidence": true,
      "token_balance": 2768,
      "created_at": "2026-07-05T14:50:39.072Z",
      "updated_at": "2026-08-18T14:50:39.072Z"
    },
    "transactions": [
      {
        "id": "txn_msys58itydidi1z",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": -6,
        "description": "Diagnostic — Books of original entry",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-02T14:50:39.072Z"
      },
      {
        "id": "txn_msys58itztx51aj",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": -10,
        "description": "Marking — Books of original entry",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-02T14:50:39.072Z"
      },
      {
        "id": "txn_msys58it10o7zgtp",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "grant",
        "tokens": 300,
        "balance_after": 290,
        "description": "Welcome tokens",
        "reason": null,
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "txn_msys58it11l9peua",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -20,
        "balance_after": 270,
        "description": "New study scope and curriculum map",
        "reason": "scope_creation",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "txn_msys58it12u2u77a",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 264,
        "description": "Diagnostic — Books of original entry",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-08T14:50:39.072Z"
      },
      {
        "id": "txn_msys58it13e57u61",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 260,
        "description": "Marking — Books of original entry",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-08T14:50:39.072Z"
      },
      {
        "id": "txn_msys58it14esmoxh",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -12,
        "balance_after": 248,
        "description": "Tutor answer — Why businesses keep accounts",
        "reason": "chat_turn",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-11T14:50:39.072Z"
      },
      {
        "id": "txn_msys58it15bp9w9h",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -12,
        "balance_after": 236,
        "description": "Tutor answer — The accounting equation in practice",
        "reason": "chat_turn",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-17T14:50:39.072Z"
      },
      {
        "id": "txn_msys58it16e53ctv",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "topup",
        "tokens": 2500,
        "balance_after": 2736,
        "description": "Term pack",
        "reason": null,
        "scope_id": null,
        "session_id": null,
        "payment_id": "pay_demo-alex-1",
        "created_at": "2026-07-19T14:50:39.072Z"
      },
      {
        "id": "txn_msys58it17lkze2o",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "bonus",
        "tokens": 250,
        "balance_after": 2986,
        "description": "Term pack bonus",
        "reason": null,
        "scope_id": null,
        "session_id": null,
        "payment_id": "pay_demo-alex-1",
        "created_at": "2026-07-19T14:50:39.072Z"
      },
      {
        "id": "txn_msys58it18jttyx1",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -12,
        "balance_after": 2974,
        "description": "Tutor answer — Understanding source documents",
        "reason": "chat_turn",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-23T14:50:39.072Z"
      },
      {
        "id": "txn_msys58it193s0ctj",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 2968,
        "description": "Diagnostic — Source documents",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-27T14:50:39.072Z"
      },
      {
        "id": "txn_msys58it1adi7i3j",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 2964,
        "description": "Marking — Source documents",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-27T14:50:39.072Z"
      },
      {
        "id": "txn_msys58it1b5yjz30",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -20,
        "balance_after": 2944,
        "description": "New study scope and curriculum map",
        "reason": "scope_creation",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1caygvm1",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -12,
        "balance_after": 2932,
        "description": "Tutor answer — Posting into the ledgers",
        "reason": "chat_turn",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-30T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1dlxn1mx",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 2926,
        "description": "Diagnostic — Trial balance",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-31T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1exn9ysw",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 2922,
        "description": "Marking — Trial balance",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-07-31T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1fm52m33",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 2916,
        "description": "Diagnostic — Accounting equation",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-01T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1g8exhgj",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 2912,
        "description": "Marking — Accounting equation",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-01T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1hio0yy4",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 2906,
        "description": "Diagnostic — Source documents",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-02T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1ij77x0p",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 2902,
        "description": "Marking — Source documents",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-02T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1jbvzg2e",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 2896,
        "description": "Diagnostic — Double-entry system",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-03T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1kqia5ry",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 2892,
        "description": "Marking — Double-entry system",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-03T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1lnxmaz1",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 2886,
        "description": "Diagnostic — Debit and credit",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-03T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1mn2gmkx",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 2882,
        "description": "Marking — Debit and credit",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-03T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1nyurvxn",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -5,
        "balance_after": 2877,
        "description": "Revision journey — Accounting — HKDSE",
        "reason": "revision_plan",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-04T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1o5mb2lx",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -12,
        "balance_after": 2865,
        "description": "Tutor answer — Debits, credits and which side goes where",
        "reason": "chat_turn",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-06T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1p3gvmam",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 2859,
        "description": "Diagnostic — Purpose of accounting",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-06T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1qcsjlgx",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 2855,
        "description": "Marking — Purpose of accounting",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-06T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1rnkkack",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 2849,
        "description": "Diagnostic — Accounting equation",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-07T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1slsg4j3",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 2845,
        "description": "Marking — Accounting equation",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-07T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1t81z8h1",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -20,
        "balance_after": 2825,
        "description": "New study scope and curriculum map",
        "reason": "scope_creation",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-08T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1usc0zop",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 2819,
        "description": "Diagnostic — Double-entry system",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-09T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1vjzoqoo",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 2815,
        "description": "Marking — Double-entry system",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-09T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1w9b43ul",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 2809,
        "description": "Diagnostic — Debit and credit",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-09T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1xbc8yo6",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 2805,
        "description": "Marking — Debit and credit",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-09T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1y8i9xq8",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 2799,
        "description": "Diagnostic — Ledgers",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-11T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu1z2h1jnk",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 2795,
        "description": "Marking — Ledgers",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-11T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu20hb1m6u",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -12,
        "balance_after": 2783,
        "description": "Tutor answer — First look at the trial balance",
        "reason": "chat_turn",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-12T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu218alnqj",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -6,
        "balance_after": 2777,
        "description": "Diagnostic — Accounting equation",
        "reason": "diagnostic",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-13T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu22yszva6",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -4,
        "balance_after": 2773,
        "description": "Marking — Accounting equation",
        "reason": "diagnostic_marking",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-13T14:50:39.072Z"
      },
      {
        "id": "txn_msys58iu23pq3ce5",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "type": "spend",
        "tokens": -5,
        "balance_after": 2768,
        "description": "Revision journey — Accounting — HKDSE",
        "reason": "revision_plan",
        "scope_id": null,
        "session_id": null,
        "payment_id": null,
        "created_at": "2026-08-15T14:50:39.072Z"
      }
    ],
    "payments": [
      {
        "id": "pay_demo-alex-1",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "provider": "demo",
        "provider_reference": "demo_checkout_seeded",
        "package_id": "term",
        "tokens": 2500,
        "bonus_tokens": 250,
        "amount_hkd": 25,
        "currency": "HKD",
        "status": "paid",
        "created_at": "2026-07-19T14:50:39.072Z",
        "paid_at": "2026-07-19T14:50:39.072Z"
      }
    ],
    "scopes": [
      {
        "id": "scope_accounting-hkdse",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "name": "Accounting — HKDSE",
        "subject": "Accounting",
        "goal_type": "hkdse",
        "goal_description": "Prepare for the HKDSE examination",
        "curriculum": "HKDSE Business, Accounting and Financial Studies — Accounting module",
        "exam_board": "HKEAA",
        "current_level": "Beginner",
        "target_level": "Examination ready",
        "target_grade": "Level 5",
        "target_date": "2026-12-16",
        "weekly_study_minutes": 210,
        "status": "active",
        "creation_source": "user_created",
        "structure_is_ai_proposed": true,
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "scope_accounting-starting-or-managing-a-business",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "name": "Accounting — Starting or managing a business",
        "subject": "Accounting",
        "goal_type": "business_application",
        "goal_description": "Keep the books for the family shop",
        "curriculum": "Practical bookkeeping for a small business",
        "exam_board": null,
        "current_level": "Beginner",
        "target_level": "Confident practitioner",
        "target_grade": null,
        "target_date": null,
        "weekly_study_minutes": 60,
        "status": "active",
        "creation_source": "user_created",
        "structure_is_ai_proposed": true,
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "scope_python-career-development",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "name": "Python — Career development",
        "subject": "Python",
        "goal_type": "career_development",
        "goal_description": "Automate reporting work with Python",
        "curriculum": "Python — AI-proposed learning structure",
        "exam_board": null,
        "current_level": "Beginner",
        "target_level": "Confident practitioner",
        "target_grade": null,
        "target_date": "2027-03-06",
        "weekly_study_minutes": 90,
        "status": "active",
        "creation_source": "user_created",
        "structure_is_ai_proposed": true,
        "created_at": "2026-08-08T14:50:39.072Z",
        "updated_at": "2026-08-08T14:50:39.072Z"
      }
    ],
    "categories": [
      {
        "id": "cat_accounting-hkdse-foundation",
        "scope_id": "scope_accounting-hkdse",
        "name": "Foundation",
        "description": "Essential vocabulary, principles, and prerequisites.",
        "order_index": 0,
        "created_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "cat_accounting-hkdse-core",
        "scope_id": "scope_accounting-hkdse",
        "name": "Core",
        "description": "Main concepts required to understand the subject or pass the qualification.",
        "order_index": 1,
        "created_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "cat_accounting-hkdse-applied",
        "scope_id": "scope_accounting-hkdse",
        "name": "Applied",
        "description": "Using knowledge in realistic problems or practical situations.",
        "order_index": 2,
        "created_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "cat_accounting-hkdse-advanced",
        "scope_id": "scope_accounting-hkdse",
        "name": "Advanced",
        "description": "Complex topics, synthesis, edge cases, and higher-level analysis.",
        "order_index": 3,
        "created_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "cat_accounting-hkdse-exam-practice",
        "scope_id": "scope_accounting-hkdse",
        "name": "Exam Practice",
        "description": "Past-paper questions, exam technique, time management, and common mistakes.",
        "order_index": 4,
        "created_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "cat_accounting-starting-or-managing-a-business-foundation",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "name": "Foundation",
        "description": "The bookkeeping vocabulary an owner needs.",
        "order_index": 0,
        "created_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "cat_accounting-starting-or-managing-a-business-core",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "name": "Core",
        "description": "The records you keep every week.",
        "order_index": 1,
        "created_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "cat_accounting-starting-or-managing-a-business-applied",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "name": "Applied",
        "description": "Month-end, tax and compliance in practice.",
        "order_index": 2,
        "created_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "cat_accounting-starting-or-managing-a-business-advanced",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "name": "Advanced",
        "description": "Using the numbers to make decisions.",
        "order_index": 3,
        "created_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "cat_accounting-starting-or-managing-a-business-exam-practice",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "name": "Exam Practice",
        "description": "Self-checks that prove your books are right.",
        "order_index": 4,
        "created_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "cat_python-career-development-foundation",
        "scope_id": "scope_python-career-development",
        "name": "Foundation",
        "description": "Essential vocabulary, principles, and prerequisites.",
        "order_index": 0,
        "created_at": "2026-08-08T14:50:39.072Z"
      },
      {
        "id": "cat_python-career-development-core",
        "scope_id": "scope_python-career-development",
        "name": "Core",
        "description": "Main concepts required to understand the subject or pass the qualification.",
        "order_index": 1,
        "created_at": "2026-08-08T14:50:39.072Z"
      },
      {
        "id": "cat_python-career-development-applied",
        "scope_id": "scope_python-career-development",
        "name": "Applied",
        "description": "Using knowledge in realistic problems or practical situations.",
        "order_index": 2,
        "created_at": "2026-08-08T14:50:39.072Z"
      },
      {
        "id": "cat_python-career-development-advanced",
        "scope_id": "scope_python-career-development",
        "name": "Advanced",
        "description": "Complex topics, synthesis, edge cases, and higher-level analysis.",
        "order_index": 3,
        "created_at": "2026-08-08T14:50:39.072Z"
      },
      {
        "id": "cat_python-career-development-exam-practice",
        "scope_id": "scope_python-career-development",
        "name": "Exam Practice",
        "description": "Past-paper questions, exam technique, time management, and common mistakes.",
        "order_index": 4,
        "created_at": "2026-08-08T14:50:39.072Z"
      }
    ],
    "topics": [
      {
        "id": "topic_accounting-hkdse-purpose-of-accounting",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-foundation",
        "parent_topic_id": null,
        "canonical_name": "Purpose of accounting",
        "normalized_name": "purpose",
        "description": "Why businesses record transactions and who uses the information.",
        "syllabus_unit": "Compulsory Part — Introduction",
        "depth_level": "introductory",
        "importance_weight": 0.7,
        "mastery_score": 0.8,
        "mastery_state": "likely_strong",
        "classification_confidence": 1,
        "evidence_count": 1,
        "last_practiced_at": "2026-08-06T14:50:39.072Z",
        "order_index": 0,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-08-06T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-accounting-equation",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-foundation",
        "parent_topic_id": null,
        "canonical_name": "Accounting equation",
        "normalized_name": "equation",
        "description": "Assets = Liabilities + Capital, and how every transaction keeps it in balance.",
        "syllabus_unit": "Compulsory Part — Basic accounting concepts",
        "depth_level": "introductory",
        "importance_weight": 0.95,
        "mastery_score": 0.92,
        "mastery_state": "verified_strong",
        "classification_confidence": 1,
        "evidence_count": 3,
        "last_practiced_at": "2026-08-13T14:50:39.072Z",
        "order_index": 1,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-08-13T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-double-entry-system",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-foundation",
        "parent_topic_id": null,
        "canonical_name": "Double-entry system",
        "normalized_name": "double entry",
        "description": "Every transaction affects at least two accounts with equal debits and credits.",
        "syllabus_unit": "Compulsory Part — Double entry",
        "depth_level": "introductory",
        "importance_weight": 1,
        "mastery_score": 0.55,
        "mastery_state": "developing",
        "classification_confidence": 1,
        "evidence_count": 2,
        "last_practiced_at": "2026-08-09T14:50:39.072Z",
        "order_index": 2,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-08-09T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-debit-and-credit",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-foundation",
        "parent_topic_id": null,
        "canonical_name": "Debit and credit",
        "normalized_name": "credit debit",
        "description": "Which side of an account increases or decreases for each account type.",
        "syllabus_unit": "Compulsory Part — Double entry",
        "depth_level": "introductory",
        "importance_weight": 0.95,
        "mastery_score": 0.48,
        "mastery_state": "developing",
        "classification_confidence": 1,
        "evidence_count": 2,
        "last_practiced_at": "2026-08-09T14:50:39.072Z",
        "order_index": 3,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-08-09T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-source-documents",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-foundation",
        "parent_topic_id": null,
        "canonical_name": "Source documents",
        "normalized_name": "document source",
        "description": "Invoices, receipts, credit notes and cheque counterfoils as evidence of transactions.",
        "syllabus_unit": "Compulsory Part — Business documents",
        "depth_level": "introductory",
        "importance_weight": 0.6,
        "mastery_score": 0.78,
        "mastery_state": "likely_strong",
        "classification_confidence": 1,
        "evidence_count": 2,
        "last_practiced_at": "2026-08-02T14:50:39.072Z",
        "order_index": 4,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-08-02T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-books-of-original-entry",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-foundation",
        "parent_topic_id": null,
        "canonical_name": "Books of original entry",
        "normalized_name": "book entry original",
        "description": "Day books and the cash book: where transactions are first recorded before posting.",
        "syllabus_unit": "Compulsory Part — Books of original entry",
        "depth_level": "introductory",
        "importance_weight": 0.75,
        "mastery_score": 0.88,
        "mastery_state": "at_risk",
        "classification_confidence": 1,
        "evidence_count": 2,
        "last_practiced_at": "2026-07-08T14:50:39.072Z",
        "order_index": 5,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-08T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-ledgers",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-core",
        "parent_topic_id": null,
        "canonical_name": "Ledgers",
        "normalized_name": "ledger",
        "description": "Posting from books of original entry into the general, sales and purchases ledgers.",
        "syllabus_unit": "Compulsory Part — Ledger",
        "depth_level": "intermediate",
        "importance_weight": 0.9,
        "mastery_score": 0.32,
        "mastery_state": "possible_gap",
        "classification_confidence": 1,
        "evidence_count": 1,
        "last_practiced_at": "2026-08-11T14:50:39.072Z",
        "order_index": 6,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-08-11T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-trial-balance",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-core",
        "parent_topic_id": null,
        "canonical_name": "Trial balance",
        "normalized_name": "balance trial",
        "description": "Listing ledger balances to check that total debits equal total credits.",
        "syllabus_unit": "Compulsory Part — Trial balance",
        "depth_level": "intermediate",
        "importance_weight": 0.9,
        "mastery_score": 0.62,
        "mastery_state": "developing",
        "classification_confidence": 1,
        "evidence_count": 1,
        "last_practiced_at": "2026-07-31T14:50:39.072Z",
        "order_index": 7,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-31T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-financial-statements",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-core",
        "parent_topic_id": null,
        "canonical_name": "Financial statements",
        "normalized_name": "financial statement",
        "description": "Preparing the income statement and statement of financial position.",
        "syllabus_unit": "Compulsory Part — Financial statements",
        "depth_level": "intermediate",
        "importance_weight": 1,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 8,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-adjusting-entries",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-core",
        "parent_topic_id": null,
        "canonical_name": "Adjusting entries",
        "normalized_name": "adjusting entry",
        "description": "Accruals, prepayments and closing entries at the year end.",
        "syllabus_unit": "Compulsory Part — Year-end adjustments",
        "depth_level": "intermediate",
        "importance_weight": 0.85,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 9,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-correction-of-errors",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-core",
        "parent_topic_id": null,
        "canonical_name": "Correction of errors",
        "normalized_name": "correction error",
        "description": "Suspense accounts and journal entries that fix bookkeeping errors.",
        "syllabus_unit": "Compulsory Part — Correction of errors",
        "depth_level": "intermediate",
        "importance_weight": 0.7,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 10,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-inventory-valuation",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-applied",
        "parent_topic_id": null,
        "canonical_name": "Inventory valuation",
        "normalized_name": "inventory valuation",
        "description": "FIFO and weighted average, and the lower of cost and net realisable value rule.",
        "syllabus_unit": "Compulsory Part — Inventory",
        "depth_level": "intermediate",
        "importance_weight": 0.8,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 11,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-depreciation",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-applied",
        "parent_topic_id": null,
        "canonical_name": "Depreciation",
        "normalized_name": "depreciation",
        "description": "Straight-line and reducing-balance methods and their ledger entries.",
        "syllabus_unit": "Compulsory Part — Non-current assets",
        "depth_level": "intermediate",
        "importance_weight": 0.85,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 12,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-bad-debts",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-applied",
        "parent_topic_id": null,
        "canonical_name": "Bad debts",
        "normalized_name": "bad debt",
        "description": "Writing off bad debts and maintaining an allowance for doubtful debts.",
        "syllabus_unit": "Compulsory Part — Receivables",
        "depth_level": "intermediate",
        "importance_weight": 0.75,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 13,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-bank-reconciliation",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-applied",
        "parent_topic_id": null,
        "canonical_name": "Bank reconciliation",
        "normalized_name": "bank reconciliation",
        "description": "Reconciling the cash book with the bank statement.",
        "syllabus_unit": "Compulsory Part — Bank reconciliation",
        "depth_level": "intermediate",
        "importance_weight": 0.7,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 14,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-ratio-analysis",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-advanced",
        "parent_topic_id": null,
        "canonical_name": "Ratio analysis",
        "normalized_name": "analysi ratio",
        "description": "Profitability, liquidity and efficiency ratios and how to interpret them.",
        "syllabus_unit": "Elective Part — Financial analysis",
        "depth_level": "advanced",
        "importance_weight": 0.85,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 15,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-partnership-accounts",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-advanced",
        "parent_topic_id": null,
        "canonical_name": "Partnership accounts",
        "normalized_name": "account partnership",
        "description": "Appropriation accounts, current accounts and profit sharing.",
        "syllabus_unit": "Elective Part — Partnership",
        "depth_level": "advanced",
        "importance_weight": 0.75,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 16,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-incomplete-records",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-advanced",
        "parent_topic_id": null,
        "canonical_name": "Incomplete records",
        "normalized_name": "incomplete record",
        "description": "Reconstructing accounts from partial information using the accounting equation.",
        "syllabus_unit": "Elective Part — Incomplete records",
        "depth_level": "advanced",
        "importance_weight": 0.7,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 17,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-limited-company-accounts",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-advanced",
        "parent_topic_id": null,
        "canonical_name": "Limited company accounts",
        "normalized_name": "account company limited",
        "description": "Share capital, reserves and company financial statement formats.",
        "syllabus_unit": "Elective Part — Limited companies",
        "depth_level": "advanced",
        "importance_weight": 0.65,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 18,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-past-paper-questions",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-exam-practice",
        "parent_topic_id": null,
        "canonical_name": "Past-paper questions",
        "normalized_name": "paper past question",
        "description": "Working full HKDSE-style questions under realistic conditions.",
        "syllabus_unit": null,
        "depth_level": "advanced",
        "importance_weight": 0.9,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 19,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-time-management",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-exam-practice",
        "parent_topic_id": null,
        "canonical_name": "Time management",
        "normalized_name": "management time",
        "description": "Allocating minutes per mark and deciding what to attempt first.",
        "syllabus_unit": null,
        "depth_level": "intermediate",
        "importance_weight": 0.6,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 20,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-hkdse-common-mistakes",
        "scope_id": "scope_accounting-hkdse",
        "category_id": "cat_accounting-hkdse-exam-practice",
        "parent_topic_id": null,
        "canonical_name": "Common mistakes",
        "normalized_name": "common mistake",
        "description": "Reversed entries, missing narratives, and format errors that cost marks.",
        "syllabus_unit": null,
        "depth_level": "intermediate",
        "importance_weight": 0.7,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 21,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-05T14:50:39.072Z",
        "updated_at": "2026-07-05T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-starting-or-managing-a-business-purpose-of-accounting",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "category_id": "cat_accounting-starting-or-managing-a-business-foundation",
        "parent_topic_id": null,
        "canonical_name": "Purpose of accounting",
        "normalized_name": "purpose",
        "description": "What your books need to tell you as an owner.",
        "syllabus_unit": null,
        "depth_level": "introductory",
        "importance_weight": 0.8,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 0,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-starting-or-managing-a-business-accounting-equation",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "category_id": "cat_accounting-starting-or-managing-a-business-foundation",
        "parent_topic_id": null,
        "canonical_name": "Accounting equation",
        "normalized_name": "equation",
        "description": "What the business owns, owes, and what is yours.",
        "syllabus_unit": null,
        "depth_level": "introductory",
        "importance_weight": 0.8,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 1,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-starting-or-managing-a-business-double-entry-system",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "category_id": "cat_accounting-starting-or-managing-a-business-foundation",
        "parent_topic_id": null,
        "canonical_name": "Double-entry system",
        "normalized_name": "double entry",
        "description": "Recording each transaction twice so the books always balance.",
        "syllabus_unit": null,
        "depth_level": "introductory",
        "importance_weight": 1,
        "mastery_score": 0.91,
        "mastery_state": "verified_strong",
        "classification_confidence": 1,
        "evidence_count": 2,
        "last_practiced_at": "2026-08-14T14:50:39.072Z",
        "order_index": 2,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-08-14T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-starting-or-managing-a-business-debit-and-credit",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "category_id": "cat_accounting-starting-or-managing-a-business-foundation",
        "parent_topic_id": null,
        "canonical_name": "Debit and credit",
        "normalized_name": "credit debit",
        "description": "Which way money moves in your cash, sales and expense accounts.",
        "syllabus_unit": null,
        "depth_level": "introductory",
        "importance_weight": 0.9,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 3,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-starting-or-managing-a-business-source-documents",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "category_id": "cat_accounting-starting-or-managing-a-business-foundation",
        "parent_topic_id": null,
        "canonical_name": "Source documents",
        "normalized_name": "document source",
        "description": "Invoices, receipts and bank statements you must keep.",
        "syllabus_unit": null,
        "depth_level": "introductory",
        "importance_weight": 0.85,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 4,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-starting-or-managing-a-business-recording-sales-and-purchases",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "category_id": "cat_accounting-starting-or-managing-a-business-core",
        "parent_topic_id": null,
        "canonical_name": "Recording sales and purchases",
        "normalized_name": "purchase recording sale",
        "description": "Day-to-day entries for customer invoices and supplier bills.",
        "syllabus_unit": null,
        "depth_level": "intermediate",
        "importance_weight": 0.95,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 5,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-starting-or-managing-a-business-cash-flow-tracking",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "category_id": "cat_accounting-starting-or-managing-a-business-core",
        "parent_topic_id": null,
        "canonical_name": "Cash flow tracking",
        "normalized_name": "cash flow tracking",
        "description": "Knowing what is actually in the bank next month.",
        "syllabus_unit": null,
        "depth_level": "intermediate",
        "importance_weight": 1,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 6,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-starting-or-managing-a-business-financial-statements",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "category_id": "cat_accounting-starting-or-managing-a-business-core",
        "parent_topic_id": null,
        "canonical_name": "Financial statements",
        "normalized_name": "financial statement",
        "description": "Reading your own profit and loss and balance sheet.",
        "syllabus_unit": null,
        "depth_level": "intermediate",
        "importance_weight": 0.9,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 7,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-starting-or-managing-a-business-bank-reconciliation",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "category_id": "cat_accounting-starting-or-managing-a-business-applied",
        "parent_topic_id": null,
        "canonical_name": "Bank reconciliation",
        "normalized_name": "bank reconciliation",
        "description": "Matching your records against the bank each month.",
        "syllabus_unit": null,
        "depth_level": "intermediate",
        "importance_weight": 0.8,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 8,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-starting-or-managing-a-business-payroll-basics",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "category_id": "cat_accounting-starting-or-managing-a-business-applied",
        "parent_topic_id": null,
        "canonical_name": "Payroll basics",
        "normalized_name": "payroll",
        "description": "MPF, salaries tax and recording staff costs.",
        "syllabus_unit": null,
        "depth_level": "intermediate",
        "importance_weight": 0.7,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 9,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-starting-or-managing-a-business-tax-and-compliance",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "category_id": "cat_accounting-starting-or-managing-a-business-applied",
        "parent_topic_id": null,
        "canonical_name": "Tax and compliance",
        "normalized_name": "compliance tax",
        "description": "Profits tax filing and what records the IRD expects.",
        "syllabus_unit": null,
        "depth_level": "advanced",
        "importance_weight": 0.75,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 10,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "topic_accounting-starting-or-managing-a-business-choosing-accounting-software",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "category_id": "cat_accounting-starting-or-managing-a-business-applied",
        "parent_topic_id": null,
        "canonical_name": "Choosing accounting software",
        "normalized_name": "choosing software",
        "description": "Matching a tool to your transaction volume.",
        "syllabus_unit": null,
        "depth_level": "introductory",
        "importance_weight": 0.5,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 11,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-07-28T14:50:39.072Z",
        "updated_at": "2026-07-28T14:50:39.072Z"
      },
      {
        "id": "topic_python-career-development-key-vocabulary",
        "scope_id": "scope_python-career-development",
        "category_id": "cat_python-career-development-foundation",
        "parent_topic_id": null,
        "canonical_name": "Key vocabulary",
        "normalized_name": "key vocabulary",
        "description": "The terms you need before anything else makes sense.",
        "syllabus_unit": null,
        "depth_level": "introductory",
        "importance_weight": 0.8,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 0,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-08-08T14:50:39.072Z",
        "updated_at": "2026-08-08T14:50:39.072Z"
      },
      {
        "id": "topic_python-career-development-core-principles",
        "scope_id": "scope_python-career-development",
        "category_id": "cat_python-career-development-foundation",
        "parent_topic_id": null,
        "canonical_name": "Core principles",
        "normalized_name": "core",
        "description": "The handful of ideas everything else is built on.",
        "syllabus_unit": null,
        "depth_level": "introductory",
        "importance_weight": 0.9,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 1,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-08-08T14:50:39.072Z",
        "updated_at": "2026-08-08T14:50:39.072Z"
      },
      {
        "id": "topic_python-career-development-standard-methods",
        "scope_id": "scope_python-career-development",
        "category_id": "cat_python-career-development-core",
        "parent_topic_id": null,
        "canonical_name": "Standard methods",
        "normalized_name": "standard",
        "description": "The routine procedures you will use most often.",
        "syllabus_unit": null,
        "depth_level": "intermediate",
        "importance_weight": 0.9,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 2,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-08-08T14:50:39.072Z",
        "updated_at": "2026-08-08T14:50:39.072Z"
      },
      {
        "id": "topic_python-career-development-worked-problems",
        "scope_id": "scope_python-career-development",
        "category_id": "cat_python-career-development-applied",
        "parent_topic_id": null,
        "canonical_name": "Worked problems",
        "normalized_name": "problem worked",
        "description": "Applying the methods to realistic questions.",
        "syllabus_unit": null,
        "depth_level": "intermediate",
        "importance_weight": 0.85,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 3,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-08-08T14:50:39.072Z",
        "updated_at": "2026-08-08T14:50:39.072Z"
      },
      {
        "id": "topic_python-career-development-edge-cases-and-synthesis",
        "scope_id": "scope_python-career-development",
        "category_id": "cat_python-career-development-advanced",
        "parent_topic_id": null,
        "canonical_name": "Edge cases and synthesis",
        "normalized_name": "case edge synthesi",
        "description": "Where the standard method needs adapting.",
        "syllabus_unit": null,
        "depth_level": "advanced",
        "importance_weight": 0.7,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 4,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-08-08T14:50:39.072Z",
        "updated_at": "2026-08-08T14:50:39.072Z"
      },
      {
        "id": "topic_python-career-development-practice-and-technique",
        "scope_id": "scope_python-career-development",
        "category_id": "cat_python-career-development-exam-practice",
        "parent_topic_id": null,
        "canonical_name": "Practice and technique",
        "normalized_name": "practice",
        "description": "Timed practice and the mistakes that cost marks.",
        "syllabus_unit": null,
        "depth_level": "intermediate",
        "importance_weight": 0.8,
        "mastery_score": 0,
        "mastery_state": "unverified",
        "classification_confidence": 1,
        "evidence_count": 0,
        "last_practiced_at": null,
        "order_index": 5,
        "provenance": "Seeded from this scope’s AI-proposed learning structure.",
        "created_at": "2026-08-08T14:50:39.072Z",
        "updated_at": "2026-08-08T14:50:39.072Z"
      }
    ],
    "topicRelationships": [
      {
        "id": "rel_topic_accounting-hkdse-accounting-equation-rel-topic_accounting-hkdse-double-entry-system",
        "source_topic_id": "topic_accounting-hkdse-accounting-equation",
        "target_topic_id": "topic_accounting-hkdse-double-entry-system",
        "relationship_type": "related"
      },
      {
        "id": "rel_topic_accounting-hkdse-double-entry-system-prereq-topic_accounting-hkdse-accounting-equation",
        "source_topic_id": "topic_accounting-hkdse-double-entry-system",
        "target_topic_id": "topic_accounting-hkdse-accounting-equation",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-double-entry-system-rel-topic_accounting-hkdse-debit-and-credit",
        "source_topic_id": "topic_accounting-hkdse-double-entry-system",
        "target_topic_id": "topic_accounting-hkdse-debit-and-credit",
        "relationship_type": "related"
      },
      {
        "id": "rel_topic_accounting-hkdse-double-entry-system-rel-topic_accounting-hkdse-ledgers",
        "source_topic_id": "topic_accounting-hkdse-double-entry-system",
        "target_topic_id": "topic_accounting-hkdse-ledgers",
        "relationship_type": "related"
      },
      {
        "id": "rel_topic_accounting-hkdse-debit-and-credit-prereq-topic_accounting-hkdse-accounting-equation",
        "source_topic_id": "topic_accounting-hkdse-debit-and-credit",
        "target_topic_id": "topic_accounting-hkdse-accounting-equation",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-debit-and-credit-rel-topic_accounting-hkdse-double-entry-system",
        "source_topic_id": "topic_accounting-hkdse-debit-and-credit",
        "target_topic_id": "topic_accounting-hkdse-double-entry-system",
        "relationship_type": "related"
      },
      {
        "id": "rel_topic_accounting-hkdse-books-of-original-entry-prereq-topic_accounting-hkdse-source-documents",
        "source_topic_id": "topic_accounting-hkdse-books-of-original-entry",
        "target_topic_id": "topic_accounting-hkdse-source-documents",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-ledgers-prereq-topic_accounting-hkdse-double-entry-system",
        "source_topic_id": "topic_accounting-hkdse-ledgers",
        "target_topic_id": "topic_accounting-hkdse-double-entry-system",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-trial-balance-prereq-topic_accounting-hkdse-ledgers",
        "source_topic_id": "topic_accounting-hkdse-trial-balance",
        "target_topic_id": "topic_accounting-hkdse-ledgers",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-financial-statements-prereq-topic_accounting-hkdse-trial-balance",
        "source_topic_id": "topic_accounting-hkdse-financial-statements",
        "target_topic_id": "topic_accounting-hkdse-trial-balance",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-adjusting-entries-prereq-topic_accounting-hkdse-trial-balance",
        "source_topic_id": "topic_accounting-hkdse-adjusting-entries",
        "target_topic_id": "topic_accounting-hkdse-trial-balance",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-correction-of-errors-prereq-topic_accounting-hkdse-trial-balance",
        "source_topic_id": "topic_accounting-hkdse-correction-of-errors",
        "target_topic_id": "topic_accounting-hkdse-trial-balance",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-inventory-valuation-prereq-topic_accounting-hkdse-financial-statements",
        "source_topic_id": "topic_accounting-hkdse-inventory-valuation",
        "target_topic_id": "topic_accounting-hkdse-financial-statements",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-depreciation-prereq-topic_accounting-hkdse-adjusting-entries",
        "source_topic_id": "topic_accounting-hkdse-depreciation",
        "target_topic_id": "topic_accounting-hkdse-adjusting-entries",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-bad-debts-prereq-topic_accounting-hkdse-adjusting-entries",
        "source_topic_id": "topic_accounting-hkdse-bad-debts",
        "target_topic_id": "topic_accounting-hkdse-adjusting-entries",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-bank-reconciliation-prereq-topic_accounting-hkdse-books-of-original-entry",
        "source_topic_id": "topic_accounting-hkdse-bank-reconciliation",
        "target_topic_id": "topic_accounting-hkdse-books-of-original-entry",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-ratio-analysis-prereq-topic_accounting-hkdse-financial-statements",
        "source_topic_id": "topic_accounting-hkdse-ratio-analysis",
        "target_topic_id": "topic_accounting-hkdse-financial-statements",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-partnership-accounts-prereq-topic_accounting-hkdse-financial-statements",
        "source_topic_id": "topic_accounting-hkdse-partnership-accounts",
        "target_topic_id": "topic_accounting-hkdse-financial-statements",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-incomplete-records-prereq-topic_accounting-hkdse-accounting-equation",
        "source_topic_id": "topic_accounting-hkdse-incomplete-records",
        "target_topic_id": "topic_accounting-hkdse-accounting-equation",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-incomplete-records-prereq-topic_accounting-hkdse-financial-statements",
        "source_topic_id": "topic_accounting-hkdse-incomplete-records",
        "target_topic_id": "topic_accounting-hkdse-financial-statements",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-hkdse-limited-company-accounts-prereq-topic_accounting-hkdse-financial-statements",
        "source_topic_id": "topic_accounting-hkdse-limited-company-accounts",
        "target_topic_id": "topic_accounting-hkdse-financial-statements",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-starting-or-managing-a-business-double-entry-system-prereq-topic_accounting-starting-or-managing-a-business-accounting-equation",
        "source_topic_id": "topic_accounting-starting-or-managing-a-business-double-entry-system",
        "target_topic_id": "topic_accounting-starting-or-managing-a-business-accounting-equation",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-starting-or-managing-a-business-recording-sales-and-purchases-prereq-topic_accounting-starting-or-managing-a-business-double-entry-system",
        "source_topic_id": "topic_accounting-starting-or-managing-a-business-recording-sales-and-purchases",
        "target_topic_id": "topic_accounting-starting-or-managing-a-business-double-entry-system",
        "relationship_type": "prerequisite"
      },
      {
        "id": "rel_topic_accounting-starting-or-managing-a-business-financial-statements-prereq-topic_accounting-starting-or-managing-a-business-recording-sales-and-purchases",
        "source_topic_id": "topic_accounting-starting-or-managing-a-business-financial-statements",
        "target_topic_id": "topic_accounting-starting-or-managing-a-business-recording-sales-and-purchases",
        "relationship_type": "prerequisite"
      }
    ],
    "sessions": [
      {
        "id": "session_demo-alex-1",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "title": "Why businesses keep accounts",
        "primary_topic_id": "topic_accounting-hkdse-purpose-of-accounting",
        "status": "completed",
        "classification_confidence": 0.93,
        "created_at": "2026-07-11T14:50:39.072Z",
        "updated_at": "2026-07-11T14:50:39.072Z"
      },
      {
        "id": "session_demo-alex-2",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "title": "The accounting equation in practice",
        "primary_topic_id": "topic_accounting-hkdse-accounting-equation",
        "status": "completed",
        "classification_confidence": 0.93,
        "created_at": "2026-07-17T14:50:39.072Z",
        "updated_at": "2026-07-17T14:50:39.072Z"
      },
      {
        "id": "session_demo-alex-3",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "title": "Understanding source documents",
        "primary_topic_id": "topic_accounting-hkdse-source-documents",
        "status": "completed",
        "classification_confidence": 0.93,
        "created_at": "2026-07-23T14:50:39.072Z",
        "updated_at": "2026-07-23T14:50:39.072Z"
      },
      {
        "id": "session_demo-alex-4",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "title": "Posting into the ledgers",
        "primary_topic_id": "topic_accounting-hkdse-ledgers",
        "status": "completed",
        "classification_confidence": 0.93,
        "created_at": "2026-07-30T14:50:39.072Z",
        "updated_at": "2026-07-30T14:50:39.072Z"
      },
      {
        "id": "session_demo-alex-5",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "title": "Debits, credits and which side goes where",
        "primary_topic_id": "topic_accounting-hkdse-debit-and-credit",
        "status": "completed",
        "classification_confidence": 0.93,
        "created_at": "2026-08-06T14:50:39.072Z",
        "updated_at": "2026-08-06T14:50:39.072Z"
      },
      {
        "id": "session_demo-alex-6",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "title": "First look at the trial balance",
        "primary_topic_id": "topic_accounting-hkdse-trial-balance",
        "status": "completed",
        "classification_confidence": 0.93,
        "created_at": "2026-08-12T14:50:39.072Z",
        "updated_at": "2026-08-12T14:50:39.072Z"
      }
    ],
    "messages": [
      {
        "id": "msg_demo-alex-1-1",
        "session_id": "session_demo-alex-1",
        "role": "user",
        "content": "Why do businesses even need accounting?",
        "created_at": "2026-07-11T14:50:39.072Z"
      },
      {
        "id": "msg_demo-alex-1-2",
        "session_id": "session_demo-alex-1",
        "role": "assistant",
        "content": "For HKDSE you need three audiences: the owner (decisions), lenders and investors (is this business safe?), and the Inland Revenue Department (tax). Accounting turns raw transactions into information those three groups can act on. Exam answers that only say \"to know profit\" usually score one mark out of three — name the users.",
        "created_at": "2026-07-11T14:51:39.072Z"
      },
      {
        "id": "msg_demo-alex-2-1",
        "session_id": "session_demo-alex-2",
        "role": "user",
        "content": "I keep mixing up capital and cash in the accounting equation.",
        "created_at": "2026-07-17T14:50:39.072Z"
      },
      {
        "id": "msg_demo-alex-2-2",
        "session_id": "session_demo-alex-2",
        "role": "assistant",
        "content": "Capital is not cash — it is the owner’s claim on the business. Assets = Liabilities + Capital. If the business holds HK$80,000 of assets and owes HK$30,000, the owner’s claim is HK$50,000 whether or not any of it is in the bank. Drawings reduce capital; profit increases it.",
        "created_at": "2026-07-17T14:51:39.072Z"
      },
      {
        "id": "msg_demo-alex-2-3",
        "session_id": "session_demo-alex-2",
        "role": "user",
        "content": "So drawings are not an expense?",
        "created_at": "2026-07-17T14:52:39.072Z"
      },
      {
        "id": "msg_demo-alex-2-4",
        "session_id": "session_demo-alex-2",
        "role": "assistant",
        "content": "Correct. Drawings never appear in the income statement. They come off capital in the statement of financial position. That distinction is examined most years.",
        "created_at": "2026-07-17T14:53:39.072Z"
      },
      {
        "id": "msg_demo-alex-3-1",
        "session_id": "session_demo-alex-3",
        "role": "user",
        "content": "What counts as a source document?",
        "created_at": "2026-07-23T14:50:39.072Z"
      },
      {
        "id": "msg_demo-alex-3-2",
        "session_id": "session_demo-alex-3",
        "role": "assistant",
        "content": "Invoices, credit notes, debit notes, receipts, cheque counterfoils and bank statements. Each one is evidence that a transaction happened, and each one feeds a specific book of original entry — sales invoices to the sales day book, credit notes to the returns inward day book, and so on.",
        "created_at": "2026-07-23T14:51:39.072Z"
      },
      {
        "id": "msg_demo-alex-4-1",
        "session_id": "session_demo-alex-4",
        "role": "user",
        "content": "How do I know which ledger to post to?",
        "created_at": "2026-07-30T14:50:39.072Z"
      },
      {
        "id": "msg_demo-alex-4-2",
        "session_id": "session_demo-alex-4",
        "role": "assistant",
        "content": "Three ledgers: the sales ledger for individual customers, the purchases ledger for individual suppliers, and the general ledger for everything else including the control accounts. Post from the day books, not directly from the invoices.",
        "created_at": "2026-07-30T14:51:39.072Z"
      },
      {
        "id": "msg_demo-alex-4-3",
        "session_id": "session_demo-alex-4",
        "role": "user",
        "content": "I got the balance c/d on the wrong side again.",
        "created_at": "2026-07-30T14:52:39.072Z"
      },
      {
        "id": "msg_demo-alex-4-4",
        "session_id": "session_demo-alex-4",
        "role": "assistant",
        "content": "Balance c/d goes on the *smaller* side to make the two columns equal, then it is brought down on the opposite side as balance b/d. A cash account with money in it carries a debit balance b/d.",
        "created_at": "2026-07-30T14:53:39.072Z"
      },
      {
        "id": "msg_demo-alex-5-1",
        "session_id": "session_demo-alex-5",
        "role": "user",
        "content": "Why is my bank statement showing a credit when money comes in, but you say cash is a debit?",
        "created_at": "2026-08-06T14:50:39.072Z"
      },
      {
        "id": "msg_demo-alex-5-2",
        "session_id": "session_demo-alex-5",
        "role": "assistant",
        "content": "The bank statement is written from the bank’s point of view — your deposit is money the bank owes you, so it is a credit in *their* books. In your books the bank account is an asset, and assets increase on the debit side. Two sets of books, two perspectives.",
        "created_at": "2026-08-06T14:51:39.072Z"
      },
      {
        "id": "msg_demo-alex-6-1",
        "session_id": "session_demo-alex-6",
        "role": "user",
        "content": "If my trial balance balances, am I done?",
        "created_at": "2026-08-12T14:50:39.072Z"
      },
      {
        "id": "msg_demo-alex-6-2",
        "session_id": "session_demo-alex-6",
        "role": "assistant",
        "content": "No — and that is a favourite exam question. Six error types leave a trial balance in balance: omission, commission, principle, original entry, complete reversal, and compensating errors. A balanced trial balance proves arithmetic, not accuracy.",
        "created_at": "2026-08-12T14:51:39.072Z"
      }
    ],
    "sessionTopics": [
      {
        "session_id": "session_demo-alex-1",
        "topic_id": "topic_accounting-hkdse-purpose-of-accounting",
        "relationship_type": "primary",
        "relevance": 1
      },
      {
        "session_id": "session_demo-alex-2",
        "topic_id": "topic_accounting-hkdse-accounting-equation",
        "relationship_type": "primary",
        "relevance": 1
      },
      {
        "session_id": "session_demo-alex-2",
        "topic_id": "topic_accounting-hkdse-double-entry-system",
        "relationship_type": "secondary",
        "relevance": 0.7
      },
      {
        "session_id": "session_demo-alex-3",
        "topic_id": "topic_accounting-hkdse-source-documents",
        "relationship_type": "primary",
        "relevance": 1
      },
      {
        "session_id": "session_demo-alex-4",
        "topic_id": "topic_accounting-hkdse-ledgers",
        "relationship_type": "primary",
        "relevance": 1
      },
      {
        "session_id": "session_demo-alex-4",
        "topic_id": "topic_accounting-hkdse-trial-balance",
        "relationship_type": "secondary",
        "relevance": 0.7
      },
      {
        "session_id": "session_demo-alex-5",
        "topic_id": "topic_accounting-hkdse-debit-and-credit",
        "relationship_type": "primary",
        "relevance": 1
      },
      {
        "session_id": "session_demo-alex-5",
        "topic_id": "topic_accounting-hkdse-double-entry-system",
        "relationship_type": "secondary",
        "relevance": 0.7
      },
      {
        "session_id": "session_demo-alex-6",
        "topic_id": "topic_accounting-hkdse-trial-balance",
        "relationship_type": "primary",
        "relevance": 1
      },
      {
        "session_id": "session_demo-alex-6",
        "topic_id": "topic_accounting-hkdse-financial-statements",
        "relationship_type": "secondary",
        "relevance": 0.7
      }
    ],
    "diagnostics": [
      {
        "id": "diag_demo-alex-1",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-purpose-of-accounting",
        "question": "Explain Purpose of accounting in your own words with one example.",
        "rubric_json": [
          {
            "key": "definition",
            "description": "Defines Purpose of accounting",
            "weight": 1,
            "accept": [
              "purpose"
            ]
          }
        ],
        "ideal_answer": "A clear explanation of Purpose of accounting with a correct example.",
        "student_answer": "A clear explanation of Purpose of accounting with a correct example.",
        "student_confidence": 0.8,
        "evaluation_score": 0.8,
        "evaluation_json": {
          "score": 0.8,
          "matched": [
            "Defines Purpose of accounting"
          ],
          "missed": [],
          "misconceptions": [],
          "feedback": "Strong answer — the key points are all there.",
          "calibration_gap": 0
        },
        "created_at": "2026-08-06T14:50:39.072Z",
        "completed_at": "2026-08-06T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-2",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-accounting-equation",
        "question": "A business has assets of HK$80,000 and liabilities of HK$30,000. What is the capital, and what happens to it if the owner withdraws HK$5,000 cash?",
        "rubric_json": [
          {
            "key": "capital_value",
            "description": "Calculates capital as HK$50,000",
            "weight": 1.5,
            "accept": [
              "50000",
              "50,000",
              "50 000"
            ]
          },
          {
            "key": "drawings_effect",
            "description": "Recognises the withdrawal as drawings that reduce capital",
            "weight": 1.5,
            "accept": [
              "drawing",
              "reduce capital",
              "capital fall",
              "capital decrease",
              "capital reduces",
              "45000",
              "45,000"
            ],
            "reject": [
              "expense in the income statement",
              "is an expense"
            ],
            "misconception": "Treats owner drawings as a business expense rather than a reduction of capital."
          },
          {
            "key": "liabilities_unchanged",
            "description": "States that liabilities are unchanged",
            "weight": 1,
            "accept": [
              "liabilities unchanged",
              "liabilities stay",
              "liabilities remain",
              "no change to liabilities",
              "30000",
              "30,000"
            ]
          }
        ],
        "ideal_answer": "Capital is HK$50,000 (80,000 − 30,000). A HK$5,000 withdrawal is drawings: assets fall to HK$75,000 and capital falls to HK$45,000. Liabilities are unchanged.",
        "student_answer": "Partial answer — got the general idea but missed part of the reasoning.",
        "student_confidence": 0.6,
        "evaluation_score": 0.56,
        "evaluation_json": {
          "score": 0.56,
          "matched": [
            "Calculates capital as HK$50,000"
          ],
          "missed": [
            "Recognises the withdrawal as drawings that reduce capital",
            "States that liabilities are unchanged"
          ],
          "misconceptions": [],
          "feedback": "Partly right. Some of the core reasoning is still missing.",
          "calibration_gap": 0.04
        },
        "created_at": "2026-08-01T14:50:39.072Z",
        "completed_at": "2026-08-01T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-3",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-accounting-equation",
        "question": "A business has assets of HK$80,000 and liabilities of HK$30,000. What is the capital, and what happens to it if the owner withdraws HK$5,000 cash?",
        "rubric_json": [
          {
            "key": "capital_value",
            "description": "Calculates capital as HK$50,000",
            "weight": 1.5,
            "accept": [
              "50000",
              "50,000",
              "50 000"
            ]
          },
          {
            "key": "drawings_effect",
            "description": "Recognises the withdrawal as drawings that reduce capital",
            "weight": 1.5,
            "accept": [
              "drawing",
              "reduce capital",
              "capital fall",
              "capital decrease",
              "capital reduces",
              "45000",
              "45,000"
            ],
            "reject": [
              "expense in the income statement",
              "is an expense"
            ],
            "misconception": "Treats owner drawings as a business expense rather than a reduction of capital."
          },
          {
            "key": "liabilities_unchanged",
            "description": "States that liabilities are unchanged",
            "weight": 1,
            "accept": [
              "liabilities unchanged",
              "liabilities stay",
              "liabilities remain",
              "no change to liabilities",
              "30000",
              "30,000"
            ]
          }
        ],
        "ideal_answer": "Capital is HK$50,000 (80,000 − 30,000). A HK$5,000 withdrawal is drawings: assets fall to HK$75,000 and capital falls to HK$45,000. Liabilities are unchanged.",
        "student_answer": "Partial answer — got the general idea but missed part of the reasoning.",
        "student_confidence": 0.6,
        "evaluation_score": 0.74,
        "evaluation_json": {
          "score": 0.74,
          "matched": [
            "Calculates capital as HK$50,000"
          ],
          "missed": [
            "Recognises the withdrawal as drawings that reduce capital",
            "States that liabilities are unchanged"
          ],
          "misconceptions": [],
          "feedback": "Partly right. Some of the core reasoning is still missing.",
          "calibration_gap": -0.14
        },
        "created_at": "2026-08-07T14:50:39.072Z",
        "completed_at": "2026-08-07T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-4",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-accounting-equation",
        "question": "A business has assets of HK$80,000 and liabilities of HK$30,000. What is the capital, and what happens to it if the owner withdraws HK$5,000 cash?",
        "rubric_json": [
          {
            "key": "capital_value",
            "description": "Calculates capital as HK$50,000",
            "weight": 1.5,
            "accept": [
              "50000",
              "50,000",
              "50 000"
            ]
          },
          {
            "key": "drawings_effect",
            "description": "Recognises the withdrawal as drawings that reduce capital",
            "weight": 1.5,
            "accept": [
              "drawing",
              "reduce capital",
              "capital fall",
              "capital decrease",
              "capital reduces",
              "45000",
              "45,000"
            ],
            "reject": [
              "expense in the income statement",
              "is an expense"
            ],
            "misconception": "Treats owner drawings as a business expense rather than a reduction of capital."
          },
          {
            "key": "liabilities_unchanged",
            "description": "States that liabilities are unchanged",
            "weight": 1,
            "accept": [
              "liabilities unchanged",
              "liabilities stay",
              "liabilities remain",
              "no change to liabilities",
              "30000",
              "30,000"
            ]
          }
        ],
        "ideal_answer": "Capital is HK$50,000 (80,000 − 30,000). A HK$5,000 withdrawal is drawings: assets fall to HK$75,000 and capital falls to HK$45,000. Liabilities are unchanged.",
        "student_answer": "Capital is HK$50,000 (80,000 − 30,000). A HK$5,000 withdrawal is drawings: assets fall to HK$75,000 and capital falls to HK$45,000. Liabilities are unchanged.",
        "student_confidence": 0.8,
        "evaluation_score": 0.92,
        "evaluation_json": {
          "score": 0.92,
          "matched": [
            "Calculates capital as HK$50,000",
            "Recognises the withdrawal as drawings that reduce capital",
            "States that liabilities are unchanged"
          ],
          "missed": [],
          "misconceptions": [],
          "feedback": "Strong answer — the key points are all there.",
          "calibration_gap": -0.12
        },
        "created_at": "2026-08-13T14:50:39.072Z",
        "completed_at": "2026-08-13T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-5",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-double-entry-system",
        "question": "A business owner invests HK$10,000 cash into the business. Which accounts are affected, and which account is debited and which is credited?",
        "rubric_json": [
          {
            "key": "cash_account",
            "description": "Identifies the cash (or bank) account as one of the two accounts",
            "weight": 1,
            "accept": [
              "cash",
              "bank"
            ]
          },
          {
            "key": "capital_account",
            "description": "Identifies the capital / owner’s equity account as the other account",
            "weight": 1,
            "accept": [
              "capital",
              "equity",
              "owner",
              "owners"
            ]
          },
          {
            "key": "debit_side",
            "description": "Debits cash, because the asset increases",
            "weight": 1.5,
            "accept": [
              "debit cash",
              "dr cash",
              "cash is debited",
              "debit the cash",
              "cash debit",
              "debit bank",
              "bank is debited",
              "dr bank"
            ],
            "reject": [
              "credit cash",
              "cash is credited",
              "cr cash",
              "credit the cash",
              "credit bank",
              "bank is credited"
            ],
            "misconception": "Credits the cash account when the business receives cash — the debit and credit sides are reversed."
          },
          {
            "key": "credit_side",
            "description": "Credits capital, because the owner’s claim increases",
            "weight": 1.5,
            "accept": [
              "credit capital",
              "cr capital",
              "capital is credited",
              "credit the capital",
              "credit equity",
              "equity is credited"
            ],
            "reject": [
              "debit capital",
              "capital is debited",
              "dr capital",
              "debit equity"
            ],
            "misconception": "Debits the capital account when the owner invests — the debit and credit sides are reversed."
          }
        ],
        "ideal_answer": "The Cash account and the Capital account are affected. Cash is debited HK$10,000 because the asset increases; Capital is credited HK$10,000 because the owner’s claim on the business increases.",
        "student_answer": "Partial answer — got the general idea but missed part of the reasoning.",
        "student_confidence": 0.6,
        "evaluation_score": 0.37,
        "evaluation_json": {
          "score": 0.37,
          "matched": [
            "Identifies the cash (or bank) account as one of the two accounts"
          ],
          "missed": [
            "Identifies the capital / owner’s equity account as the other account",
            "Debits cash, because the asset increases",
            "Credits capital, because the owner’s claim increases"
          ],
          "misconceptions": [],
          "feedback": "Partly right. Some of the core reasoning is still missing.",
          "calibration_gap": 0.23
        },
        "created_at": "2026-08-03T14:50:39.072Z",
        "completed_at": "2026-08-03T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-6",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-double-entry-system",
        "question": "A business owner invests HK$10,000 cash into the business. Which accounts are affected, and which account is debited and which is credited?",
        "rubric_json": [
          {
            "key": "cash_account",
            "description": "Identifies the cash (or bank) account as one of the two accounts",
            "weight": 1,
            "accept": [
              "cash",
              "bank"
            ]
          },
          {
            "key": "capital_account",
            "description": "Identifies the capital / owner’s equity account as the other account",
            "weight": 1,
            "accept": [
              "capital",
              "equity",
              "owner",
              "owners"
            ]
          },
          {
            "key": "debit_side",
            "description": "Debits cash, because the asset increases",
            "weight": 1.5,
            "accept": [
              "debit cash",
              "dr cash",
              "cash is debited",
              "debit the cash",
              "cash debit",
              "debit bank",
              "bank is debited",
              "dr bank"
            ],
            "reject": [
              "credit cash",
              "cash is credited",
              "cr cash",
              "credit the cash",
              "credit bank",
              "bank is credited"
            ],
            "misconception": "Credits the cash account when the business receives cash — the debit and credit sides are reversed."
          },
          {
            "key": "credit_side",
            "description": "Credits capital, because the owner’s claim increases",
            "weight": 1.5,
            "accept": [
              "credit capital",
              "cr capital",
              "capital is credited",
              "credit the capital",
              "credit equity",
              "equity is credited"
            ],
            "reject": [
              "debit capital",
              "capital is debited",
              "dr capital",
              "debit equity"
            ],
            "misconception": "Debits the capital account when the owner invests — the debit and credit sides are reversed."
          }
        ],
        "ideal_answer": "The Cash account and the Capital account are affected. Cash is debited HK$10,000 because the asset increases; Capital is credited HK$10,000 because the owner’s claim on the business increases.",
        "student_answer": "Partial answer — got the general idea but missed part of the reasoning.",
        "student_confidence": 0.6,
        "evaluation_score": 0.55,
        "evaluation_json": {
          "score": 0.55,
          "matched": [
            "Identifies the cash (or bank) account as one of the two accounts"
          ],
          "missed": [
            "Identifies the capital / owner’s equity account as the other account",
            "Debits cash, because the asset increases",
            "Credits capital, because the owner’s claim increases"
          ],
          "misconceptions": [],
          "feedback": "Partly right. Some of the core reasoning is still missing.",
          "calibration_gap": 0.05
        },
        "created_at": "2026-08-09T14:50:39.072Z",
        "completed_at": "2026-08-09T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-7",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-debit-and-credit",
        "question": "A business pays HK$800 rent by cheque. Which account is debited and which is credited, and why?",
        "rubric_json": [
          {
            "key": "debit_expense",
            "description": "Debits the rent expense account",
            "weight": 1.5,
            "accept": [
              "debit rent",
              "dr rent",
              "rent is debited",
              "debit the rent",
              "debit expense"
            ],
            "reject": [
              "credit rent",
              "rent is credited",
              "cr rent"
            ],
            "misconception": "Credits the expense account when a cost is incurred — the sides are reversed."
          },
          {
            "key": "credit_bank",
            "description": "Credits the bank account",
            "weight": 1.5,
            "accept": [
              "credit bank",
              "cr bank",
              "bank is credited",
              "credit the bank",
              "credit cash"
            ],
            "reject": [
              "debit bank",
              "bank is debited",
              "dr bank"
            ],
            "misconception": "Debits the bank when money leaves it — the sides are reversed."
          },
          {
            "key": "reasoning",
            "description": "Explains it in terms of the expense increasing and the asset decreasing",
            "weight": 1,
            "accept": [
              "expense increase",
              "expense goes up",
              "asset decrease",
              "asset goes down",
              "bank decrease",
              "money leaves"
            ]
          }
        ],
        "ideal_answer": "Debit Rent expense HK$800 because the expense increases; credit Bank HK$800 because the asset decreases.",
        "student_answer": "Partial answer — got the general idea but missed part of the reasoning.",
        "student_confidence": 0.6,
        "evaluation_score": 0.3,
        "evaluation_json": {
          "score": 0.3,
          "matched": [
            "Debits the rent expense account"
          ],
          "missed": [
            "Credits the bank account",
            "Explains it in terms of the expense increasing and the asset decreasing"
          ],
          "misconceptions": [],
          "feedback": "Partly right. Some of the core reasoning is still missing.",
          "calibration_gap": 0.3
        },
        "created_at": "2026-08-03T14:50:39.072Z",
        "completed_at": "2026-08-03T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-8",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-debit-and-credit",
        "question": "A business pays HK$800 rent by cheque. Which account is debited and which is credited, and why?",
        "rubric_json": [
          {
            "key": "debit_expense",
            "description": "Debits the rent expense account",
            "weight": 1.5,
            "accept": [
              "debit rent",
              "dr rent",
              "rent is debited",
              "debit the rent",
              "debit expense"
            ],
            "reject": [
              "credit rent",
              "rent is credited",
              "cr rent"
            ],
            "misconception": "Credits the expense account when a cost is incurred — the sides are reversed."
          },
          {
            "key": "credit_bank",
            "description": "Credits the bank account",
            "weight": 1.5,
            "accept": [
              "credit bank",
              "cr bank",
              "bank is credited",
              "credit the bank",
              "credit cash"
            ],
            "reject": [
              "debit bank",
              "bank is debited",
              "dr bank"
            ],
            "misconception": "Debits the bank when money leaves it — the sides are reversed."
          },
          {
            "key": "reasoning",
            "description": "Explains it in terms of the expense increasing and the asset decreasing",
            "weight": 1,
            "accept": [
              "expense increase",
              "expense goes up",
              "asset decrease",
              "asset goes down",
              "bank decrease",
              "money leaves"
            ]
          }
        ],
        "ideal_answer": "Debit Rent expense HK$800 because the expense increases; credit Bank HK$800 because the asset decreases.",
        "student_answer": "Partial answer — got the general idea but missed part of the reasoning.",
        "student_confidence": 0.6,
        "evaluation_score": 0.48,
        "evaluation_json": {
          "score": 0.48,
          "matched": [
            "Debits the rent expense account"
          ],
          "missed": [
            "Credits the bank account",
            "Explains it in terms of the expense increasing and the asset decreasing"
          ],
          "misconceptions": [],
          "feedback": "Partly right. Some of the core reasoning is still missing.",
          "calibration_gap": 0.12
        },
        "created_at": "2026-08-09T14:50:39.072Z",
        "completed_at": "2026-08-09T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-9",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-source-documents",
        "question": "Explain Source documents in your own words with one example.",
        "rubric_json": [
          {
            "key": "definition",
            "description": "Defines Source documents",
            "weight": 1,
            "accept": [
              "document"
            ]
          }
        ],
        "ideal_answer": "A clear explanation of Source documents with a correct example.",
        "student_answer": "Partial answer — got the general idea but missed part of the reasoning.",
        "student_confidence": 0.6,
        "evaluation_score": 0.6,
        "evaluation_json": {
          "score": 0.6,
          "matched": [
            "Defines Source documents"
          ],
          "missed": [],
          "misconceptions": [],
          "feedback": "Partly right. Some of the core reasoning is still missing.",
          "calibration_gap": 0
        },
        "created_at": "2026-07-27T14:50:39.072Z",
        "completed_at": "2026-07-27T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-10",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-source-documents",
        "question": "Explain Source documents in your own words with one example.",
        "rubric_json": [
          {
            "key": "definition",
            "description": "Defines Source documents",
            "weight": 1,
            "accept": [
              "document"
            ]
          }
        ],
        "ideal_answer": "A clear explanation of Source documents with a correct example.",
        "student_answer": "Partial answer — got the general idea but missed part of the reasoning.",
        "student_confidence": 0.6,
        "evaluation_score": 0.78,
        "evaluation_json": {
          "score": 0.78,
          "matched": [
            "Defines Source documents"
          ],
          "missed": [],
          "misconceptions": [],
          "feedback": "Partly right. Some of the core reasoning is still missing.",
          "calibration_gap": -0.18
        },
        "created_at": "2026-08-02T14:50:39.072Z",
        "completed_at": "2026-08-02T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-11",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-books-of-original-entry",
        "question": "Explain Books of original entry in your own words with one example.",
        "rubric_json": [
          {
            "key": "definition",
            "description": "Defines Books of original entry",
            "weight": 1,
            "accept": [
              "book"
            ]
          }
        ],
        "ideal_answer": "A clear explanation of Books of original entry with a correct example.",
        "student_answer": "Partial answer — got the general idea but missed part of the reasoning.",
        "student_confidence": 0.6,
        "evaluation_score": 0.7,
        "evaluation_json": {
          "score": 0.7,
          "matched": [
            "Defines Books of original entry"
          ],
          "missed": [],
          "misconceptions": [],
          "feedback": "Partly right. Some of the core reasoning is still missing.",
          "calibration_gap": -0.1
        },
        "created_at": "2026-07-02T14:50:39.072Z",
        "completed_at": "2026-07-02T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-12",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-books-of-original-entry",
        "question": "Explain Books of original entry in your own words with one example.",
        "rubric_json": [
          {
            "key": "definition",
            "description": "Defines Books of original entry",
            "weight": 1,
            "accept": [
              "book"
            ]
          }
        ],
        "ideal_answer": "A clear explanation of Books of original entry with a correct example.",
        "student_answer": "A clear explanation of Books of original entry with a correct example.",
        "student_confidence": 0.8,
        "evaluation_score": 0.88,
        "evaluation_json": {
          "score": 0.88,
          "matched": [
            "Defines Books of original entry"
          ],
          "missed": [],
          "misconceptions": [],
          "feedback": "Strong answer — the key points are all there.",
          "calibration_gap": -0.08
        },
        "created_at": "2026-07-08T14:50:39.072Z",
        "completed_at": "2026-07-08T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-13",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-ledgers",
        "question": "A cash account has an opening debit balance of HK$5,000, receives HK$10,000 capital and pays HK$800 rent. What is the balance carried down, and on which side?",
        "rubric_json": [
          {
            "key": "value",
            "description": "Calculates HK$14,200",
            "weight": 1.5,
            "accept": [
              "14200",
              "14,200",
              "14 200"
            ]
          },
          {
            "key": "side",
            "description": "States it is a debit balance",
            "weight": 1.5,
            "accept": [
              "debit",
              "dr"
            ],
            "reject": [
              "credit balance",
              "cr balance"
            ],
            "misconception": "Treats a positive cash balance as a credit balance."
          }
        ],
        "ideal_answer": "HK$14,200, a debit balance carried down (5,000 + 10,000 − 800).",
        "student_answer": "Partial answer — got the general idea but missed part of the reasoning.",
        "student_confidence": 0.6,
        "evaluation_score": 0.32,
        "evaluation_json": {
          "score": 0.32,
          "matched": [
            "Calculates HK$14,200"
          ],
          "missed": [
            "States it is a debit balance"
          ],
          "misconceptions": [],
          "feedback": "Partly right. Some of the core reasoning is still missing.",
          "calibration_gap": 0.28
        },
        "created_at": "2026-08-11T14:50:39.072Z",
        "completed_at": "2026-08-11T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-14",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "session_id": null,
        "topic_id": "topic_accounting-hkdse-trial-balance",
        "question": "Your trial balance balances perfectly. Does that prove there are no errors in the accounts? Explain.",
        "rubric_json": [
          {
            "key": "says_no",
            "description": "States that a balanced trial balance does not prove correctness",
            "weight": 1.5,
            "accept": [
              "no",
              "does not prove",
              "not prove",
              "doesn t prove",
              "still be errors",
              "still errors"
            ],
            "reject": [
              "yes it proves",
              "proves there are no errors"
            ],
            "misconception": "Believes a balanced trial balance proves the accounts contain no errors."
          },
          {
            "key": "names_errors",
            "description": "Names at least one error type that does not affect the trial balance",
            "weight": 1.5,
            "accept": [
              "omission",
              "commission",
              "principle",
              "original entry",
              "reversal",
              "compensating"
            ]
          }
        ],
        "ideal_answer": "No. Errors of omission, commission, principle, original entry, complete reversal and compensating errors all leave the trial balance in balance.",
        "student_answer": "Partial answer — got the general idea but missed part of the reasoning.",
        "student_confidence": 0.6,
        "evaluation_score": 0.62,
        "evaluation_json": {
          "score": 0.62,
          "matched": [
            "States that a balanced trial balance does not prove correctness"
          ],
          "missed": [
            "Names at least one error type that does not affect the trial balance"
          ],
          "misconceptions": [],
          "feedback": "Partly right. Some of the core reasoning is still missing.",
          "calibration_gap": -0.02
        },
        "created_at": "2026-07-31T14:50:39.072Z",
        "completed_at": "2026-07-31T14:50:39.072Z"
      },
      {
        "id": "diag_demo-alex-biz-1",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-starting-or-managing-a-business",
        "session_id": null,
        "topic_id": "topic_accounting-starting-or-managing-a-business-double-entry-system",
        "question": "You put HK$10,000 of your own money into the shop bank account. What are the two sides of that entry?",
        "rubric_json": [
          {
            "key": "cash_account",
            "description": "Identifies the cash (or bank) account as one of the two accounts",
            "weight": 1,
            "accept": [
              "cash",
              "bank"
            ]
          },
          {
            "key": "capital_account",
            "description": "Identifies the capital / owner’s equity account as the other account",
            "weight": 1,
            "accept": [
              "capital",
              "equity",
              "owner",
              "owners"
            ]
          },
          {
            "key": "debit_side",
            "description": "Debits cash, because the asset increases",
            "weight": 1.5,
            "accept": [
              "debit cash",
              "dr cash",
              "cash is debited",
              "debit the cash",
              "cash debit",
              "debit bank",
              "bank is debited",
              "dr bank"
            ],
            "reject": [
              "credit cash",
              "cash is credited",
              "cr cash",
              "credit the cash",
              "credit bank",
              "bank is credited"
            ],
            "misconception": "Credits the cash account when the business receives cash — the debit and credit sides are reversed."
          },
          {
            "key": "credit_side",
            "description": "Credits capital, because the owner’s claim increases",
            "weight": 1.5,
            "accept": [
              "credit capital",
              "cr capital",
              "capital is credited",
              "credit the capital",
              "credit equity",
              "equity is credited"
            ],
            "reject": [
              "debit capital",
              "capital is debited",
              "dr capital",
              "debit equity"
            ],
            "misconception": "Debits the capital account when the owner invests — the debit and credit sides are reversed."
          }
        ],
        "ideal_answer": "Debit the bank account HK$10,000 and credit owner’s capital HK$10,000.",
        "student_answer": "Debit bank 10,000 because the business has the money, credit capital 10,000 because the business owes it back to me.",
        "student_confidence": 0.8,
        "evaluation_score": 0.91,
        "evaluation_json": {
          "score": 0.91,
          "matched": [
            "Identifies the cash (or bank) account as one of the two accounts",
            "Identifies the capital / owner’s equity account as the other account",
            "Debits cash, because the asset increases",
            "Credits capital, because the owner’s claim increases"
          ],
          "missed": [],
          "misconceptions": [],
          "feedback": "Strong answer — the key points are all there.",
          "calibration_gap": -0.11
        },
        "created_at": "2026-08-14T14:50:39.072Z",
        "completed_at": "2026-08-14T14:50:39.072Z"
      }
    ],
    "misconceptions": [
      {
        "id": "misc_demo-alex-1",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-double-entry-system",
        "session_id": null,
        "diagnostic_id": "diag_demo-alex-5",
        "description": "Records both sides of a transaction inside the same account instead of in two different accounts.",
        "status": "active",
        "created_at": "2026-08-09T14:50:39.072Z",
        "resolved_at": null
      },
      {
        "id": "misc_demo-alex-2",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-debit-and-credit",
        "session_id": "session_demo-alex-5",
        "diagnostic_id": "diag_demo-alex-7",
        "description": "Treats \"debit\" as always meaning money leaving the business, so asset and expense increases get reversed.",
        "status": "active",
        "created_at": "2026-08-06T14:50:39.072Z",
        "resolved_at": null
      }
    ],
    "masteryEvents": [
      {
        "id": "mev_demo-alex-1",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-purpose-of-accounting",
        "diagnostic_id": "diag_demo-alex-1",
        "previous_score": 0,
        "new_score": 0.8,
        "previous_state": "unverified",
        "new_state": "likely_strong",
        "reason": "Diagnostic scored 80%.",
        "created_at": "2026-08-06T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-2",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-accounting-equation",
        "diagnostic_id": "diag_demo-alex-2",
        "previous_score": 0,
        "new_score": 0.56,
        "previous_state": "unverified",
        "new_state": "developing",
        "reason": "Diagnostic scored 56%.",
        "created_at": "2026-08-01T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-3",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-accounting-equation",
        "diagnostic_id": "diag_demo-alex-3",
        "previous_score": 0.64,
        "new_score": 0.74,
        "previous_state": "developing",
        "new_state": "developing",
        "reason": "Diagnostic scored 74%.",
        "created_at": "2026-08-07T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-4",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-accounting-equation",
        "diagnostic_id": "diag_demo-alex-4",
        "previous_score": 0.82,
        "new_score": 0.92,
        "previous_state": "developing",
        "new_state": "verified_strong",
        "reason": "Diagnostic scored 92%.",
        "created_at": "2026-08-13T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-5",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-double-entry-system",
        "diagnostic_id": "diag_demo-alex-5",
        "previous_score": 0,
        "new_score": 0.37,
        "previous_state": "unverified",
        "new_state": "developing",
        "reason": "Diagnostic scored 37%.",
        "created_at": "2026-08-03T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-6",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-double-entry-system",
        "diagnostic_id": "diag_demo-alex-6",
        "previous_score": 0.45,
        "new_score": 0.55,
        "previous_state": "developing",
        "new_state": "developing",
        "reason": "Diagnostic scored 55%.",
        "created_at": "2026-08-09T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-7",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-debit-and-credit",
        "diagnostic_id": "diag_demo-alex-7",
        "previous_score": 0,
        "new_score": 0.3,
        "previous_state": "unverified",
        "new_state": "developing",
        "reason": "Diagnostic scored 30%.",
        "created_at": "2026-08-03T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-8",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-debit-and-credit",
        "diagnostic_id": "diag_demo-alex-8",
        "previous_score": 0.38,
        "new_score": 0.48,
        "previous_state": "developing",
        "new_state": "developing",
        "reason": "Diagnostic scored 48%.",
        "created_at": "2026-08-09T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-9",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-source-documents",
        "diagnostic_id": "diag_demo-alex-9",
        "previous_score": 0,
        "new_score": 0.6,
        "previous_state": "unverified",
        "new_state": "developing",
        "reason": "Diagnostic scored 60%.",
        "created_at": "2026-07-27T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-10",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-source-documents",
        "diagnostic_id": "diag_demo-alex-10",
        "previous_score": 0.68,
        "new_score": 0.78,
        "previous_state": "developing",
        "new_state": "likely_strong",
        "reason": "Diagnostic scored 78%.",
        "created_at": "2026-08-02T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-11",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-books-of-original-entry",
        "diagnostic_id": "diag_demo-alex-11",
        "previous_score": 0,
        "new_score": 0.7,
        "previous_state": "unverified",
        "new_state": "developing",
        "reason": "Diagnostic scored 70%.",
        "created_at": "2026-07-02T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-12",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-books-of-original-entry",
        "diagnostic_id": "diag_demo-alex-12",
        "previous_score": 0.78,
        "new_score": 0.88,
        "previous_state": "developing",
        "new_state": "at_risk",
        "reason": "Diagnostic scored 88%.",
        "created_at": "2026-07-08T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-13",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-ledgers",
        "diagnostic_id": "diag_demo-alex-13",
        "previous_score": 0,
        "new_score": 0.32,
        "previous_state": "unverified",
        "new_state": "possible_gap",
        "reason": "Diagnostic scored 32%.",
        "created_at": "2026-08-11T14:50:39.072Z"
      },
      {
        "id": "mev_demo-alex-14",
        "scope_id": "scope_accounting-hkdse",
        "topic_id": "topic_accounting-hkdse-trial-balance",
        "diagnostic_id": "diag_demo-alex-14",
        "previous_score": 0,
        "new_score": 0.62,
        "previous_state": "unverified",
        "new_state": "developing",
        "reason": "Diagnostic scored 62%.",
        "created_at": "2026-07-31T14:50:39.072Z"
      }
    ],
    "revisionPlans": [
      {
        "id": "plan_msys58ituvw4b6c",
        "user_id": "demo-alex~ec915fc6b39d497c",
        "scope_id": "scope_accounting-hkdse",
        "target_minutes": 20,
        "plan_date": "2026-08-18",
        "status": "proposed",
        "created_at": "2026-08-18T14:50:39.072Z"
      }
    ],
    "revisionActivities": [
      {
        "id": "act_msys58itvmrty9k",
        "revision_plan_id": "plan_msys58ituvw4b6c",
        "topic_id": "topic_accounting-hkdse-double-entry-system",
        "activity_type": "misconception_fix",
        "instructions": "Redo the step on Double-entry system that went wrong last time, then explain why the correct version is correct.",
        "recommendation_reason": "Review Double-entry system because there is an unresolved misconception on it — Records both sides of a transaction inside the same account instead of in two different accounts., and your evidence is partial — it is close to solid.",
        "estimated_minutes": 7,
        "order_index": 0,
        "completed_at": null
      },
      {
        "id": "act_msys58itwbvwkp6",
        "revision_plan_id": "plan_msys58ituvw4b6c",
        "topic_id": "topic_accounting-hkdse-debit-and-credit",
        "activity_type": "misconception_fix",
        "instructions": "Redo the step on Debit and credit that went wrong last time, then explain why the correct version is correct.",
        "recommendation_reason": "Review Debit and credit because there is an unresolved misconception on it — Treats \"debit\" as always meaning money leaving the business, so asset and expense increases get reversed., and your evidence is partial — it is close to solid.",
        "estimated_minutes": 7,
        "order_index": 1,
        "completed_at": null
      },
      {
        "id": "act_msys58itxqhsd1a",
        "revision_plan_id": "plan_msys58ituvw4b6c",
        "topic_id": "topic_accounting-hkdse-books-of-original-entry",
        "activity_type": "recall",
        "instructions": "Without looking at your notes, write down everything you remember about Books of original entry. Then check it.",
        "recommendation_reason": "Review Books of original entry because you were strong on it but have not retrieved it recently, and it is a prerequisite for Bank reconciliation.",
        "estimated_minutes": 4,
        "order_index": 2,
        "completed_at": null
      }
    ]
  }
}