@shaykec/bridge 0.4.25 → 0.4.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/journeys/ai-engineer.yaml +34 -0
- package/journeys/backend-developer.yaml +36 -0
- package/journeys/business-analyst.yaml +37 -0
- package/journeys/devops-engineer.yaml +37 -0
- package/journeys/engineering-manager.yaml +44 -0
- package/journeys/frontend-developer.yaml +41 -0
- package/journeys/fullstack-developer.yaml +49 -0
- package/journeys/mobile-developer.yaml +42 -0
- package/journeys/product-manager.yaml +35 -0
- package/journeys/qa-engineer.yaml +37 -0
- package/journeys/ux-designer.yaml +43 -0
- package/modules/README.md +52 -0
- package/modules/accessibility-fundamentals/content.md +126 -0
- package/modules/accessibility-fundamentals/exercises.md +88 -0
- package/modules/accessibility-fundamentals/module.yaml +43 -0
- package/modules/accessibility-fundamentals/quick-ref.md +71 -0
- package/modules/accessibility-fundamentals/quiz.md +100 -0
- package/modules/accessibility-fundamentals/resources.md +29 -0
- package/modules/accessibility-fundamentals/walkthrough.md +80 -0
- package/modules/adr-writing/content.md +121 -0
- package/modules/adr-writing/exercises.md +81 -0
- package/modules/adr-writing/module.yaml +41 -0
- package/modules/adr-writing/quick-ref.md +57 -0
- package/modules/adr-writing/quiz.md +73 -0
- package/modules/adr-writing/resources.md +29 -0
- package/modules/adr-writing/walkthrough.md +64 -0
- package/modules/ai-agents/content.md +120 -0
- package/modules/ai-agents/exercises.md +82 -0
- package/modules/ai-agents/module.yaml +42 -0
- package/modules/ai-agents/quick-ref.md +60 -0
- package/modules/ai-agents/quiz.md +103 -0
- package/modules/ai-agents/resources.md +30 -0
- package/modules/ai-agents/walkthrough.md +85 -0
- package/modules/ai-assisted-research/content.md +136 -0
- package/modules/ai-assisted-research/exercises.md +80 -0
- package/modules/ai-assisted-research/module.yaml +42 -0
- package/modules/ai-assisted-research/quick-ref.md +67 -0
- package/modules/ai-assisted-research/quiz.md +73 -0
- package/modules/ai-assisted-research/resources.md +33 -0
- package/modules/ai-assisted-research/walkthrough.md +85 -0
- package/modules/ai-pair-programming/content.md +105 -0
- package/modules/ai-pair-programming/exercises.md +98 -0
- package/modules/ai-pair-programming/module.yaml +39 -0
- package/modules/ai-pair-programming/quick-ref.md +58 -0
- package/modules/ai-pair-programming/quiz.md +73 -0
- package/modules/ai-pair-programming/resources.md +34 -0
- package/modules/ai-pair-programming/walkthrough.md +117 -0
- package/modules/ai-test-generation/content.md +125 -0
- package/modules/ai-test-generation/exercises.md +98 -0
- package/modules/ai-test-generation/module.yaml +39 -0
- package/modules/ai-test-generation/quick-ref.md +65 -0
- package/modules/ai-test-generation/quiz.md +74 -0
- package/modules/ai-test-generation/resources.md +41 -0
- package/modules/ai-test-generation/walkthrough.md +100 -0
- package/modules/api-design/content.md +189 -0
- package/modules/api-design/exercises.md +84 -0
- package/modules/api-design/game.yaml +113 -0
- package/modules/api-design/module.yaml +45 -0
- package/modules/api-design/quick-ref.md +73 -0
- package/modules/api-design/quiz.md +100 -0
- package/modules/api-design/resources.md +55 -0
- package/modules/api-design/walkthrough.md +88 -0
- package/modules/clean-code/content.md +136 -0
- package/modules/clean-code/exercises.md +137 -0
- package/modules/clean-code/game.yaml +172 -0
- package/modules/clean-code/module.yaml +44 -0
- package/modules/clean-code/quick-ref.md +44 -0
- package/modules/clean-code/quiz.md +105 -0
- package/modules/clean-code/resources.md +40 -0
- package/modules/clean-code/walkthrough.md +78 -0
- package/modules/clean-code/workshop.yaml +149 -0
- package/modules/code-review/content.md +130 -0
- package/modules/code-review/exercises.md +95 -0
- package/modules/code-review/game.yaml +83 -0
- package/modules/code-review/module.yaml +42 -0
- package/modules/code-review/quick-ref.md +77 -0
- package/modules/code-review/quiz.md +105 -0
- package/modules/code-review/resources.md +40 -0
- package/modules/code-review/walkthrough.md +106 -0
- package/modules/daily-workflow/content.md +81 -0
- package/modules/daily-workflow/exercises.md +50 -0
- package/modules/daily-workflow/module.yaml +33 -0
- package/modules/daily-workflow/quick-ref.md +37 -0
- package/modules/daily-workflow/quiz.md +65 -0
- package/modules/daily-workflow/resources.md +38 -0
- package/modules/daily-workflow/walkthrough.md +83 -0
- package/modules/debugging-systematically/content.md +139 -0
- package/modules/debugging-systematically/exercises.md +91 -0
- package/modules/debugging-systematically/module.yaml +46 -0
- package/modules/debugging-systematically/quick-ref.md +59 -0
- package/modules/debugging-systematically/quiz.md +105 -0
- package/modules/debugging-systematically/resources.md +42 -0
- package/modules/debugging-systematically/walkthrough.md +84 -0
- package/modules/debugging-systematically/workshop.yaml +127 -0
- package/modules/demo-test/content.md +68 -0
- package/modules/demo-test/exercises.md +28 -0
- package/modules/demo-test/game.yaml +171 -0
- package/modules/demo-test/module.yaml +41 -0
- package/modules/demo-test/quick-ref.md +54 -0
- package/modules/demo-test/quiz.md +74 -0
- package/modules/demo-test/resources.md +21 -0
- package/modules/demo-test/walkthrough.md +122 -0
- package/modules/demo-test/workshop.yaml +31 -0
- package/modules/design-critique/content.md +93 -0
- package/modules/design-critique/exercises.md +71 -0
- package/modules/design-critique/module.yaml +41 -0
- package/modules/design-critique/quick-ref.md +63 -0
- package/modules/design-critique/quiz.md +73 -0
- package/modules/design-critique/resources.md +27 -0
- package/modules/design-critique/walkthrough.md +68 -0
- package/modules/design-patterns/content.md +335 -0
- package/modules/design-patterns/exercises.md +82 -0
- package/modules/design-patterns/game.yaml +55 -0
- package/modules/design-patterns/module.yaml +45 -0
- package/modules/design-patterns/quick-ref.md +44 -0
- package/modules/design-patterns/quiz.md +101 -0
- package/modules/design-patterns/resources.md +40 -0
- package/modules/design-patterns/walkthrough.md +64 -0
- package/modules/exploratory-testing/content.md +133 -0
- package/modules/exploratory-testing/exercises.md +88 -0
- package/modules/exploratory-testing/module.yaml +41 -0
- package/modules/exploratory-testing/quick-ref.md +68 -0
- package/modules/exploratory-testing/quiz.md +75 -0
- package/modules/exploratory-testing/resources.md +39 -0
- package/modules/exploratory-testing/walkthrough.md +87 -0
- package/modules/git/content.md +128 -0
- package/modules/git/exercises.md +53 -0
- package/modules/git/game.yaml +190 -0
- package/modules/git/module.yaml +44 -0
- package/modules/git/quick-ref.md +67 -0
- package/modules/git/quiz.md +89 -0
- package/modules/git/resources.md +49 -0
- package/modules/git/walkthrough.md +92 -0
- package/modules/git/workshop.yaml +145 -0
- package/modules/hiring-interviews/content.md +130 -0
- package/modules/hiring-interviews/exercises.md +88 -0
- package/modules/hiring-interviews/module.yaml +41 -0
- package/modules/hiring-interviews/quick-ref.md +68 -0
- package/modules/hiring-interviews/quiz.md +73 -0
- package/modules/hiring-interviews/resources.md +36 -0
- package/modules/hiring-interviews/walkthrough.md +75 -0
- package/modules/hooks/content.md +97 -0
- package/modules/hooks/exercises.md +69 -0
- package/modules/hooks/module.yaml +39 -0
- package/modules/hooks/quick-ref.md +93 -0
- package/modules/hooks/quiz.md +81 -0
- package/modules/hooks/resources.md +34 -0
- package/modules/hooks/walkthrough.md +105 -0
- package/modules/hooks/workshop.yaml +64 -0
- package/modules/incident-response/content.md +124 -0
- package/modules/incident-response/exercises.md +82 -0
- package/modules/incident-response/game.yaml +132 -0
- package/modules/incident-response/module.yaml +45 -0
- package/modules/incident-response/quick-ref.md +53 -0
- package/modules/incident-response/quiz.md +103 -0
- package/modules/incident-response/resources.md +40 -0
- package/modules/incident-response/walkthrough.md +82 -0
- package/modules/llm-fundamentals/content.md +114 -0
- package/modules/llm-fundamentals/exercises.md +83 -0
- package/modules/llm-fundamentals/module.yaml +42 -0
- package/modules/llm-fundamentals/quick-ref.md +64 -0
- package/modules/llm-fundamentals/quiz.md +103 -0
- package/modules/llm-fundamentals/resources.md +30 -0
- package/modules/llm-fundamentals/walkthrough.md +91 -0
- package/modules/one-on-ones/content.md +133 -0
- package/modules/one-on-ones/exercises.md +81 -0
- package/modules/one-on-ones/module.yaml +44 -0
- package/modules/one-on-ones/quick-ref.md +67 -0
- package/modules/one-on-ones/quiz.md +73 -0
- package/modules/one-on-ones/resources.md +37 -0
- package/modules/one-on-ones/walkthrough.md +69 -0
- package/modules/package.json +9 -0
- package/modules/prioritization-frameworks/content.md +130 -0
- package/modules/prioritization-frameworks/exercises.md +93 -0
- package/modules/prioritization-frameworks/module.yaml +41 -0
- package/modules/prioritization-frameworks/quick-ref.md +77 -0
- package/modules/prioritization-frameworks/quiz.md +73 -0
- package/modules/prioritization-frameworks/resources.md +32 -0
- package/modules/prioritization-frameworks/walkthrough.md +69 -0
- package/modules/prompt-engineering/content.md +123 -0
- package/modules/prompt-engineering/exercises.md +82 -0
- package/modules/prompt-engineering/game.yaml +101 -0
- package/modules/prompt-engineering/module.yaml +45 -0
- package/modules/prompt-engineering/quick-ref.md +65 -0
- package/modules/prompt-engineering/quiz.md +105 -0
- package/modules/prompt-engineering/resources.md +36 -0
- package/modules/prompt-engineering/walkthrough.md +81 -0
- package/modules/rag-fundamentals/content.md +111 -0
- package/modules/rag-fundamentals/exercises.md +80 -0
- package/modules/rag-fundamentals/module.yaml +45 -0
- package/modules/rag-fundamentals/quick-ref.md +58 -0
- package/modules/rag-fundamentals/quiz.md +75 -0
- package/modules/rag-fundamentals/resources.md +34 -0
- package/modules/rag-fundamentals/walkthrough.md +75 -0
- package/modules/react-fundamentals/content.md +140 -0
- package/modules/react-fundamentals/exercises.md +81 -0
- package/modules/react-fundamentals/game.yaml +145 -0
- package/modules/react-fundamentals/module.yaml +45 -0
- package/modules/react-fundamentals/quick-ref.md +62 -0
- package/modules/react-fundamentals/quiz.md +106 -0
- package/modules/react-fundamentals/resources.md +42 -0
- package/modules/react-fundamentals/walkthrough.md +89 -0
- package/modules/react-fundamentals/workshop.yaml +112 -0
- package/modules/react-native-fundamentals/content.md +141 -0
- package/modules/react-native-fundamentals/exercises.md +79 -0
- package/modules/react-native-fundamentals/module.yaml +42 -0
- package/modules/react-native-fundamentals/quick-ref.md +60 -0
- package/modules/react-native-fundamentals/quiz.md +61 -0
- package/modules/react-native-fundamentals/resources.md +24 -0
- package/modules/react-native-fundamentals/walkthrough.md +84 -0
- package/modules/registry.yaml +1650 -0
- package/modules/risk-management/content.md +162 -0
- package/modules/risk-management/exercises.md +86 -0
- package/modules/risk-management/module.yaml +41 -0
- package/modules/risk-management/quick-ref.md +82 -0
- package/modules/risk-management/quiz.md +73 -0
- package/modules/risk-management/resources.md +40 -0
- package/modules/risk-management/walkthrough.md +67 -0
- package/modules/running-effective-standups/content.md +119 -0
- package/modules/running-effective-standups/exercises.md +79 -0
- package/modules/running-effective-standups/module.yaml +40 -0
- package/modules/running-effective-standups/quick-ref.md +61 -0
- package/modules/running-effective-standups/quiz.md +73 -0
- package/modules/running-effective-standups/resources.md +36 -0
- package/modules/running-effective-standups/walkthrough.md +76 -0
- package/modules/solid-principles/content.md +154 -0
- package/modules/solid-principles/exercises.md +107 -0
- package/modules/solid-principles/module.yaml +42 -0
- package/modules/solid-principles/quick-ref.md +50 -0
- package/modules/solid-principles/quiz.md +102 -0
- package/modules/solid-principles/resources.md +39 -0
- package/modules/solid-principles/walkthrough.md +84 -0
- package/modules/sprint-planning/content.md +142 -0
- package/modules/sprint-planning/exercises.md +79 -0
- package/modules/sprint-planning/game.yaml +84 -0
- package/modules/sprint-planning/module.yaml +44 -0
- package/modules/sprint-planning/quick-ref.md +76 -0
- package/modules/sprint-planning/quiz.md +102 -0
- package/modules/sprint-planning/resources.md +39 -0
- package/modules/sprint-planning/walkthrough.md +75 -0
- package/modules/sql-fundamentals/content.md +160 -0
- package/modules/sql-fundamentals/exercises.md +87 -0
- package/modules/sql-fundamentals/game.yaml +105 -0
- package/modules/sql-fundamentals/module.yaml +45 -0
- package/modules/sql-fundamentals/quick-ref.md +53 -0
- package/modules/sql-fundamentals/quiz.md +103 -0
- package/modules/sql-fundamentals/resources.md +42 -0
- package/modules/sql-fundamentals/walkthrough.md +92 -0
- package/modules/sql-fundamentals/workshop.yaml +109 -0
- package/modules/stakeholder-communication/content.md +186 -0
- package/modules/stakeholder-communication/exercises.md +87 -0
- package/modules/stakeholder-communication/module.yaml +38 -0
- package/modules/stakeholder-communication/quick-ref.md +89 -0
- package/modules/stakeholder-communication/quiz.md +73 -0
- package/modules/stakeholder-communication/resources.md +41 -0
- package/modules/stakeholder-communication/walkthrough.md +74 -0
- package/modules/system-design/content.md +149 -0
- package/modules/system-design/exercises.md +83 -0
- package/modules/system-design/game.yaml +95 -0
- package/modules/system-design/module.yaml +46 -0
- package/modules/system-design/quick-ref.md +59 -0
- package/modules/system-design/quiz.md +102 -0
- package/modules/system-design/resources.md +46 -0
- package/modules/system-design/walkthrough.md +90 -0
- package/modules/team-topologies/content.md +166 -0
- package/modules/team-topologies/exercises.md +85 -0
- package/modules/team-topologies/module.yaml +41 -0
- package/modules/team-topologies/quick-ref.md +61 -0
- package/modules/team-topologies/quiz.md +101 -0
- package/modules/team-topologies/resources.md +37 -0
- package/modules/team-topologies/walkthrough.md +76 -0
- package/modules/technical-debt/content.md +111 -0
- package/modules/technical-debt/exercises.md +92 -0
- package/modules/technical-debt/module.yaml +39 -0
- package/modules/technical-debt/quick-ref.md +60 -0
- package/modules/technical-debt/quiz.md +73 -0
- package/modules/technical-debt/resources.md +25 -0
- package/modules/technical-debt/walkthrough.md +94 -0
- package/modules/technical-mentoring/content.md +128 -0
- package/modules/technical-mentoring/exercises.md +84 -0
- package/modules/technical-mentoring/module.yaml +41 -0
- package/modules/technical-mentoring/quick-ref.md +74 -0
- package/modules/technical-mentoring/quiz.md +73 -0
- package/modules/technical-mentoring/resources.md +33 -0
- package/modules/technical-mentoring/walkthrough.md +65 -0
- package/modules/test-strategy/content.md +136 -0
- package/modules/test-strategy/exercises.md +84 -0
- package/modules/test-strategy/game.yaml +99 -0
- package/modules/test-strategy/module.yaml +45 -0
- package/modules/test-strategy/quick-ref.md +66 -0
- package/modules/test-strategy/quiz.md +99 -0
- package/modules/test-strategy/resources.md +60 -0
- package/modules/test-strategy/walkthrough.md +97 -0
- package/modules/test-strategy/workshop.yaml +96 -0
- package/modules/typescript-fundamentals/content.md +127 -0
- package/modules/typescript-fundamentals/exercises.md +79 -0
- package/modules/typescript-fundamentals/game.yaml +111 -0
- package/modules/typescript-fundamentals/module.yaml +45 -0
- package/modules/typescript-fundamentals/quick-ref.md +55 -0
- package/modules/typescript-fundamentals/quiz.md +104 -0
- package/modules/typescript-fundamentals/resources.md +42 -0
- package/modules/typescript-fundamentals/walkthrough.md +71 -0
- package/modules/typescript-fundamentals/workshop.yaml +146 -0
- package/modules/user-story-mapping/content.md +123 -0
- package/modules/user-story-mapping/exercises.md +87 -0
- package/modules/user-story-mapping/module.yaml +41 -0
- package/modules/user-story-mapping/quick-ref.md +64 -0
- package/modules/user-story-mapping/quiz.md +73 -0
- package/modules/user-story-mapping/resources.md +29 -0
- package/modules/user-story-mapping/walkthrough.md +86 -0
- package/modules/writing-prds/content.md +133 -0
- package/modules/writing-prds/exercises.md +93 -0
- package/modules/writing-prds/game.yaml +83 -0
- package/modules/writing-prds/module.yaml +44 -0
- package/modules/writing-prds/quick-ref.md +77 -0
- package/modules/writing-prds/quiz.md +103 -0
- package/modules/writing-prds/resources.md +30 -0
- package/modules/writing-prds/walkthrough.md +87 -0
- package/package.json +2 -2
- package/canvas-dist/assets/_basePickBy-BovdgFIW.js +0 -1
- package/canvas-dist/assets/_basePickBy-BtkHe2u_.js +0 -1
- package/canvas-dist/assets/_basePickBy-C0936578.js +0 -1
- package/canvas-dist/assets/_basePickBy-CE2Qvuh7.js +0 -1
- package/canvas-dist/assets/_basePickBy-DV6sX4CG.js +0 -1
- package/canvas-dist/assets/_basePickBy-DZX6ZNMT.js +0 -1
- package/canvas-dist/assets/_baseUniq-B7dN28TM.js +0 -1
- package/canvas-dist/assets/_baseUniq-Cl23fCdR.js +0 -1
- package/canvas-dist/assets/_baseUniq-CojWFw7B.js +0 -1
- package/canvas-dist/assets/_baseUniq-DA640BJl.js +0 -1
- package/canvas-dist/assets/_baseUniq-Ds-62CCj.js +0 -1
- package/canvas-dist/assets/_baseUniq-KG7SRw9H.js +0 -1
- package/canvas-dist/assets/arc-7E9FFKlC.js +0 -1
- package/canvas-dist/assets/arc-BSMfRZtt.js +0 -1
- package/canvas-dist/assets/arc-C6nT-koR.js +0 -1
- package/canvas-dist/assets/arc-D_fOnjmo.js +0 -1
- package/canvas-dist/assets/arc-Khfvgkr3.js +0 -1
- package/canvas-dist/assets/arc-ieS-i42x.js +0 -1
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DF4t6GQD.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DXgSlsio.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DiomxPB4.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-DnFaxvXD.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-Dt38C0LJ.js +0 -36
- package/canvas-dist/assets/architectureDiagram-VXUJARFQ-egbtMwua.js +0 -36
- package/canvas-dist/assets/blockDiagram-VD42YOAC-CUNKQd-b.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-D-NiLXxd.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-Dx6Dh9gg.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-_r-PmlQy.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-bvYKZLMc.js +0 -122
- package/canvas-dist/assets/blockDiagram-VD42YOAC-l85QT9Ig.js +0 -122
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-BWKCTyQi.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-CbXs2xzC.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-CjiS-GNK.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-D7SnLlHp.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-RTTCSVf2.js +0 -10
- package/canvas-dist/assets/c4Diagram-YG6GDRKO-yvqJ_AqX.js +0 -10
- package/canvas-dist/assets/channel-CSXq7GP6.js +0 -1
- package/canvas-dist/assets/channel-CvujjGiJ.js +0 -1
- package/canvas-dist/assets/channel-D959Iony.js +0 -1
- package/canvas-dist/assets/channel-DOSwCnrB.js +0 -1
- package/canvas-dist/assets/channel-sw61LzxF.js +0 -1
- package/canvas-dist/assets/channel-vZVnNhOK.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-BBjuAwXr.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-BXRNyucU.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-Bgq5Z77T.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-BuoMCMCr.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-COD5n7vg.js +0 -1
- package/canvas-dist/assets/chunk-4BX2VUAB-K8DepKJO.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-Bic_bMrQ.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-DEy2QUDq.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-Dcgbmfzg.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-DfmuNm_E.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-DlQRcczm.js +0 -1
- package/canvas-dist/assets/chunk-55IACEB6-p2qMY-fm.js +0 -1
- package/canvas-dist/assets/chunk-B4BG7PRW-BpbyxBP2.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-CCPqvPrP.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-CEeDPAki.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-D2UFN_2M.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-DFI5h6HC.js +0 -165
- package/canvas-dist/assets/chunk-B4BG7PRW-DKOiFGMU.js +0 -165
- package/canvas-dist/assets/chunk-DI55MBZ5-BV6nHjNQ.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-CEZJmC0E.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-DOZT99Ek.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-DmC2LoG2.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-DpkcJdZP.js +0 -220
- package/canvas-dist/assets/chunk-DI55MBZ5-fVTGx0zh.js +0 -220
- package/canvas-dist/assets/chunk-FMBD7UC4-BOCyQpI7.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-C76FrRL8.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-CAq-btWc.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-CidVsej6.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-DPpfskdX.js +0 -15
- package/canvas-dist/assets/chunk-FMBD7UC4-DnLtclge.js +0 -15
- package/canvas-dist/assets/chunk-QN33PNHL-BclpCUi8.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-DDUw8IU1.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-DdJFAUXw.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-DjV4jUn9.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-N-HTycqU.js +0 -1
- package/canvas-dist/assets/chunk-QN33PNHL-sd8p21DW.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-B6mT-JkP.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-BCo8pc7x.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-C8IIu6es.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-D9FF492U.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-DWMbUjXT.js +0 -1
- package/canvas-dist/assets/chunk-QZHKN3VN-l5FBJ77g.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-BASt-UWt.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-BCfaZWLT.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-BKIk_hBR.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-C4pt-Ir8.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-DwGlELvo.js +0 -1
- package/canvas-dist/assets/chunk-TZMSLE5B-jJKG-WvJ.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-B7YQfPU4.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-BZ61MaHY.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-CGseYor2.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-CKzOc99J.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-Ce_LPjwW.js +0 -1
- package/canvas-dist/assets/classDiagram-2ON5EDUG-DorPdibv.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-B7YQfPU4.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-BZ61MaHY.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-CGseYor2.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-CKzOc99J.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-Ce_LPjwW.js +0 -1
- package/canvas-dist/assets/classDiagram-v2-WZHVMYZB-DorPdibv.js +0 -1
- package/canvas-dist/assets/clone-74KSto7H.js +0 -1
- package/canvas-dist/assets/clone-CJQgAYVe.js +0 -1
- package/canvas-dist/assets/clone-DLeTuhHE.js +0 -1
- package/canvas-dist/assets/clone-D_IHK_lQ.js +0 -1
- package/canvas-dist/assets/clone-DxMUv1L9.js +0 -1
- package/canvas-dist/assets/clone-UNKf_nED.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-BTyQiCkr.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-BtPAe24N.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-DIjE7V3m.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-DKL_BGvE.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-LZ4OsCLU.js +0 -1
- package/canvas-dist/assets/cose-bilkent-S5V4N54A-XWeJtgga.js +0 -1
- package/canvas-dist/assets/dagre-6UL2VRFP-BJ2vcFwR.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-C1FlE5s8.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-C3BWFgl6.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-CUnx73Rf.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-Do10BY1y.js +0 -4
- package/canvas-dist/assets/dagre-6UL2VRFP-rOZEkrsg.js +0 -4
- package/canvas-dist/assets/diagram-PSM6KHXK-BGi_qzbq.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-C3Nv7h_j.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-CsMy-r0n.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-Dj8g7kGt.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-Dxb1w_7r.js +0 -24
- package/canvas-dist/assets/diagram-PSM6KHXK-kVMBkEyV.js +0 -24
- package/canvas-dist/assets/diagram-QEK2KX5R-4bsrr1WZ.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-Bv7BmKfI.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-C_FLN6hv.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-Csuk5L3z.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-D5Aszgz4.js +0 -43
- package/canvas-dist/assets/diagram-QEK2KX5R-DX58f87l.js +0 -43
- package/canvas-dist/assets/diagram-S2PKOQOG-1Q7hwiSd.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-Bz9Vxi5V.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-CdWgZIIc.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-DBicbKFU.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-DsXKwPtU.js +0 -24
- package/canvas-dist/assets/diagram-S2PKOQOG-L_SMHLXs.js +0 -24
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-BYu7fh6H.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-CvnQ69BF.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-D3xm-Tdm.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-DIPpD8sj.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-DNgu6dMd.js +0 -60
- package/canvas-dist/assets/erDiagram-Q2GNP2WA-Decm8aB4.js +0 -60
- package/canvas-dist/assets/flowDiagram-NV44I4VS-2ymk2kw2.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-BEPFOt6U.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-BwqXYGfK.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-CS1jax_z.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-DQz5bf7r.js +0 -162
- package/canvas-dist/assets/flowDiagram-NV44I4VS-KW4T1sqF.js +0 -162
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-B811prZt.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-C75pWm7X.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-CWsbo0fn.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-CbJozPBN.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-Co0cFt4c.js +0 -267
- package/canvas-dist/assets/ganttDiagram-JELNMOA3-I4PDqrRh.js +0 -267
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-B-z0cLPt.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-Be40z-LF.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-BejNaAVm.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-BqWDYr0X.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-DSvWGY-e.js +0 -65
- package/canvas-dist/assets/gitGraphDiagram-V2S2FVAM-HLYbyNJ5.js +0 -65
- package/canvas-dist/assets/graph-BE8KKsdf.js +0 -1
- package/canvas-dist/assets/graph-D6DzzszU.js +0 -1
- package/canvas-dist/assets/graph-DFR8Y_8s.js +0 -1
- package/canvas-dist/assets/graph-Da385cDY.js +0 -1
- package/canvas-dist/assets/graph-MU7gZz2B.js +0 -1
- package/canvas-dist/assets/graph-wjSBJwnf.js +0 -1
- package/canvas-dist/assets/index--ztw-8Rw.js +0 -647
- package/canvas-dist/assets/index-5TpIM6B1.js +0 -11
- package/canvas-dist/assets/index-BSswTuBk.js +0 -11
- package/canvas-dist/assets/index-BVvhMmjs.js +0 -11
- package/canvas-dist/assets/index-BY92Mj5g.js +0 -572
- package/canvas-dist/assets/index-CV7palC3.js +0 -572
- package/canvas-dist/assets/index-D9bmQGsB.js +0 -11
- package/canvas-dist/assets/index-DDIKkGv8.js +0 -592
- package/canvas-dist/assets/index-Dyo0NkPb.js +0 -574
- package/canvas-dist/assets/index-iQWajCow.js +0 -572
- package/canvas-dist/assets/index-m68YlAMU.js +0 -11
- package/canvas-dist/assets/index-mEoP57az.js +0 -11
- package/canvas-dist/assets/infoDiagram-HS3SLOUP--9BirqgJ.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-CSJVED2y.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-D68HIb2t.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-DK2VLGGz.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-PaFhn4yD.js +0 -2
- package/canvas-dist/assets/infoDiagram-HS3SLOUP-zLNG47sU.js +0 -2
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-Bue2dR2X.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-CrgZfpdU.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-DUxWmkkC.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-OTFkv4pd.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-eK2_Zuu3.js +0 -139
- package/canvas-dist/assets/journeyDiagram-XKPGCS4Q-uds5Tz8D.js +0 -139
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-BETdiI7I.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-BdVh7KdN.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-Cxl8UM9S.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-DVPlx3I2.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-LtNWeoYB.js +0 -89
- package/canvas-dist/assets/kanban-definition-3W4ZIXB7-uvhEMvyE.js +0 -89
- package/canvas-dist/assets/layout-1OzszN14.js +0 -1
- package/canvas-dist/assets/layout-CJSupFcF.js +0 -1
- package/canvas-dist/assets/layout-DFRmxN_c.js +0 -1
- package/canvas-dist/assets/layout-DSu-zk7y.js +0 -1
- package/canvas-dist/assets/layout-TGcrvApd.js +0 -1
- package/canvas-dist/assets/layout-eStc8SYK.js +0 -1
- package/canvas-dist/assets/linear-9qlE6xa7.js +0 -1
- package/canvas-dist/assets/linear-CBfFWnLD.js +0 -1
- package/canvas-dist/assets/linear-Cv4ai8Hq.js +0 -1
- package/canvas-dist/assets/linear-DDzz65E6.js +0 -1
- package/canvas-dist/assets/linear-wbIqhwDf.js +0 -1
- package/canvas-dist/assets/linear-wyNKl76F.js +0 -1
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-3l4YzhEM.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-B-KkpNlw.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-DHMHWgmT.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-Dqfyg4Z2.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-NeRYOzsq.js +0 -68
- package/canvas-dist/assets/mindmap-definition-VGOIOE7T-xyu628P9.js +0 -68
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-BWNzVAGj.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-Bm3PXYs-.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-BvvN7VvQ.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-BwU7AN7W.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-CHgwWCaM.js +0 -30
- package/canvas-dist/assets/pieDiagram-ADFJNKIX-DlZc8YOh.js +0 -30
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-B-Zd8OFp.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-B1CnJyxI.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-C0Qo00b9.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-C9bx3nEJ.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-UHENkiRO.js +0 -7
- package/canvas-dist/assets/quadrantDiagram-AYHSOK5B-jKfurTPU.js +0 -7
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-BPpNNusD.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-BwZF1NIK.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-CaT3Frtk.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-Dfoz7R_7.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-DsrX4TT-.js +0 -64
- package/canvas-dist/assets/requirementDiagram-UZGBJVZJ-dmouSXOl.js +0 -64
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BEy-A1Fu.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BViMBiAQ.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-BqrM-qWN.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-DRkRC9qB.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-DbuzKCtn.js +0 -10
- package/canvas-dist/assets/sankeyDiagram-TZEHDZUN-_aHMKbpw.js +0 -10
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-B8FOaL2Q.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-C02NQwOB.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-CgyHivPj.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-CzW1WaEm.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-DJhHI1pe.js +0 -145
- package/canvas-dist/assets/sequenceDiagram-WL72ISMW-VFkpAeoG.js +0 -145
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-BSqFX4PJ.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-BnXhhxkN.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-ClARVrvt.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-CuC6xesY.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-DcAiGjph.js +0 -1
- package/canvas-dist/assets/stateDiagram-FKZM4ZOC-aBg0hjTp.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-8fib9ftc.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-B-DO0ZqO.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-BksbsE4k.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-C2DJCNPK.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-CeA5jba6.js +0 -1
- package/canvas-dist/assets/stateDiagram-v2-4FDKWEC3-zsAyq0tK.js +0 -1
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-BaHdYD2h.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-Bl2hg8IM.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-CrVwLiGm.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-DrXGRjnB.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-cYAwshf6.js +0 -61
- package/canvas-dist/assets/timeline-definition-IT6M3QCI-flyL0y-3.js +0 -61
- package/canvas-dist/assets/treemap-GDKQZRPO-C4Hg8kJ_.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-DVY2G9qY.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-DpLWPA1z.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-Ds86cUVw.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-DwmoI6tH.js +0 -162
- package/canvas-dist/assets/treemap-GDKQZRPO-SsGFkgVd.js +0 -162
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-B9c1iLBf.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-BpX6MPWa.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CEgW_j0p.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CSEFGEQX.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-CnG4XoMc.js +0 -7
- package/canvas-dist/assets/xychartDiagram-PRI3JC2R-Dftj3Bt3.js +0 -7
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# AI Agents Walkthrough — Learn by Doing
|
|
2
|
+
|
|
3
|
+
## Before We Begin
|
|
4
|
+
|
|
5
|
+
**Diagnostic Question:** When an LLM uses a "tool" (like a search API or calculator), how is that different from the model just generating text? What has to happen for the tool to be useful?
|
|
6
|
+
|
|
7
|
+
**Checkpoint:** You recognize that tools give models access to external data and actions. The model must decide when to call a tool, what to pass, and how to use the result.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Step 1: Define a Simple Tool
|
|
12
|
+
|
|
13
|
+
<!-- hint:code language="json" highlight="1,3" -->
|
|
14
|
+
|
|
15
|
+
**Task:** Design a tool for an agent that looks up the current weather. Specify: name, description, and parameters (e.g., city, unit). Write it as a JSON schema. Why is the description important?
|
|
16
|
+
|
|
17
|
+
**Question:** What would happen if the description were vague? How would the model choose between this tool and a "get_forecast" tool?
|
|
18
|
+
|
|
19
|
+
**Checkpoint:** The user defines a tool with clear name, description, and parameters. They understand the model uses the description to decide when to call the tool.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Step 2: Trace the Agent Loop
|
|
24
|
+
|
|
25
|
+
<!-- hint:diagram mermaid-type="flowchart" topic="observe think act loop" -->
|
|
26
|
+
|
|
27
|
+
**Task:** A user asks: "What's the population of Tokyo?" The agent has a `search_web` tool. Trace the loop: (1) Observe — what does the agent see? (2) Think — what does it decide? (3) Act — what tool call? (4) Observe — what comes back? (5) Think/Act — what next?
|
|
28
|
+
|
|
29
|
+
**Question:** When would the loop stop? What if the search returned no results?
|
|
30
|
+
|
|
31
|
+
**Checkpoint:** The user traces observe → think → act → observe → respond. They can handle the "no results" case (retry, different query, or admit uncertainty).
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Step 3: Design a Multi-Step Workflow
|
|
36
|
+
|
|
37
|
+
**Task:** Design an agent workflow for "Summarize the top 3 results from a web search for X." List the tools needed, the order of operations, and what the agent outputs at each step. Draw a simple flow.
|
|
38
|
+
|
|
39
|
+
**Question:** Where could the agent get stuck? What guardrails would you add?
|
|
40
|
+
|
|
41
|
+
**Checkpoint:** The user designs: search → get top 3 → fetch content → summarize. They identify failure modes (empty results, timeout) and suggest retries or fallbacks.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Step 4: Compare ReAct vs Pre-Planning
|
|
46
|
+
|
|
47
|
+
<!-- hint:buttons type="single" prompt="Which approach adapts better to surprises?" options="ReAct,Pre-planning,Both equally" -->
|
|
48
|
+
|
|
49
|
+
**Task:** For the task "Find the GDP of Japan and France, then compare them", sketch two approaches: (A) ReAct — interleave reasoning and tool calls. (B) Pre-plan — write a 3-step plan first, then execute. What are the tradeoffs?
|
|
50
|
+
|
|
51
|
+
**Question:** When might pre-planning fail? When might ReAct be inefficient?
|
|
52
|
+
|
|
53
|
+
**Checkpoint:** The user contrasts both approaches. They note: ReAct adapts to surprises; pre-planning can be wrong. ReAct may make redundant calls; pre-planning may miss steps.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Step 5: Map MCP to Your Use Case
|
|
58
|
+
|
|
59
|
+
<!-- hint:card type="concept" title="MCP (Model Context Protocol)" -->
|
|
60
|
+
|
|
61
|
+
**Task:** Pick a tool you'd want an agent to use (e.g., read files, query a DB, call an API). Describe how it would look as an MCP tool: name, description, inputs, outputs. What does MCP give you that a custom integration doesn't?
|
|
62
|
+
|
|
63
|
+
**Question:** How would MCP help if you had 5 different tools from 5 vendors?
|
|
64
|
+
|
|
65
|
+
**Checkpoint:** The user describes one MCP tool with schema. They understand MCP provides a standard interface so any MCP client can use any MCP server.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Step 6: Add Safety Constraints
|
|
70
|
+
|
|
71
|
+
**Task:** Your agent can run shell commands and edit files. List 3 safety measures you'd implement. For each, say what it prevents and what the tradeoff is (e.g., slower, less flexible).
|
|
72
|
+
|
|
73
|
+
**Question:** Where would you require human approval? What would you never allow?
|
|
74
|
+
|
|
75
|
+
**Checkpoint:** The user proposes: sandbox (no network), allowlist (only certain commands), human approval for destructive ops. They can justify each and name a "never allow" (e.g., `rm -rf /`).
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Step 7: Design a Multi-Agent System
|
|
80
|
+
|
|
81
|
+
**Task:** Design a 3-agent system for "Analyze this codebase and suggest improvements." Define: (1) Orchestrator role, (2) Two specialist agents with distinct tools, (3) How they hand off work and merge results.
|
|
82
|
+
|
|
83
|
+
**Question:** What does the orchestrator need to "know" to delegate well? How do you avoid duplicate work?
|
|
84
|
+
|
|
85
|
+
**Checkpoint:** The user defines orchestrator + 2 specialists (e.g., Analyzer + Writer). They describe handoff (orchestrator assigns files, specialists return findings) and a simple merge strategy.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# AI-Assisted Product Research — Using Claude for Discovery
|
|
2
|
+
|
|
3
|
+
<!-- hint:slides topic="AI-assisted research: use cases, prompting for synthesis, validation techniques, and ethical considerations" slides="5" -->
|
|
4
|
+
|
|
5
|
+
## AI as a Research Amplifier
|
|
6
|
+
|
|
7
|
+
AI doesn't replace human judgment—it amplifies it. Product research still requires real users, real data, and real empathy. AI helps you work faster: synthesize feedback, structure analysis, generate hypotheses, and draft frameworks.
|
|
8
|
+
|
|
9
|
+
Think of Claude as a **research assistant**, not a substitute for discovery.
|
|
10
|
+
|
|
11
|
+
## Use Cases
|
|
12
|
+
|
|
13
|
+
| Use Case | How AI Helps | Human Still Does |
|
|
14
|
+
|----------|--------------|------------------|
|
|
15
|
+
| **Competitor analysis** | Summarize feature matrices, positioning, reviews | Validate with real usage, interpret nuance |
|
|
16
|
+
| **User feedback synthesis** | Cluster themes, extract quotes, identify patterns | Conduct interviews, sense emotional tone |
|
|
17
|
+
| **Market sizing** | Structure TAM/SAM/SOM, suggest data sources | Validate assumptions, fill gaps |
|
|
18
|
+
| **Persona generation** | Draft personas from aggregated data | Ground in real user research |
|
|
19
|
+
| **Survey analysis** | Code open-ended responses, surface themes | Design survey, interpret outliers |
|
|
20
|
+
|
|
21
|
+
## Prompting Techniques for Research
|
|
22
|
+
|
|
23
|
+
### 1. Provide Context
|
|
24
|
+
|
|
25
|
+
Give Claude domain, audience, and constraints upfront.
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
I'm a PM at a B2B SaaS company. Our product helps sales teams track deals.
|
|
29
|
+
I'm researching how mid-market sales managers (50–200 reps) prioritize their week.
|
|
30
|
+
Keep responses focused on that segment.
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 2. Ask for Structured Output
|
|
34
|
+
|
|
35
|
+
Request formats that are easy to act on: tables, bullet lists, JSON.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Synthesize these 10 user feedback quotes into a table: Theme | Representative Quote | Frequency
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 3. Iterate
|
|
42
|
+
|
|
43
|
+
Use follow-ups to refine: "Narrow to pain points only," "Add a confidence score," "Reorder by severity."
|
|
44
|
+
|
|
45
|
+
### 4. Request Citations and Assumptions
|
|
46
|
+
|
|
47
|
+
Ask Claude to distinguish what it inferred vs what you provided.
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
For each insight, label: [From your data] or [Inferred assumption].
|
|
51
|
+
Flag any assumption that needs validation.
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Validating AI-Generated Insights
|
|
55
|
+
|
|
56
|
+
AI can be confidently wrong. Validation steps:
|
|
57
|
+
|
|
58
|
+
1. **Trace to source** — Can you point to user data that supports this?
|
|
59
|
+
2. **Check for bias** — Does the model over-weight common patterns and miss edge cases?
|
|
60
|
+
3. **Triangulate** — Does it match qualitative interviews or quantitative data?
|
|
61
|
+
4. **Pressure-test** — What would disprove this? What evidence would you need?
|
|
62
|
+
|
|
63
|
+
## Combining AI Research With Real Interviews
|
|
64
|
+
|
|
65
|
+
```mermaid
|
|
66
|
+
flowchart LR
|
|
67
|
+
A[AI Synthesis] --> B[Themes & Hypotheses]
|
|
68
|
+
C[User Interviews] --> B
|
|
69
|
+
B --> D[Validated Insights]
|
|
70
|
+
D --> E[PRD / Strategy]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Workflow:**
|
|
74
|
+
1. Use AI to pre-synthesize existing feedback → draft themes.
|
|
75
|
+
2. Use those themes to shape interview guides.
|
|
76
|
+
3. Run interviews; capture raw notes.
|
|
77
|
+
4. Use AI to cluster and extract from notes.
|
|
78
|
+
5. Human validates: Do the clusters match what you heard? Refine.
|
|
79
|
+
|
|
80
|
+
## Ethical Considerations
|
|
81
|
+
|
|
82
|
+
- **Privacy** — Don't paste PII (emails, names) into AI. Anonymize first.
|
|
83
|
+
- **Confidentiality** — Don't upload internal roadmaps or unreleased plans to public AI.
|
|
84
|
+
- **Attribution** — AI summaries are aids, not sources. Don't claim AI output as primary research.
|
|
85
|
+
- **Bias** — AI reflects training data. Watch for demographic or segment bias in synthesis.
|
|
86
|
+
|
|
87
|
+
## Limitations to Watch For
|
|
88
|
+
|
|
89
|
+
| Limitation | Mitigation |
|
|
90
|
+
|-----------|------------|
|
|
91
|
+
| **Hallucination** | Always verify facts, URLs, statistics |
|
|
92
|
+
| **Recency** | Check model cutoff; supplement with fresh data |
|
|
93
|
+
| **Over-generalization** | Ask for segment-specific views; validate with real users |
|
|
94
|
+
| **Missing nuance** | AI smooths over edge cases; manual review for outliers |
|
|
95
|
+
| **Anchoring** | Don't let AI themes replace your own reading of raw data |
|
|
96
|
+
|
|
97
|
+
## AI-Augmented Research Workflow
|
|
98
|
+
|
|
99
|
+
```mermaid
|
|
100
|
+
flowchart TB
|
|
101
|
+
subgraph Input
|
|
102
|
+
I1[Raw feedback]
|
|
103
|
+
I2[Interview notes]
|
|
104
|
+
I3[Competitor pages]
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
subgraph AI
|
|
108
|
+
A1[Synthesis]
|
|
109
|
+
A2[Theme extraction]
|
|
110
|
+
A3[Structured output]
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
subgraph Human
|
|
114
|
+
H1[Validate]
|
|
115
|
+
H2[Interview]
|
|
116
|
+
H3[Decide]
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
I1 --> A1
|
|
120
|
+
I2 --> A1
|
|
121
|
+
I3 --> A2
|
|
122
|
+
A1 --> A3
|
|
123
|
+
A3 --> H1
|
|
124
|
+
H1 --> H2
|
|
125
|
+
H2 --> H3
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
1. **Gather** — Raw data (feedback, notes, competitor info)
|
|
129
|
+
2. **AI Synthesis** — Themes, tables, hypotheses
|
|
130
|
+
3. **Validate** — Human checks against sources
|
|
131
|
+
4. **Interview** — Fill gaps, test hypotheses
|
|
132
|
+
5. **Decide** — PRD, prioritization, strategy
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
AI makes you faster; it doesn't make you right. Use it to scale your analysis, then validate with real users and real data.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# AI-Assisted Research — Exercises
|
|
2
|
+
|
|
3
|
+
## Exercise 1: Theme Extraction Prompt
|
|
4
|
+
|
|
5
|
+
**Task:** Write a prompt that takes 5 survey responses (open-ended) and outputs: (1) 3–5 themes, (2) one representative quote per theme, (3) a confidence level (High/Medium/Low) for each theme based on how many responses support it.
|
|
6
|
+
|
|
7
|
+
**Validation:**
|
|
8
|
+
- [ ] Prompt includes context (e.g., product domain)
|
|
9
|
+
- [ ] Output format is specified (bullets, table, etc.)
|
|
10
|
+
- [ ] Confidence is tied to evidence count, not AI certainty
|
|
11
|
+
- [ ] Prompt is under 200 words
|
|
12
|
+
|
|
13
|
+
**Hints:**
|
|
14
|
+
1. "You are a product researcher synthesizing user feedback."
|
|
15
|
+
2. "For each theme, cite the number of responses that mention it."
|
|
16
|
+
3. "Low confidence = 1 response, Medium = 2, High = 3+."
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Exercise 2: Competitor Feature Matrix
|
|
21
|
+
|
|
22
|
+
**Task:** Choose a product category (e.g., project management, CRM, note-taking). Write a prompt that produces a 5x4 table: 5 features × 4 products (3 competitors + "Our product"). Include an instruction to note "Unknown" where the AI cannot verify, and to add a "Last verified" caveat.
|
|
23
|
+
|
|
24
|
+
**Validation:**
|
|
25
|
+
- [ ] Table structure is specified
|
|
26
|
+
- [ ] "Unknown" handling is explicit
|
|
27
|
+
- [ ] Recency/verification caveat is included
|
|
28
|
+
- [ ] You could run this and manually verify a few cells
|
|
29
|
+
|
|
30
|
+
**Hints:**
|
|
31
|
+
1. List the 5 features and 4 products explicitly
|
|
32
|
+
2. "If you cannot confirm a feature, write 'Unknown (verify)'"
|
|
33
|
+
3. "Add a footer: 'Verify pricing and features on official sites'"
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Exercise 3: Assumption vs Evidence Labels
|
|
38
|
+
|
|
39
|
+
**Task:** Take an AI-synthesized output (from a previous exercise or a sample). For each insight, label it: [E] Evidence-based (traceable to input data) or [A] Assumption (AI inferred). Write 1–2 sentences explaining one [A] and how you'd validate it.
|
|
40
|
+
|
|
41
|
+
**Validation:**
|
|
42
|
+
- [ ] Every insight has a label
|
|
43
|
+
- [ ] At least one [A] is identified
|
|
44
|
+
- [ ] Validation approach is concrete (interview question, data source, etc.)
|
|
45
|
+
|
|
46
|
+
**Hints:**
|
|
47
|
+
1. Evidence = "User said X in quote 3"
|
|
48
|
+
2. Assumption = "Users likely want Y because..." with no direct quote
|
|
49
|
+
3. Validation: "I would ask: 'When you do Z, what frustrates you?'"
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Exercise 4: Persona Draft + Grounding
|
|
54
|
+
|
|
55
|
+
**Task:** Use AI to draft a persona for "mid-market sales managers." Then write a "Grounding Checklist": 3 things you would need to validate with real users before using this persona in a PRD. Include one thing the AI likely got wrong or oversimplified.
|
|
56
|
+
|
|
57
|
+
**Validation:**
|
|
58
|
+
- [ ] Persona has at least: role, goals, frustrations, context
|
|
59
|
+
- [ ] Grounding checklist has 3 concrete validation steps
|
|
60
|
+
- [ ] At least one likely AI error or oversimplification is named
|
|
61
|
+
|
|
62
|
+
**Hints:**
|
|
63
|
+
1. AI personas tend to be "average" — real users have more variance
|
|
64
|
+
2. Grounding: "Interview 5 people who match this role"
|
|
65
|
+
3. Oversimplification: e.g., "All sales managers care about X" — segment differences?
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Exercise 5: End-to-End Research Loop
|
|
70
|
+
|
|
71
|
+
**Task:** Simulate a mini research loop: (1) Paste 5 feedback quotes, (2) Run an AI synthesis prompt, (3) Write 2 interview questions to validate the top theme, (4) Write a one-paragraph "Research Summary" that states what you learned, what's assumed, and what you'd do next.
|
|
72
|
+
|
|
73
|
+
**Validation:**
|
|
74
|
+
- [ ] All 4 steps completed
|
|
75
|
+
- [ ] Summary distinguishes learned vs assumed
|
|
76
|
+
- [ ] Next steps are specific (not "do more research")
|
|
77
|
+
|
|
78
|
+
**Hints:**
|
|
79
|
+
1. Summary template: "We learned X (from data). We assume Y (needs validation). Next: Z."
|
|
80
|
+
2. Next steps: "Interview 3 users about theme A" or "Check analytics for metric B"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
slug: ai-assisted-research
|
|
2
|
+
title: "AI-Assisted Product Research — Using Claude for Discovery"
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: "Use AI to amplify product research—synthesis, competitive analysis, and validation."
|
|
5
|
+
category: product-management
|
|
6
|
+
tags: [ai, product-research, user-research, claude, discovery, analysis]
|
|
7
|
+
difficulty: intermediate
|
|
8
|
+
|
|
9
|
+
xp:
|
|
10
|
+
read: 15
|
|
11
|
+
walkthrough: 40
|
|
12
|
+
exercise: 25
|
|
13
|
+
quiz: 20
|
|
14
|
+
quiz-perfect-bonus: 10
|
|
15
|
+
|
|
16
|
+
time:
|
|
17
|
+
quick: 5
|
|
18
|
+
read: 20
|
|
19
|
+
guided: 50
|
|
20
|
+
|
|
21
|
+
prerequisites: [writing-prds]
|
|
22
|
+
related: [prompt-engineering, ai-pair-programming]
|
|
23
|
+
|
|
24
|
+
triggers:
|
|
25
|
+
- "How can I use AI for product research?"
|
|
26
|
+
- "How do I analyze user feedback with AI?"
|
|
27
|
+
- "Can Claude help with competitive analysis?"
|
|
28
|
+
- "How do I use AI to synthesize research?"
|
|
29
|
+
|
|
30
|
+
visuals:
|
|
31
|
+
diagrams: [diagram-mermaid, diagram-flow]
|
|
32
|
+
quiz-types: [quiz-timed-choice, quiz-matching]
|
|
33
|
+
playground: bash
|
|
34
|
+
slides: true
|
|
35
|
+
|
|
36
|
+
sources:
|
|
37
|
+
- url: "https://docs.anthropic.com/en/docs/overview"
|
|
38
|
+
label: "Anthropic Claude API Docs"
|
|
39
|
+
type: docs
|
|
40
|
+
- url: "https://svpg.com/books/transformed-moving-to-the-product-operating-model"
|
|
41
|
+
label: "SVPG Transformed"
|
|
42
|
+
type: book
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# AI-Assisted Research Quick Reference
|
|
2
|
+
|
|
3
|
+
## AI as Amplifier, Not Replacement
|
|
4
|
+
|
|
5
|
+
| AI Does Well | Human Still Essential |
|
|
6
|
+
|--------------|----------------------|
|
|
7
|
+
| Synthesize large feedback sets | Conduct interviews |
|
|
8
|
+
| Cluster themes, extract quotes | Interpret emotion, nuance |
|
|
9
|
+
| Draft competitor matrices | Verify facts, pricing |
|
|
10
|
+
| Structure TAM/SAM/SOM | Validate assumptions |
|
|
11
|
+
| Generate persona drafts | Ground in real users |
|
|
12
|
+
|
|
13
|
+
## Prompting Checklist
|
|
14
|
+
|
|
15
|
+
- [ ] **Context** — Role, product, audience
|
|
16
|
+
- [ ] **Output format** — Table, bullets, JSON
|
|
17
|
+
- [ ] **Citation** — "Cite source" or "Label [Evidence] vs [Inferred]"
|
|
18
|
+
- [ ] **Constraints** — Segment, time period, focus area
|
|
19
|
+
- [ ] **Recency caveat** — "Note if info may be outdated"
|
|
20
|
+
|
|
21
|
+
## Validation Steps
|
|
22
|
+
|
|
23
|
+
1. **Trace to source** — Can you point to user data?
|
|
24
|
+
2. **Check bias** — Over-weighting common patterns?
|
|
25
|
+
3. **Triangulate** — Matches interviews or analytics?
|
|
26
|
+
4. **Pressure-test** — What would disprove this?
|
|
27
|
+
|
|
28
|
+
## Ethical Checklist
|
|
29
|
+
|
|
30
|
+
- [ ] PII removed or anonymized before pasting
|
|
31
|
+
- [ ] No confidential roadmaps in public AI
|
|
32
|
+
- [ ] AI output not claimed as primary research
|
|
33
|
+
- [ ] Watch for demographic/segment bias
|
|
34
|
+
|
|
35
|
+
## AI-Augmented Workflow
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Gather → AI Synthesis → Validate → Interview → Decide
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Limitations
|
|
42
|
+
|
|
43
|
+
| Limitation | Mitigation |
|
|
44
|
+
|------------|------------|
|
|
45
|
+
| Hallucination | Verify facts, request citations |
|
|
46
|
+
| Recency | Check model cutoff, add fresh data |
|
|
47
|
+
| Over-generalization | Segment-specific prompts, validate with users |
|
|
48
|
+
| Missing nuance | Manual review of raw data, outliers |
|
|
49
|
+
| Anchoring | Read raw data yourself first |
|
|
50
|
+
|
|
51
|
+
## Sample Synthesis Prompt
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
I'm a PM for [product]. I have [N] user feedback quotes below.
|
|
55
|
+
Synthesize into themes. For each theme:
|
|
56
|
+
- Name
|
|
57
|
+
- 1 representative quote
|
|
58
|
+
- Count of supporting quotes
|
|
59
|
+
- [E] if from data, [A] if inferred (flag [A] for validation)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Research Readiness Template
|
|
63
|
+
|
|
64
|
+
- **Validated:** [What we confirmed with data/users]
|
|
65
|
+
- **Assumed:** [What AI inferred, needs check]
|
|
66
|
+
- **Missing:** [Gaps we couldn't fill]
|
|
67
|
+
- **Next step:** [Concrete validation action]
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# AI-Assisted Research — Quiz
|
|
2
|
+
|
|
3
|
+
## Question 1
|
|
4
|
+
|
|
5
|
+
What is the best way to think about AI's role in product research?
|
|
6
|
+
|
|
7
|
+
A) AI replaces the need for user interviews
|
|
8
|
+
B) AI amplifies your analysis but doesn't replace human judgment
|
|
9
|
+
C) AI is only useful for quantitative data, not qualitative
|
|
10
|
+
D) AI should be used only for final report writing
|
|
11
|
+
|
|
12
|
+
<!-- ANSWER: B -->
|
|
13
|
+
<!-- EXPLANATION: AI works best as a research assistant—speeding up synthesis, structuring output, generating hypotheses. Human researchers still need to conduct interviews, validate insights, and make judgment calls. AI amplifies, it doesn't replace. -->
|
|
14
|
+
|
|
15
|
+
## Question 2
|
|
16
|
+
|
|
17
|
+
When prompting AI for research synthesis, which technique helps reduce hallucination?
|
|
18
|
+
|
|
19
|
+
A) Asking for longer responses
|
|
20
|
+
B) Requesting structured output (tables, bullets) and citation of sources
|
|
21
|
+
C) Using more creative, open-ended prompts
|
|
22
|
+
D) Running the same prompt multiple times and averaging
|
|
23
|
+
|
|
24
|
+
<!-- ANSWER: B -->
|
|
25
|
+
<!-- EXPLANATION: Structured output (tables, bullets) and explicit requests to cite sources or label [From data] vs [Inferred] make it easier to verify outputs and catch unsupported claims. Creative open-ended prompts can increase hallucination. -->
|
|
26
|
+
|
|
27
|
+
## Question 3
|
|
28
|
+
|
|
29
|
+
Before using AI-synthesized insights in a PRD, you should:
|
|
30
|
+
|
|
31
|
+
A) Accept them as-is since AI is objective
|
|
32
|
+
B) Trace insights to source data and validate with real users
|
|
33
|
+
C) Use them only for internal drafts, not stakeholder-facing docs
|
|
34
|
+
D) Run them through another AI for a second opinion
|
|
35
|
+
|
|
36
|
+
<!-- ANSWER: B -->
|
|
37
|
+
<!-- EXPLANATION: AI can be confidently wrong. Validating means tracing insights to source data and testing them with real users. Internal vs stakeholder-facing doesn't change the need for validation. A second AI can repeat the same biases. -->
|
|
38
|
+
|
|
39
|
+
## Question 4
|
|
40
|
+
|
|
41
|
+
Which of these is an ethical concern when using AI for research?
|
|
42
|
+
|
|
43
|
+
A) AI responses are too slow
|
|
44
|
+
B) Pasting user PII (names, emails) into AI tools
|
|
45
|
+
C) AI sometimes gives short answers
|
|
46
|
+
D) AI requires an internet connection
|
|
47
|
+
|
|
48
|
+
<!-- ANSWER: B -->
|
|
49
|
+
<!-- EXPLANATION: Pasting PII into AI tools risks privacy violations and may violate data policies. Always anonymize before sharing. Speed, answer length, and connectivity are operational concerns, not ethical ones. -->
|
|
50
|
+
|
|
51
|
+
## Question 5
|
|
52
|
+
|
|
53
|
+
In the AI-augmented research workflow, where do real user interviews fit?
|
|
54
|
+
|
|
55
|
+
A) They're optional once AI has synthesized existing data
|
|
56
|
+
B) They validate and fill gaps in AI-generated themes
|
|
57
|
+
C) They should be replaced by AI analysis of support tickets
|
|
58
|
+
D) They happen only before any AI use
|
|
59
|
+
|
|
60
|
+
<!-- ANSWER: B -->
|
|
61
|
+
<!-- EXPLANATION: The workflow is iterative: AI can pre-synthesize existing data → human designs interview guide from themes → interviews happen → AI can help cluster interview notes → human validates. Interviews validate and deepen AI synthesis; they're central, not optional. -->
|
|
62
|
+
|
|
63
|
+
## Question 6
|
|
64
|
+
|
|
65
|
+
What is a key limitation of AI for research?
|
|
66
|
+
|
|
67
|
+
A) AI cannot write in bullet points
|
|
68
|
+
B) AI tends to over-generalize and smooth over edge cases
|
|
69
|
+
C) AI only works with English
|
|
70
|
+
D) AI cannot process more than 1000 words
|
|
71
|
+
|
|
72
|
+
<!-- ANSWER: B -->
|
|
73
|
+
<!-- EXPLANATION: AI often produces "average" or consensus views and can miss outliers, edge cases, and segment-specific nuances. Manual review of raw data remains important to catch what AI smooths over. Other options are not typical limitations. -->
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# AI-Assisted Product Research — Resources
|
|
2
|
+
|
|
3
|
+
## Videos
|
|
4
|
+
|
|
5
|
+
- [How to Use ChatGPT for User Research](https://www.youtube.com/results?search_query=chatgpt+user+research) — Various PM channels. Prompting for synthesis and analysis (adapt for Claude).
|
|
6
|
+
- [AI for Product Managers](https://www.youtube.com/results?search_query=AI+product+management) — Product School, Reforge. Broader AI-in-PM context.
|
|
7
|
+
|
|
8
|
+
## Articles and Readings
|
|
9
|
+
|
|
10
|
+
- [Building with Claude](https://docs.anthropic.com/en/docs/overview) — Anthropic. Official Claude API docs; prompting and best practices.
|
|
11
|
+
- [How to build your PM second brain with ChatGPT](https://www.lennysnewsletter.com/p/how-to-build-your-pm-second-brain) — Lenny Rachitsky. AI-augmented PM workflows.
|
|
12
|
+
- [Using AI for Product Discovery](https://www.productplan.com/blog/ai-product-discovery/) — ProductPlan. AI in discovery and research.
|
|
13
|
+
- [AI in User Research](https://www.nngroup.com/articles/ai-user-research/) — Nielsen Norman Group. UX research perspective on AI tools.
|
|
14
|
+
- [The Ethics of AI in Product](https://www.svpg.com/) — SVPG. Product ethics and responsibility (search for AI-related posts).
|
|
15
|
+
|
|
16
|
+
## Books
|
|
17
|
+
|
|
18
|
+
- **Transformed** by Marty Cagan et al. — SVPG; product operating model and how discovery fits in.
|
|
19
|
+
- **Inspired** by Marty Cagan — Discovery, opportunity assessment, and working with users.
|
|
20
|
+
- **Continuous Discovery Habits** by Teresa Torres — Research cadence and synthesis practices that pair well with AI assistance.
|
|
21
|
+
|
|
22
|
+
## Podcasts
|
|
23
|
+
|
|
24
|
+
- [Lenny's Podcast: AI for Product](https://www.lennyspodcast.com/) — Lenny Rachitsky. Episodes on AI tools for PMs.
|
|
25
|
+
- [Product Talk](https://www.producttalk.org/) — Teresa Torres. Discovery and research practices.
|
|
26
|
+
|
|
27
|
+
## Tools
|
|
28
|
+
|
|
29
|
+
- [Claude](https://claude.ai/) — Anthropic's AI assistant for synthesis and analysis.
|
|
30
|
+
- [ChatGPT](https://chat.openai.com/) — Alternative for feedback synthesis; compare outputs.
|
|
31
|
+
- [Dovetail](https://dovetail.com/) — User research repository; some AI synthesis features.
|
|
32
|
+
- [Maze](https://maze.co/) — User testing; AI-assisted analysis in some plans.
|
|
33
|
+
- [Notion AI](https://www.notion.so/product/ai) — Summarize research notes and feedback in Notion.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# AI-Assisted Research Walkthrough — Learn by Doing
|
|
2
|
+
|
|
3
|
+
## Before We Begin
|
|
4
|
+
|
|
5
|
+
**Diagnostic:** What can AI *not* do well in research? When you feed 50 user feedback snippets to an LLM for synthesis, what might it get wrong—or miss entirely? Why does that matter?
|
|
6
|
+
|
|
7
|
+
**Checkpoint:** You can name at least two limitations (e.g., confabulation, bias toward common themes, missing nuance) and why human validation is non-negotiable.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Step 1: Prepare Raw Feedback
|
|
12
|
+
|
|
13
|
+
**Task:** Gather 10–15 real or simulated user feedback snippets (support tickets, survey responses, or review quotes). Paste them into a single document. Remove or anonymize any PII.
|
|
14
|
+
|
|
15
|
+
**Question:** Before using AI—if you had to synthesize these manually, what would you look for? Themes? Sentiment? Feature requests?
|
|
16
|
+
|
|
17
|
+
**Checkpoint:** The user has a clean, anonymized set of feedback ready for synthesis.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Step 2: Write a Synthesis Prompt
|
|
22
|
+
|
|
23
|
+
<!-- hint:code language="markdown" highlight="1,3" -->
|
|
24
|
+
|
|
25
|
+
**Task:** Write a prompt for Claude that will synthesize your feedback into themes. Include: (1) your role/context, (2) the format you want (e.g., table: Theme | Quote | Count), (3) a request to flag assumptions.
|
|
26
|
+
|
|
27
|
+
**Question:** How might the prompt change if you wanted to focus only on *pain points* vs *feature requests*? What wording would you add?
|
|
28
|
+
|
|
29
|
+
**Checkpoint:** The user has a prompt that specifies context, output format, and validation instructions.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Step 3: Run Synthesis and Inspect
|
|
34
|
+
|
|
35
|
+
<!-- hint:card type="warning" title="AI can infer patterns not grounded in your data—always trace themes back to source quotes" -->
|
|
36
|
+
|
|
37
|
+
**Task:** Run your prompt with Claude (or another AI). Inspect the output. For each theme: Can you trace it back to at least one source quote? Label any theme that feels like an AI inference vs grounded in your data.
|
|
38
|
+
|
|
39
|
+
**Question:** Did the AI surface anything you hadn't noticed? Did it miss or oversimplify anything?
|
|
40
|
+
|
|
41
|
+
**Checkpoint:** The user can distinguish AI-inferred themes from data-backed ones and identify gaps.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Step 4: Validate With a Quick Check
|
|
46
|
+
|
|
47
|
+
<!-- hint:buttons type="single" prompt="How do you validate an AI-synthesized theme?" options="Trust it; AI is accurate,Interview users; ask directly,Run another AI prompt,Ignore; themes are subjective" -->
|
|
48
|
+
|
|
49
|
+
**Task:** Pick the top 2 themes from the synthesis. For each, write: (1) one piece of evidence that supports it, (2) one thing that would disprove it, (3) one question you'd ask in an interview to validate it.
|
|
50
|
+
|
|
51
|
+
**Question:** If you couldn't use AI, would you have arrived at the same themes? What does that tell you about AI's role?
|
|
52
|
+
|
|
53
|
+
**Checkpoint:** The user has a validation plan for at least 2 themes.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Step 5: Draft a Competitor Analysis Prompt
|
|
58
|
+
|
|
59
|
+
**Task:** You're analyzing 3 competitors. Write a prompt that asks Claude to produce a feature comparison table. Specify: columns (Feature | Competitor A | B | C | Us), rows (which features to compare), and a request to note where info might be outdated.
|
|
60
|
+
|
|
61
|
+
**Question:** What would you need to verify manually after getting the table? (Pricing? Feature availability? Positioning?)
|
|
62
|
+
|
|
63
|
+
**Checkpoint:** The user has a structured competitor-analysis prompt and knows what to validate.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Step 6: Combine AI Output With Human Judgment
|
|
68
|
+
|
|
69
|
+
**Task:** Take your synthesized themes and draft 3 interview questions that would validate or challenge them. Use the themes to focus the questions—don't let AI replace the need to talk to users.
|
|
70
|
+
|
|
71
|
+
**Question:** How would you use the interview answers? Would you feed them back into AI for another round of synthesis?
|
|
72
|
+
|
|
73
|
+
**Checkpoint:** The user connects AI synthesis to a human validation loop.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Step 7: Document Assumptions and Gaps
|
|
78
|
+
|
|
79
|
+
<!-- hint:celebrate -->
|
|
80
|
+
|
|
81
|
+
**Task:** Create a short "Research Readiness" checklist for your synthesis: What's validated? What's inferred? What's missing? What's the next step to reduce uncertainty?
|
|
82
|
+
|
|
83
|
+
**Question:** If a stakeholder asked "How confident are you in these findings?", how would you answer using this checklist?
|
|
84
|
+
|
|
85
|
+
**Checkpoint:** The user can articulate confidence levels and next validation steps.
|