skilldrop-cli 0.16.29 → 0.16.31

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.
Files changed (231) hide show
  1. package/bin/skilldrop.js +160 -33
  2. package/catalogue.json +10 -4
  3. package/model-routing.json +24 -0
  4. package/package.json +1 -1
  5. package/packs/ai-engineering/skills/mcp-pairing/SKILL.md +93 -0
  6. package/packs/ai-engineering/skills/mcp-pairing/evals/eval_queries.json +13 -0
  7. package/packs/ai-engineering/skills/mcp-pairing/evals/evals.json +76 -0
  8. package/packs/ai-engineering/skills/mcp-pairing/evals/files/2/mcp.json +32 -0
  9. package/packs/ai-engineering/skills/mcp-pairing/evals/files/4/.mcp.json +47 -0
  10. package/packs/ai-engineering/skills/mcp-pairing/evals/files/4/docs/pr-loop.md +12 -0
  11. package/packs/ai-engineering/skills/mcp-pairing/evals/files/5/docs/oncall-triage.md +18 -0
  12. package/packs/ai-engineering/skills/mcp-pairing/examples/build-loop-github-jira-datadog.md +69 -0
  13. package/packs/ai-engineering/skills/mcp-pairing/manifest.json +17 -0
  14. package/packs/ai-engineering/skills/mcp-pairing/reference.md +136 -0
  15. package/packs/ai-engineering/skills/mcp-pairing/templates/mcp-pairing.md +43 -0
  16. package/packs/dev-team/loops/build/LOOP.md +4 -2
  17. package/packs/dev-team/loops/build/loop.json +2 -2
  18. package/packs/dev-team/loops/release/LOOP.md +7 -5
  19. package/packs/dev-team/loops/release/loop.json +2 -2
  20. package/packs/dev-team/skills/codebase-tour/SKILL.md +115 -0
  21. package/packs/dev-team/skills/codebase-tour/evals/eval_queries.json +13 -0
  22. package/packs/dev-team/skills/codebase-tour/evals/evals.json +77 -0
  23. package/packs/dev-team/skills/codebase-tour/evals/files/1/.github/workflows/ci.yml +23 -0
  24. package/packs/dev-team/skills/codebase-tour/evals/files/1/README.md +23 -0
  25. package/packs/dev-team/skills/codebase-tour/evals/files/1/openapi.yaml +21 -0
  26. package/packs/dev-team/skills/codebase-tour/evals/files/1/package-lock.json +7 -0
  27. package/packs/dev-team/skills/codebase-tour/evals/files/1/package.json +29 -0
  28. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/config.ts +20 -0
  29. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/domain/shipments/filter.ts +24 -0
  30. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/domain/shipments/repository.ts +15 -0
  31. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/errors.ts +9 -0
  32. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/generated/api-types.ts +9 -0
  33. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/http/handlers/shipments.ts +38 -0
  34. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/http/routes.ts +7 -0
  35. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/jobs/export-shipments.ts +22 -0
  36. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/server.ts +18 -0
  37. package/packs/dev-team/skills/codebase-tour/evals/files/1/tests/domain/filter.test.ts +16 -0
  38. package/packs/dev-team/skills/codebase-tour/evals/files/1/tests/http/shipments.test.ts +18 -0
  39. package/packs/dev-team/skills/codebase-tour/evals/files/1/tsconfig.json +10 -0
  40. package/packs/dev-team/skills/codebase-tour/evals/files/1/vitest.config.ts +5 -0
  41. package/packs/dev-team/skills/codebase-tour/evals/files/2/.github/workflows/ci.yml +16 -0
  42. package/packs/dev-team/skills/codebase-tour/evals/files/2/README.md +16 -0
  43. package/packs/dev-team/skills/codebase-tour/evals/files/2/noxfile.py +14 -0
  44. package/packs/dev-team/skills/codebase-tour/evals/files/2/pyproject.toml +22 -0
  45. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/__init__.py +3 -0
  46. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/_version.py +4 -0
  47. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/cli.py +32 -0
  48. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/detect.py +15 -0
  49. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/errors.py +2 -0
  50. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/money.py +14 -0
  51. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/parsers/__init__.py +8 -0
  52. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/parsers/acme.py +18 -0
  53. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/parsers/base.py +24 -0
  54. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/parsers/harbor.py +13 -0
  55. package/packs/dev-team/skills/codebase-tour/evals/files/2/tests/fixtures/acme_sample.csv +3 -0
  56. package/packs/dev-team/skills/codebase-tour/evals/files/2/tests/test_acme.py +23 -0
  57. package/packs/dev-team/skills/codebase-tour/evals/files/2/tests/test_detect.py +13 -0
  58. package/packs/dev-team/skills/codebase-tour/evals/files/3/.github/workflows/ci.yml +28 -0
  59. package/packs/dev-team/skills/codebase-tour/evals/files/3/Makefile +16 -0
  60. package/packs/dev-team/skills/codebase-tour/evals/files/3/README.md +16 -0
  61. package/packs/dev-team/skills/codebase-tour/evals/files/3/cmd/tidepool/main.go +24 -0
  62. package/packs/dev-team/skills/codebase-tour/evals/files/3/go.mod +5 -0
  63. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/config/config.go +38 -0
  64. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/dispatch/dispatcher.go +52 -0
  65. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/dispatch/dispatcher_test.go +42 -0
  66. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/dispatch/sender.go +32 -0
  67. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/replay/replay.go +31 -0
  68. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/db.go +35 -0
  69. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/query.sql +11 -0
  70. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/query.sql.go +30 -0
  71. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/schema.sql +6 -0
  72. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/store_integration_test.go +21 -0
  73. package/packs/dev-team/skills/codebase-tour/evals/files/3/sqlc.yaml +9 -0
  74. package/packs/dev-team/skills/codebase-tour/evals/files/4/.env.example +4 -0
  75. package/packs/dev-team/skills/codebase-tour/evals/files/4/.github/workflows/ci.yml +16 -0
  76. package/packs/dev-team/skills/codebase-tour/evals/files/4/Makefile +16 -0
  77. package/packs/dev-team/skills/codebase-tour/evals/files/4/README.md +23 -0
  78. package/packs/dev-team/skills/codebase-tour/evals/files/4/data/rates.csv +4 -0
  79. package/packs/dev-team/skills/codebase-tour/evals/files/4/pyproject.toml +19 -0
  80. package/packs/dev-team/skills/codebase-tour/evals/files/4/scripts/gen_rates.py +29 -0
  81. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/__init__.py +0 -0
  82. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/api/__init__.py +0 -0
  83. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/api/preview.py +14 -0
  84. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/api/routes.py +36 -0
  85. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/config.py +15 -0
  86. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/discounts.py +8 -0
  87. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/generated/__init__.py +0 -0
  88. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/generated/rates_table.py +8 -0
  89. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/main.py +8 -0
  90. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/shipping.py +18 -0
  91. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/tax.py +7 -0
  92. package/packs/dev-team/skills/codebase-tour/evals/files/4/tests/conftest.py +3 -0
  93. package/packs/dev-team/skills/codebase-tour/evals/files/4/tests/unit/test_discounts.py +11 -0
  94. package/packs/dev-team/skills/codebase-tour/evals/files/4/tests/unit/test_tax.py +13 -0
  95. package/packs/dev-team/skills/codebase-tour/evals/files/5/.env.example +3 -0
  96. package/packs/dev-team/skills/codebase-tour/evals/files/5/.github/workflows/ci.yml +13 -0
  97. package/packs/dev-team/skills/codebase-tour/evals/files/5/README.md +18 -0
  98. package/packs/dev-team/skills/codebase-tour/evals/files/5/package.json +13 -0
  99. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/openapi.json +30 -0
  100. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/package.json +15 -0
  101. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/db.js +19 -0
  102. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/flags.js +8 -0
  103. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/generated/schema.js +32 -0
  104. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/middleware/validate.js +20 -0
  105. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/routes/bookings.js +15 -0
  106. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/server.js +15 -0
  107. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/services/bookings.js +23 -0
  108. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/services/pricing.js +9 -0
  109. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/test/pricing.test.js +15 -0
  110. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/package.json +9 -0
  111. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/src/bookingForm.js +11 -0
  112. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/src/format.js +7 -0
  113. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/test/format.test.js +12 -0
  114. package/packs/dev-team/skills/codebase-tour/evals/files/5/scripts/gen-schema.mjs +27 -0
  115. package/packs/dev-team/skills/codebase-tour/examples/refund-window.md +158 -0
  116. package/packs/dev-team/skills/codebase-tour/manifest.json +47 -0
  117. package/packs/dev-team/skills/codebase-tour/scripts/repo_facts.py +403 -0
  118. package/packs/dev-team/skills/codebase-tour/templates/codebase-tour.md +85 -0
  119. package/packs/dev-team/skills/dependency-upgrade-review/SKILL.md +101 -0
  120. package/packs/dev-team/skills/dependency-upgrade-review/evals/eval_queries.json +11 -0
  121. package/packs/dev-team/skills/dependency-upgrade-review/evals/evals.json +77 -0
  122. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/.github/workflows/ci.yml +20 -0
  123. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/pr.diff +87 -0
  124. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/quillmark-CHANGELOG.md +24 -0
  125. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/src/render/comment.js +6 -0
  126. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/src/render/note.js +8 -0
  127. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/test/note.test.js +12 -0
  128. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/.github/workflows/ci.yml +23 -0
  129. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/.github/workflows/release.yml +23 -0
  130. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/pr.diff +32 -0
  131. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/release-notes.md +20 -0
  132. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/.github/workflows/ci.yml +18 -0
  133. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/Dockerfile +8 -0
  134. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/PR.md +36 -0
  135. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/pr.diff +47 -0
  136. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/src/ingest/client.py +24 -0
  137. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/src/ingest/reader.py +32 -0
  138. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/tests/test_reader.py +15 -0
  139. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/upstream/quillstream-CHANGELOG.md +37 -0
  140. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.github/workflows/ci.yml +22 -0
  141. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.github/workflows/release.yml +25 -0
  142. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.nvmrc +1 -0
  143. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/PR-412.md +16 -0
  144. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/PR-413.md +15 -0
  145. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/package.json +21 -0
  146. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/pr-412.diff +26 -0
  147. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/pr-413.diff +84 -0
  148. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/scripts/release.mjs +18 -0
  149. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/upstream/release-notary-CHANGELOG.md +16 -0
  150. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/upstream/setup-toolchain-RELEASES.md +22 -0
  151. package/packs/dev-team/skills/dependency-upgrade-review/examples/inputs/ledgerline.diff +38 -0
  152. package/packs/dev-team/skills/dependency-upgrade-review/examples/ledgerline-tidyparse.md +91 -0
  153. package/packs/dev-team/skills/dependency-upgrade-review/manifest.json +50 -0
  154. package/packs/dev-team/skills/dependency-upgrade-review/reference.md +99 -0
  155. package/packs/dev-team/skills/dependency-upgrade-review/scripts/upgrade_diff.py +718 -0
  156. package/packs/dev-team/skills/refactor-plan/SKILL.md +168 -0
  157. package/packs/dev-team/skills/refactor-plan/evals/eval_queries.json +46 -0
  158. package/packs/dev-team/skills/refactor-plan/evals/evals.json +106 -0
  159. package/packs/dev-team/skills/refactor-plan/evals/files/1/debt-register-row.md +5 -0
  160. package/packs/dev-team/skills/refactor-plan/evals/files/1/in-flight-prs.md +7 -0
  161. package/packs/dev-team/skills/refactor-plan/evals/files/1/order_service.py +74 -0
  162. package/packs/dev-team/skills/refactor-plan/evals/files/1/test-coverage.txt +14 -0
  163. package/packs/dev-team/skills/refactor-plan/evals/files/3/imports.txt +22 -0
  164. package/packs/dev-team/skills/refactor-plan/evals/files/3/register.md +3 -0
  165. package/packs/dev-team/skills/refactor-plan/evals/files/4/docs/open-prs.md +6 -0
  166. package/packs/dev-team/skills/refactor-plan/evals/files/4/docs/tech-debt-register.md +7 -0
  167. package/packs/dev-team/skills/refactor-plan/evals/files/4/reports/monthly_revenue.py +44 -0
  168. package/packs/dev-team/skills/refactor-plan/evals/files/4/src/billing/invoice.py +233 -0
  169. package/packs/dev-team/skills/refactor-plan/evals/files/4/src/partners/statement.py +29 -0
  170. package/packs/dev-team/skills/refactor-plan/evals/files/4/tests/billing/test_payments.py +13 -0
  171. package/packs/dev-team/skills/refactor-plan/evals/files/5/ci-notes.md +5 -0
  172. package/packs/dev-team/skills/refactor-plan/evals/files/5/open-prs.txt +4 -0
  173. package/packs/dev-team/skills/refactor-plan/evals/files/5/scripts/nightly-digest.js +36 -0
  174. package/packs/dev-team/skills/refactor-plan/evals/files/5/src/auth/passwordReset.ts +16 -0
  175. package/packs/dev-team/skills/refactor-plan/evals/files/5/src/notify/index.ts +2 -0
  176. package/packs/dev-team/skills/refactor-plan/evals/files/5/src/notify/legacyMailer.ts +149 -0
  177. package/packs/dev-team/skills/refactor-plan/evals/files/5/src/orders/onOrderShipped.ts +15 -0
  178. package/packs/dev-team/skills/refactor-plan/evals/files/5/tests/notify/legacyMailer.test.ts +7 -0
  179. package/packs/dev-team/skills/refactor-plan/evals/files/6/billing-service/src/main/kotlin/billing/DunningJob.kt +29 -0
  180. package/packs/dev-team/skills/refactor-plan/evals/files/6/billing-service/src/main/kotlin/billing/InvoiceService.kt +157 -0
  181. package/packs/dev-team/skills/refactor-plan/evals/files/6/billing-service/src/main/kotlin/billing/pdf/InvoicePdfRenderer.kt +36 -0
  182. package/packs/dev-team/skills/refactor-plan/evals/files/6/billing-service/src/test/kotlin/billing/InvoiceServiceTest.kt +40 -0
  183. package/packs/dev-team/skills/refactor-plan/evals/files/6/docs/adr-007-persistence.md +26 -0
  184. package/packs/dev-team/skills/refactor-plan/evals/files/6/docs/open-prs.md +9 -0
  185. package/packs/dev-team/skills/refactor-plan/evals/files/7/notes/open-work.md +19 -0
  186. package/packs/dev-team/skills/refactor-plan/evals/files/7/web/src/components/CheckoutPanel.tsx +207 -0
  187. package/packs/dev-team/skills/refactor-plan/evals/files/7/web/src/components/MiniCart.tsx +33 -0
  188. package/packs/dev-team/skills/refactor-plan/evals/files/7/web/src/components/__tests__/CheckoutPanel.test.tsx +13 -0
  189. package/packs/dev-team/skills/refactor-plan/evals/files/7/web/src/pages/OrderReview.tsx +24 -0
  190. package/packs/dev-team/skills/refactor-plan/examples/search-ranker.md +104 -0
  191. package/packs/dev-team/skills/refactor-plan/manifest.json +36 -0
  192. package/packs/dev-team/skills/refactor-plan/reference.md +149 -0
  193. package/packs/dev-team/skills/refactor-plan/templates/refactor-plan.md +82 -0
  194. package/packs/dev-team/skills/rollout-plan/SKILL.md +157 -0
  195. package/packs/dev-team/skills/rollout-plan/evals/eval_queries.json +12 -0
  196. package/packs/dev-team/skills/rollout-plan/evals/evals.json +109 -0
  197. package/packs/dev-team/skills/rollout-plan/evals/files/2/metrics-snapshot.txt +11 -0
  198. package/packs/dev-team/skills/rollout-plan/evals/files/2/pr-description.md +28 -0
  199. package/packs/dev-team/skills/rollout-plan/evals/files/4/PR_DESCRIPTION.md +24 -0
  200. package/packs/dev-team/skills/rollout-plan/evals/files/4/metrics_snapshot.txt +7 -0
  201. package/packs/dev-team/skills/rollout-plan/evals/files/5/docs/tax-engine-v2.md +24 -0
  202. package/packs/dev-team/skills/rollout-plan/evals/files/6/flags/smart_reminders_v2.yaml +14 -0
  203. package/packs/dev-team/skills/rollout-plan/evals/files/6/notes/push-pipeline.md +10 -0
  204. package/packs/dev-team/skills/rollout-plan/evals/files/7/docs/ratelimiter-v2.md +21 -0
  205. package/packs/dev-team/skills/rollout-plan/evals/files/7/ops/traffic-summary.txt +9 -0
  206. package/packs/dev-team/skills/rollout-plan/examples/sync-engine-workspaces.md +102 -0
  207. package/packs/dev-team/skills/rollout-plan/manifest.json +35 -0
  208. package/packs/dev-team/skills/rollout-plan/reference.md +100 -0
  209. package/packs/dev-team/skills/rollout-plan/scripts/canary_math.py +261 -0
  210. package/packs/dev-team/skills/rollout-plan/templates/rollout-plan.md +50 -0
  211. package/packs/product-manager/loops/discover/LOOP.md +5 -4
  212. package/packs/product-manager/loops/discover/loop.json +2 -2
  213. package/packs/product-manager/skills/feedback-synthesis/SKILL.md +182 -0
  214. package/packs/product-manager/skills/feedback-synthesis/evals/eval_queries.json +46 -0
  215. package/packs/product-manager/skills/feedback-synthesis/evals/evals.json +76 -0
  216. package/packs/product-manager/skills/feedback-synthesis/evals/files/1/interview-notes.md +47 -0
  217. package/packs/product-manager/skills/feedback-synthesis/evals/files/1/nps-verbatims.csv +13 -0
  218. package/packs/product-manager/skills/feedback-synthesis/evals/files/1/support-tickets.csv +36 -0
  219. package/packs/product-manager/skills/feedback-synthesis/evals/files/3/churn-exit-survey.csv +11 -0
  220. package/packs/product-manager/skills/feedback-synthesis/evals/files/3/sales-call-notes.md +55 -0
  221. package/packs/product-manager/skills/feedback-synthesis/evals/files/4/csat_comments_q3.csv +17 -0
  222. package/packs/product-manager/skills/feedback-synthesis/evals/files/4/support_tickets_q3.csv +49 -0
  223. package/packs/product-manager/skills/feedback-synthesis/evals/files/5/app_reviews_last_60_days.csv +32 -0
  224. package/packs/product-manager/skills/feedback-synthesis/evals/files/5/interview_notes_round1.md +48 -0
  225. package/packs/product-manager/skills/feedback-synthesis/examples/booking-app-feedback.md +139 -0
  226. package/packs/product-manager/skills/feedback-synthesis/examples/inputs/booking-app-coded.csv +17 -0
  227. package/packs/product-manager/skills/feedback-synthesis/manifest.json +53 -0
  228. package/packs/product-manager/skills/feedback-synthesis/reference.md +89 -0
  229. package/packs/product-manager/skills/feedback-synthesis/scripts/theme_counts.py +355 -0
  230. package/packs/product-manager/skills/feedback-synthesis/templates/coding-sheet.csv +6 -0
  231. package/packs/product-manager/skills/feedback-synthesis/templates/synthesis.md +42 -0
@@ -0,0 +1,76 @@
1
+ {
2
+ "skill_name": "feedback-synthesis",
3
+ "evals": [
4
+ {
5
+ "id": 1,
6
+ "prompt": "I'm the PM for Tallyhouse, our invoicing app for small businesses. Q4 planning is next week and I need to know what customers actually told us in Q3. It's all in this folder: support-tickets.csv (35 tickets), nps-verbatims.csv (the 12 NPS responses that left a comment; the survey is anonymous) and interview-notes.md (5 customer interviews). What are the themes, and which should we act on first? The loudest thing in support is the CSV export, so I'm assuming that's number one.",
7
+ "assertions": [
8
+ "It corrects the premise: the CSV export problem comes from 2 accounts, and 6 of its 7 tickets are from one account (A-1042), so it is not ranked first on volume",
9
+ "It ranks card payments failing for clients (3 accounts: A-1107, A-1220, A-1315) above the blurry PDF logo (7 accounts), stating that payment failure blocks getting paid while the logo is cosmetic",
10
+ "It says the card payment failures come only from EU accounts (Germany, France, Netherlands), and reports the anonymous NPS comment N-06 beside the 3 accounts rather than adding it to make 4",
11
+ "It states the bulk-edit requests as the problem behind them (changing a rate means editing each recurring invoice by hand, 30 to 58 invoices) and keeps 'bulk edit' only as a quoted request",
12
+ "It does not make dark mode a theme with an invented reason: it reports the three anonymous NPS requests as having no stated need and turns the reason into an interview question",
13
+ "It names automatic payment reminders as something customers value and should not be broken, and notes the conflict with the accounts reporting reminders sent to a former contact",
14
+ "It names the limits of each source (tickets come from people with problems, 12 self-selected anonymous NPS comments, 5 interviews) and gives no percentage of the customer base",
15
+ "Every quotation is verbatim from the files with its ticket, response or interview ID, interviewer summaries are not put in quotation marks, and it invents no quotes or counts not in the input"
16
+ ]
17
+ },
18
+ {
19
+ "id": 2,
20
+ "prompt": "Here are our 15 App Store reviews for Stridewell (running app) from September. Which 3 features should we build next, and roughly what % of our users want each? Bullets please, it's going in Slack.\n\n1. RunnerJo, 2 stars: \"Please sync with Strava! I have to upload every run twice.\"\n2. Mo_K, 5 stars: \"The training plans are brilliant. Got me from 5k to 10k.\"\n3. hilltrotter, 1 star: \"Lost my whole 21k long run when I went through the woods with no signal. Recording just stopped. Gutted.\"\n4. Bex R, 4 stars: \"Need an Apple Watch app so I can leave my phone at home.\"\n5. RunnerJo, 2 stars: \"Still no Strava sync. Updating my review.\"\n6. dawnpatrol, 3 stars: \"Apple Watch app please\"\n7. Sam T, 5 stars: \"Training plans adapt when I miss a session, love it.\"\n8. trailmix, 1 star: \"Run recording cuts out in the hills where there's no reception. Lost two runs this month.\"\n9. Kez, 4 stars: \"Would be 5 stars with Apple Watch support.\"\n10. NightOwl, 3 stars: \"Font on the run screen is too small to read mid-run.\"\n11. pacepal, 3 stars: \"Strava sync would be nice.\"\n12. Lou, 4 stars: \"Apple Watch app!!\"\n13. GreenMile, 5 stars: \"Best plans of any running app I've tried.\"\n14. ahmedruns, 2 stars: \"Make it work offline.\"\n15. Fenn, 4 stars: \"Great app, but add dark mode.\"",
21
+ "assertions": [
22
+ "It gives no percentage of users for any item, says 15 self-selected reviews cannot support one, and gives counts of reviewers instead",
23
+ "It counts the Strava request as 2 reviewers, not 3, because RunnerJo wrote two of the reviews",
24
+ "It ranks runs being lost where there is no signal (hilltrotter, trailmix) at or near the top as a data-loss problem, ahead of more often requested items that block nothing",
25
+ "It states the lost-runs and Apple Watch items as problems (recording stops without signal; running without the phone) rather than as 'offline mode' and 'Apple Watch app', and notes only one of the four Apple Watch reviews says why",
26
+ "It names the training plans as what reviewers value and should not be broken",
27
+ "It keeps to short bullets suitable for a Slack message, without a long report",
28
+ "Quotations are verbatim from the reviews, and it invents no reviews, reasons or counts not in the prompt"
29
+ ]
30
+ },
31
+ {
32
+ "id": 3,
33
+ "prompt": "Our Head of Sales keeps saying every enterprise prospect asks for SSO and it's costing us deals, and she wants it at the top of the Q1 brief for Fieldnote. Before I write the brief, pull the themes out of sales-call-notes.md (eight calls from September) and churn-exit-survey.csv (the ten exit surveys from Q3). I need something I can hand straight to whoever writes the brief.",
34
+ "assertions": [
35
+ "It counts SSO by distinct prospect: Harrowgate Logistics' two calls (C-01, C-03) count once, and the rep's own note on Norland (C-06) is not counted as a prospect asking, giving 2 prospects (Harrowgate and Brightwater)",
36
+ "It reports that SSO came only from prospects with 650 or more staff, that Norland (900 staff) did not raise it, and that no churned customer mentions it while noting that no churned respondent is in that size band",
37
+ "It identifies double-booking or clashes when jobs are reassigned as the most common churn theme (5 of the 10 exit responses: X-02, X-03, X-05, X-06, X-09) and notes that two prospects (C-02, C-07) raised the same problem",
38
+ "It states themes as problems (enterprise IT won't approve a rollout without central sign-in; reassigning a sick technician's jobs creates double bookings) rather than as feature names",
39
+ "It names the sampling limits: sales notes are prospects' words filtered through reps, and the exit survey covers leavers only",
40
+ "It does not put a rep's summary (such as C-08's pricing note or C-06's SSO note) inside quotation marks as the prospect's words, and every quotation carries its call or response ID",
41
+ "It states plainly how the evidence compares with the claim that every enterprise prospect asks for SSO, and ends with questions for the next interviews tied to the themes",
42
+ "It invents no quotes, deal values or counts not in the files; the only deal value cited is the rep's £84k estimate for Harrowgate, attributed to the rep"
43
+ ]
44
+ },
45
+ {
46
+ "id": 4,
47
+ "held_out": "2026-10-20",
48
+ "prompt": "I'm the PM for Tallyweave (invoicing + expenses for small businesses). I've dropped our Q3 support ticket export in support_tickets_q3.csv and the CSAT survey comments for the same quarter in csat_comments_q3.csv. Engineering has told me we can fund exactly one fix next quarter. Can you work out what customers are actually telling us and what we should fix first? I'm taking this to quarterly planning on Thursday, so I need something I can defend in the room, not just a list of the most common ticket subjects.",
49
+ "assertions": [
50
+ "Counts the export-timeout issue by account, not by ticket: 10 tickets but only 3 accounts. It says outright that one account (ACC-1042 / Brightfen Logistics) filed 8 of those 10, and it does not rank export timeouts first because of ticket volume.",
51
+ "Groups the tickets worded as different feature requests ('Excel export', 'bulk edit', 'notes field', 'bank integration', the wrong balance on a statement, the overdue reminder sent after a deposit) into one problem: Tallyweave cannot record or show part-payments or instalments against an invoice. It counts this across 9 accounts in the tickets (10 distinct accounts if CSAT is included, with ACC-1023 counted once), and states it as a problem, not as a request for an Excel export.",
52
+ "Breaks themes down by segment and notes that the part-payment problem sits mostly in the Starter plan (7 of 9 ticket accounts). It also notes the SSO lockout affects only Enterprise accounts.",
53
+ "Calls out the SSO lockout (TW-4130, TW-4168: 2 Enterprise accounts, whole organisation unable to log in, no fallback) as a severe blocker. It rates severity separately from how often the issue appears, and does not bury the lockout or drop it because only 2 accounts raised it. It also says the lockout may need handling outside the one-fix-per-quarter budget, or names it as an explicit risk.",
54
+ "Spots that the sources disagree about receipt scanning. The tickets say it misreads amounts, while CSAT comments call it the best part of the product. It explains the gap by platform: all 7 scanning tickets (6 accounts) come from Android, and the 5 CSAT comments praising the scanner come from iOS.",
55
+ "Makes one clear recommendation for the single funded fix. The case rests on distinct accounts affected plus severity and business impact (e.g. churn threats, client-facing embarrassment), not raw ticket counts. It also says what evidence would change the call (e.g. account revenue, Brightfen's churn risk).",
56
+ "States what this sample cannot tell. Tickets only capture customers who contact support. CSAT covers a subset of accounts. The data has no revenue or seat-count weighting. It then lists specific follow-up questions or interviews to close those gaps.",
57
+ "Every quote is verbatim text from the two CSV files and carries its ticket_id or response_id. No count, percentage or account total is invented or fails to match the files (e.g. 48 tickets from 36 accounts; 16 CSAT responses)."
58
+ ]
59
+ },
60
+ {
61
+ "id": 5,
62
+ "held_out": "2026-10-20",
63
+ "prompt": "I'm the product designer on Basilbox, a meal-planning app. Attached are the last 60 days of App Store and Google Play reviews (app_reviews_last_60_days.csv, exported from our review tool, so reviewers only have display names) and my typed notes from the six discovery interviews I ran (interview_notes_round1.md). Could you affinity map all of this and tell me what users are telling us? I'm running round 2 of interviews in two weeks and want to know who to recruit and what to ask.",
64
+ "assertions": [
65
+ "Counts reviewers, not reviews. It notices that KitchenKween88 wrote 4 of the reviews complaining about the grocery-list paywall and ads. It reports that theme as roughly 4 to 6 distinct reviewers (depending on whether the ads-only and price-only reviews are included), not as 9 people.",
66
+ "Reframes the 'calendar view' requests as the problem underneath them: the number of people eating changes from night to night or week to week, so portions are wrong and food is wasted. The evidence is the review text (lowtide_lou, Priya_in_Leeds, Teo M.) and interviews P2, P4 and P5. It does not present 'build a calendar view' as the finding.",
67
+ "Flags the data loss after Sign in with Apple (2 App Store reviews on version 4.2.0; all saved recipes gone) as high severity despite being rare. It keeps severity separate from frequency, and may link this to P6 saying losing recipes would make them quit.",
68
+ "Notes that URL recipe-import failures are concentrated on one platform: all 5 such reviews are from Google Play, mostly on 4.2.0/4.2.1. It does not treat P3's smooth import on iPhone as evidence against the bug.",
69
+ "Surfaces the disagreement on price. Reviews call Premium too expensive and the paywall a bait-and-switch, while every interviewee calls the price fine or worth it. It explains the gap by recruitment bias: interviewees were active annual Premium subscribers. It does not declare either source right.",
70
+ "States what the sample cannot tell. App reviews self-select toward extremes. No free-tier or Android users were interviewed. Reviewers cannot be matched to interviewees, so people cannot be added up across the two sources. Six interviews are too few to estimate prevalence.",
71
+ "Gives round-2 recruitment and questions tied to the gaps found. Examples: recruit free-tier or lapsed users and Android users; ask how household headcount varies across a week and how people adjust portions now; probe the sign-in or update experience. Generic questions like 'what do you like about the app' do not count.",
72
+ "Every quote is verbatim text from the CSV or the interview notes, with its source (review author/date, or P1 to P6). No counts or percentages are invented or contradict the files (31 reviews, 28 distinct display names, 6 interviewees)."
73
+ ]
74
+ }
75
+ ]
76
+ }
@@ -0,0 +1,47 @@
1
+ # Tallyhouse customer interviews, Q3 2026
2
+
3
+ Notes by the product team. Text in quotation marks is what the customer said, word for word.
4
+ Everything else is the interviewer's summary.
5
+
6
+ ## I-1 — owner, small bookkeeping practice (account A-1042, Growth, UK, customer 3 years)
7
+
8
+ - Sends about 120 invoices a month for 40 clients.
9
+ - The CSV export is the thing she brought up first. Her accountant's software (Ledgerline)
10
+ only imports dates as DD/MM/YYYY, so every month she reformats the export in a spreadsheet.
11
+ "It's an hour of my life every month and I've told you six times."
12
+ - Says she has looked at two competitors but "moving 40 clients is a pain, so I haven't".
13
+ - Loves the automatic reminders: "The reminders are the reason I'm still here, honestly."
14
+
15
+ ## I-2 — studio manager, design agency (account A-1260, Pro, UK, customer 2 years)
16
+
17
+ - 58 recurring monthly invoices for retainer clients.
18
+ - When the agency raised day rates in July she edited every recurring invoice by hand.
19
+ "When we raised day rates in July I had to open 58 recurring invoices one at a time. Took
20
+ most of a Friday."
21
+ - Asked for bulk edit. When asked how often rates change: once or twice a year, plus
22
+ one-off changes when a client renegotiates.
23
+ - Reminders: "I don't chase anyone any more."
24
+
25
+ ## I-3 — finance lead, consultancy (account A-1315, Pro, NL, customer 1 year)
26
+
27
+ - Most clients are in the Netherlands and Belgium and pay by card.
28
+ - Since mid-July card payments fail for some clients with an authentication error.
29
+ "Two clients gave up and paid by bank transfer three weeks late."
30
+ - Has not found a pattern in which clients fail. Thinks it is "the banks with the app
31
+ approval step", but is not sure.
32
+ - Would leave if it isn't fixed by year end: "Getting paid is the whole point of the product."
33
+
34
+ ## I-4 — sole trader, electrician (account A-1402, Starter, US, customer 2 months)
35
+
36
+ - Mostly uses the iPhone app on site.
37
+ - Receipt photo upload crashed once in his first week; worked after an app update.
38
+ - Happy so far. On price: "It's fine for now, I only send a few invoices."
39
+ - No other problems raised. Interview was short (15 minutes).
40
+
41
+ ## I-5 — co-founder, marketing agency (account A-1188, Growth, IE, customer 2 years)
42
+
43
+ - Likes the reminders but one went to a client's former finance contact after she had
44
+ updated the contact. "It went to someone who left in March. My client forwarded it to me,
45
+ which was mortifying."
46
+ - Price: "Growth went up from 39 to 49 a month and nobody told us why."
47
+ - Also mentioned the CSV export puts first and last name in one column (she raised a ticket).
@@ -0,0 +1,13 @@
1
+ response_id,score,plan,comment
2
+ N-01,9,Growth,"Automatic reminders mean I actually get paid on time now."
3
+ N-02,8,Starter,"Would love a dark mode."
4
+ N-03,3,Starter,"Price went up by almost half. Looking at alternatives."
5
+ N-04,10,Pro,"Reminders alone are worth the money."
6
+ N-05,7,Growth,"Dark mode please!"
7
+ N-06,2,Pro,"Half my German clients can't pay by card. Fix this or we leave."
8
+ N-07,9,Starter,"The mobile app is great for snapping receipts on the go."
9
+ N-08,6,Growth,"Logo on invoices looks blurry."
10
+ N-09,10,Growth,"Clients pay faster since we switched, the reminders do the chasing for me."
11
+ N-10,7,Starter,"Add dark mode."
12
+ N-11,4,Starter,"Too expensive now for what it does."
13
+ N-12,10,Pro,"Does everything we need."
@@ -0,0 +1,36 @@
1
+ ticket_id,account_id,plan,region,created,subject,description
2
+ T-2001,A-1042,Growth,UK,2026-07-02,CSV export dates wrong,"The export puts dates as 2026-07-01. My accountant's software wants 01/07/2026. Every month I fix it by hand."
3
+ T-2002,A-1107,Starter,DE,2026-07-03,Client can't pay invoice by card,"My client in Munich tried to pay invoice INV-0339 by card three times and got 'payment could not be authenticated'. She paid by bank transfer in the end."
4
+ T-2003,A-1131,Starter,UK,2026-07-04,Logo looks fuzzy on PDF,"Our logo looks blurry on the PDF invoices. It's fine on screen."
5
+ T-2004,A-1042,Growth,UK,2026-07-08,CSV export STILL wrong,"Raised this last week. Dates still in the wrong format. This is costing me an hour every month."
6
+ T-2005,A-1150,Growth,US,2026-07-09,Bulk edit invoices?,"Is there a way to bulk edit? We changed our hourly rate and need to update 30 recurring invoices."
7
+ T-2006,A-1163,Starter,US,2026-07-10,How do I add my tax ID,"Where do I put our EIN so it shows on invoices?"
8
+ T-2007,A-1172,Growth,UK,2026-07-11,Logo resolution,"Uploaded a 300dpi PNG, PDF version is pixelated."
9
+ T-2008,A-1188,Growth,IE,2026-07-14,Export columns,"The CSV export merges first and last name into one column, our accountant needs them separate."
10
+ T-2009,A-1042,Growth,UK,2026-07-15,CSV export,"Third time asking. Please fix the date format in the export."
11
+ T-2010,A-1220,Pro,FR,2026-07-16,Card payment failures,"Two of our clients in France reported card payments failing on the payment page this week. Error says authentication failed. We're losing card payments."
12
+ T-2011,A-1199,Starter,UK,2026-07-17,Reminder sent to wrong person,"The automatic reminder went to our client's old accounts contact, even though I updated the contact on the client record in June."
13
+ T-2012,A-1205,Growth,US,2026-07-18,Blurry logo on invoice,"Logo on invoice PDF is blurry. Not a huge deal but it looks unprofessional."
14
+ T-2013,A-1042,Growth,UK,2026-07-22,export,"Still broken. Thinking about moving to another tool if this isn't fixed."
15
+ T-2014,A-1213,Starter,UK,2026-07-23,Receipt upload crashes app,"Every time I take a photo of a receipt in the iPhone app it crashes. Had to upload from my laptop instead."
16
+ T-2015,A-1220,Pro,FR,2026-07-24,Card payments still failing,"Follow-up to my last ticket. Another client couldn't pay by card today. Same authentication error."
17
+ T-2016,A-1227,Pro,UK,2026-07-25,Updating recurring invoices,"We put prices up 5% in August. Is there a faster way than opening each recurring invoice? We have about 45."
18
+ T-2017,A-1234,Starter,UK,2026-07-28,Your price increase,"We were moved from £18 to £26 a month with two weeks' notice. That's a big jump for a two-person business."
19
+ T-2018,A-1238,Growth,UK,2026-07-29,PDF logo,"The logo on our invoices looks low quality."
20
+ T-2019,A-1240,Starter,UK,2026-07-31,Statements,"How do I send a statement of all open invoices to one client?"
21
+ T-2020,A-1245,Starter,US,2026-08-04,How to void an invoice,"How do I void an invoice I sent by mistake?"
22
+ T-2021,A-1251,Growth,NL,2026-08-05,Reminders went to old contact,"Reminder emails for two clients went to people who left those companies months ago. I had changed the billing contact. Embarrassing."
23
+ T-2022,A-1260,Pro,UK,2026-08-06,Bulk change rates,"Need to bulk update day rates across all recurring invoices. Doing them one at a time."
24
+ T-2023,A-1266,Starter,UK,2026-08-07,Logo blurry,"Logo is blurry on the PDF."
25
+ T-2024,A-1270,Growth,US,2026-08-11,Can I cancel?,"How do I cancel my subscription? We're closing the business at the end of September."
26
+ T-2025,A-1042,Growth,UK,2026-08-12,Export,"Fifth ticket about the CSV dates. I've given up and I'm doing it by hand."
27
+ T-2026,A-1281,Starter,UK,2026-08-13,Price rise,"The new price is more than we pay for our accounting software. Please reconsider the Starter price."
28
+ T-2027,A-1288,Growth,UK,2026-08-14,Fuzzy logo,"Our logo prints fuzzy when clients print the invoice."
29
+ T-2028,A-1293,Starter,US,2026-08-18,Late fees,"How do I add a late fee to overdue invoices?"
30
+ T-2029,A-1315,Pro,NL,2026-08-19,Card payments failing for Dutch and Belgian clients,"Since mid-July a lot of our clients' card payments fail with 'could not be authenticated'. Two clients gave up and paid by bank transfer weeks later. This is directly hurting our cash flow."
31
+ T-2030,A-1299,Pro,US,2026-08-21,Mobile crash,"App crashes when I try to attach a photo of a receipt to an expense. iPhone 15."
32
+ T-2031,A-1302,Growth,UK,2026-08-25,Bulk edit,"Please add bulk edit for recurring invoices."
33
+ T-2032,A-1310,Starter,US,2026-08-27,Logo pixelated,"Logo pixelated on emailed PDF invoices."
34
+ T-2033,A-1042,Growth,UK,2026-09-02,CSV export,"Sixth ticket. Date format. Please."
35
+ T-2034,A-1318,Growth,UK,2026-09-04,Where are my reports,"Where did the profit and loss report go after the update?"
36
+ T-2035,A-1322,Growth,US,2026-09-10,Reminder to wrong contact,"Reminder went to the contact on the original invoice, not the current billing contact."
@@ -0,0 +1,11 @@
1
+ response_id,account_id,plan,staff_band,months_as_customer,primary_reason,comment
2
+ X-01,F-3011,Starter,1-25,7,Too expensive,"Couldn't justify it for three vans."
3
+ X-02,F-3027,Team,26-100,14,Missing feature,"When a tech was off, reassigning his jobs double-booked people. Happened weekly."
4
+ X-03,F-3034,Team,26-100,22,Switched to competitor,"Moved to a tool that handles reassignment properly."
5
+ X-04,F-3040,Starter,1-25,4,Business closed,""
6
+ X-05,F-3052,Team,26-100,11,Missing feature,"Double bookings when we moved jobs between engineers. Customers turned up to no one."
7
+ X-06,F-3058,Business,101-500,18,Product too hard to use,"Dispatchers found re-planning a day after a sick call took ages and kept clashing."
8
+ X-07,F-3063,Starter,1-25,9,Too expensive,"Price went up and we're tiny."
9
+ X-08,F-3071,Team,26-100,30,Other,"Our office manager left and nobody else learned it."
10
+ X-09,F-3079,Business,101-500,16,Missing feature,"Reassigning jobs created overlaps the system didn't warn about."
11
+ X-10,F-3085,Team,26-100,12,Switched to competitor,"Cheaper elsewhere."
@@ -0,0 +1,55 @@
1
+ # Fieldnote sales call notes, September 2026
2
+
3
+ Written up by the account executives after each call. Text in quotation marks is what the
4
+ prospect said; everything else is the rep's summary.
5
+
6
+ ## C-01 — Harrowgate Logistics (1,200 staff), first call, 3 Sep, rep: Dana
7
+
8
+ - IT director and head of field operations on the call.
9
+ - IT director: "We can't roll anything out to 300 engineers without SSO."
10
+ - Head of field ops was most interested in route planning across depots.
11
+ - Next step: follow-up with procurement.
12
+
13
+ ## C-02 — Pell & Rowe Plumbing (40 staff), 5 Sep, rep: Marcus
14
+
15
+ - Owner on the call. Wanted to know what happens when a plumber is off sick:
16
+ "Can it move his jobs to someone else without me checking every one?"
17
+ - Asked for the per-technician price twice. Rep thinks price is the main hurdle.
18
+
19
+ ## C-03 — Harrowgate Logistics (1,200 staff), follow-up, 11 Sep, rep: Dana
20
+
21
+ - Procurement and IT director.
22
+ - Procurement: "SSO with Entra is a hard requirement for us."
23
+ - Deal size discussed: 300 seats. Rep estimate in CRM: £84k a year.
24
+ - Status: paused until SSO is on the roadmap with a date.
25
+
26
+ ## C-04 — Brightwater Facilities (650 staff), 12 Sep, rep: Marcus
27
+
28
+ - Operations director.
29
+ - "Our security team will ask about SSO first, then audit logs."
30
+ - Liked the dispatcher board. Wants a trial for one region.
31
+
32
+ ## C-05 — Kestrel Electrical (25 staff), 16 Sep, rep: Priya
33
+
34
+ - Owner. Main question was whether the mobile app works with no signal in basements.
35
+ - "Half our jobs are in plant rooms with no reception."
36
+ - No questions about security or login.
37
+
38
+ ## C-06 — Norland Housing Services (900 staff), 18 Sep, rep: Dana
39
+
40
+ - Repairs manager. Interested in scheduling repairs across 14,000 homes.
41
+ - Rep note: they'll probably need SSO at some point given their size; it didn't come up on
42
+ the call.
43
+ - Asked whether tenants can see a live arrival time.
44
+
45
+ ## C-07 — Quayside HVAC (120 staff), 22 Sep, rep: Priya
46
+
47
+ - Dispatcher and ops manager.
48
+ - Dispatcher: "When someone calls in sick, I spend the morning on the phone re-booking."
49
+ - Asked whether Fieldnote warns when a reassigned job clashes with another booking.
50
+
51
+ ## C-08 — Ashdown Cleaning (300 staff), 25 Sep, rep: Marcus
52
+
53
+ - Finance manager. Compared us with a competitor quoted at a lower per-seat price.
54
+ - Rep summary: prospect said pricing per technician feels steep for part-time cleaners.
55
+ - Asked about a per-site price instead.
@@ -0,0 +1,17 @@
1
+ response_id,submitted_at,account_id,plan,platform,csat_score,comment
2
+ CS-301,2026-07-12,ACC-1099,Business,iOS,5,The receipt scanner is honestly magic. Snap and done.
3
+ CS-302,2026-07-18,ACC-1170,Business,iOS,5,"Scanning receipts is the best part of Tallyweave, saves me so much time."
4
+ CS-303,2026-07-25,ACC-1135,Business,iOS,4,Love the receipt scanning. Wish approvals emails were quicker.
5
+ CS-304,2026-08-02,ACC-1042,Business,Web,1,Exports still broken. Have raised it repeatedly.
6
+ CS-305,2026-08-06,ACC-1023,Starter,Web,2,Still no way to handle part payments properly. I spend too long fixing invoices.
7
+ CS-306,2026-08-11,ACC-1177,Business,iOS,5,Receipt capture is spot on every time.
8
+ CS-307,2026-08-15,ACC-1188,Enterprise,Web,4,The new approval flow is so much simpler than before.
9
+ CS-308,2026-08-20,ACC-1048,Business,Android,2,Scanner gets amounts wrong constantly on our phones.
10
+ CS-309,2026-08-22,ACC-1250,Starter,Web,3,Fine overall but customers pay me in instalments and I can't show what's left to pay.
11
+ CS-310,2026-08-28,ACC-1208,Enterprise,iOS,5,Our lawyers actually submit expenses on time now because scanning is so easy.
12
+ CS-311,2026-09-03,ACC-1203,Business,Web,4,Approvals are clearer now. Good update.
13
+ CS-312,2026-09-09,ACC-1182,Business,Web,5,Invoices look professional and clients pay faster.
14
+ CS-313,2026-09-12,ACC-1074,Starter,Web,4,Does what we need for a small team.
15
+ CS-314,2026-09-17,ACC-1163,Starter,Web,2,Price went up again this year for the Starter plan.
16
+ CS-315,2026-09-22,ACC-1112,Starter,iOS,5,"Easy to use, good support."
17
+ CS-316,2026-09-26,ACC-1094,Business,Web,3,OK.
@@ -0,0 +1,49 @@
1
+ ticket_id,created_at,account_id,account_name,plan,platform,priority,subject,description
2
+ TW-4010,2026-07-01,ACC-1007,Bramblegate Cafe,Starter,Web,Low,Password reset email not received,"Requested a reset twice, nothing in inbox or spam."
3
+ TW-4012,2026-07-02,ACC-1042,Brightfen Logistics,Business,Web,High,CSV export times out,"Trying to export all expense claims for June (about 6,000 lines) and the page spins for a couple of minutes then shows 'Request timed out'. Need this for month-end."
4
+ TW-4015,2026-07-02,ACC-1011,Kettlewood Bakery,Starter,Web,Normal,Feature request: Excel export of invoices,Every month I download everything and match it against my bank statement by hand because customers pay in two or three chunks and the invoice just says 'Open' until the full amount lands. An Excel export would help.
5
+ TW-4019,2026-07-03,ACC-1042,Brightfen Logistics,Business,Web,High,Re: CSV export times out,Still happening today. Tried Chrome and Edge. Same timeout.
6
+ TW-4023,2026-07-06,ACC-1015,Brindle Courier Co,Starter,Android,Normal,Receipt scan reads wrong amount,Scanned a fuel receipt for 18.40 and it came through as 1840.00. Had to fix it by hand.
7
+ TW-4027,2026-07-07,ACC-1023,Pellbrook Plumbing,Starter,Web,Normal,Please add bulk edit,"When a client pays half up front I have to edit the invoice, delete the line, and make a new invoice for the balance. With bulk edit I could at least fix them all at once."
8
+ TW-4033,2026-07-08,ACC-1042,Brightfen Logistics,Business,Web,Urgent,URGENT export broken again,Our finance team cannot close the month. Export times out every single time. This is the third ticket.
9
+ TW-4036,2026-07-09,ACC-1170,Pemberton Architects,Business,Web,Normal,Approval emails arriving late,Managers get the 'claim awaiting approval' email three or four hours after the claim is submitted.
10
+ TW-4040,2026-07-10,ACC-1035,Marrowind Yoga,Starter,iOS,Normal,Can't mark invoice partially paid,Students pay for a 10-class pass in two instalments. There is no way to record the first payment without marking the whole invoice paid.
11
+ TW-4044,2026-07-13,ACC-1031,Ellery Print Works,Starter,Web,Low,How do I add my logo to invoices?,Can't find where to upload a logo.
12
+ TW-4047,2026-07-14,ACC-1048,Ovenden Electrical,Business,Android,Normal,Scanner mixing up totals,The scanner keeps picking up the VAT line instead of the total.
13
+ TW-4051,2026-07-15,ACC-1042,Brightfen Logistics,Business,Web,High,Export still failing,Your workaround of exporting one week at a time works but it takes our clerk an hour to stitch the files together.
14
+ TW-4055,2026-07-17,ACC-1058,Tidewell Landscaping,Starter,Web,Low,Add a notes field to payments,I'd like a notes box on each payment so I can write down which bank transfer covered which part of an invoice. Right now I keep a separate spreadsheet.
15
+ TW-4058,2026-07-20,ACC-1074,Stonecrop Gardens,Starter,Web,Low,Change card on file,"Our card expired, how do I update billing details?"
16
+ TW-4060,2026-07-20,ACC-1063,Lark & Loom,Starter,Android,Normal,OCR ignores decimal comma,"Receipts from our supplier in France use a comma for decimals. 12,50 becomes 1250."
17
+ TW-4066,2026-07-22,ACC-1107,Harrow Lane Studio,Business,Web,Normal,Report download slow,Downloading the annual expenses report took ages and eventually failed. Smaller date ranges work fine.
18
+ TW-4070,2026-07-24,ACC-1066,Corvane Photography,Starter,Web,Normal,Deposit payments show invoice as unpaid,"Wedding clients pay a 30% deposit. After I record it, the invoice still shows the full amount as unpaid on the client portal and clients email me confused."
19
+ TW-4074,2026-07-27,ACC-1099,Fairlow Consulting,Business,Web,Low,Where is the VAT number field?,Need our VAT number to appear on invoices.
20
+ TW-4078,2026-07-29,ACC-1042,Brightfen Logistics,Business,Web,Normal,Expense report export timeout,Timed out again on the July export. Please escalate.
21
+ TW-4083,2026-07-30,ACC-1188,Ravelston Schools Trust,Enterprise,Web,Normal,Approval notification delay,Approval notifications are delayed by hours. Our heads of department approve in batches at the end of the day so they miss the cut.
22
+ TW-4086,2026-07-31,ACC-1112,Kinsale Bike Repair,Starter,iOS,Low,Locked out after password change,Changed my password and now the iPhone app won't accept it.
23
+ TW-4088,2026-07-31,ACC-1079,Ashgrove Tutors,Starter,Web,Normal,Request: integration with my bank,I spend Sunday nights ticking off payments against invoices because parents pay termly fees in bits. A bank feed would save me hours.
24
+ TW-4092,2026-08-03,ACC-1048,Ovenden Electrical,Business,Android,High,Scanner still wrong - staff giving up,"Following up on my earlier ticket. Engineers have stopped using the scanner and are typing receipts in manually, which defeats the point."
25
+ TW-4096,2026-08-03,ACC-1091,Fenwick & Rye Catering,Starter,Web,High,Overdue reminder sent to client who already paid deposit,Your automatic overdue reminder went to a client who paid a deposit last week. They were annoyed and I looked unprofessional. The system doesn't know about part payments.
26
+ TW-4099,2026-08-04,ACC-1135,Oriel Events,Business,Web,Low,API docs link broken,The link to the API reference in the developer page gives a 404.
27
+ TW-4102,2026-08-04,ACC-1042,Brightfen Logistics,Business,Web,High,Export timeouts - need ETA,Can someone give us an ETA on the export fix? We have raised this many times.
28
+ TW-4108,2026-08-10,ACC-1084,Greyfriar Movers,Business,Android,Normal,Receipt amounts wrong after app update,Since the last Android update the scanned amounts are often off by a factor of 100.
29
+ TW-4111,2026-08-12,ACC-1199,Calder Robotics,Business,Web,Low,Delayed approval emails,"Approval request emails come through late, sometimes the next morning."
30
+ TW-4115,2026-08-13,ACC-1107,Harrow Lane Studio,Business,Web,Normal,Balance due wrong on statement,Customer statement shows the full invoice total as outstanding even though they paid two of three instalments. I had to send a manual PDF instead.
31
+ TW-4118,2026-08-14,ACC-1163,Tamsin Wood Interiors,Starter,Web,Low,Dark mode?,Any plans for a dark mode? I do my books late at night.
32
+ TW-4121,2026-08-18,ACC-1219,Quillmoor Accounting,Enterprise,Web,Normal,Export timeout on large date range,"Exporting a full year of claims times out. Not urgent, we can do it by quarter."
33
+ TW-4124,2026-08-19,ACC-1177,Hexley Data Labs,Business,Web,Low,API rate limits,What are the rate limits on the expenses endpoint?
34
+ TW-4127,2026-08-21,ACC-1007,Bramblegate Cafe,Starter,Web,Low,Logo upload,Where do I put a logo on my invoice template?
35
+ TW-4130,2026-08-24,ACC-1230,Northgate Clinics Group,Enterprise,Web,Urgent,SSO login failing for entire organisation,"Since our identity provider rotated its signing certificate this morning, every user gets 'SAML assertion invalid'. All 140 staff are locked out and cannot submit expenses before the payroll cutoff on Friday. We had to roll back the certificate on our side to get in."
36
+ TW-4135,2026-08-26,ACC-1121,Hollins Tree Care,Starter,Android,Normal,Scan picks up wrong number,It read the card number digits as the amount on a hardware store receipt.
37
+ TW-4138,2026-08-27,ACC-1208,Morrow & Vane Legal,Enterprise,Web,Normal,VAT number on invoices,How do we show our VAT registration number on invoices?
38
+ TW-4140,2026-08-31,ACC-1042,Brightfen Logistics,Business,Web,High,August export failing,Same timeout on the August export. Splitting by week again.
39
+ TW-4144,2026-09-02,ACC-1203,Wyncote Dental,Business,Web,Normal,Approver not notified,Practice manager says she only got the approval email the next day.
40
+ TW-4149,2026-09-04,ACC-1128,Penhallow Surf School,Starter,Web,Low,Cancel subscription,"Closing the surf school for winter, please cancel at end of term."
41
+ TW-4152,2026-09-08,ACC-1142,Saltmarsh Joinery,Business,Web,Normal,Excel export please,Our bookkeeper needs to see what's been paid against each invoice when clients pay in instalments. Could you add an Excel export?
42
+ TW-4157,2026-09-10,ACC-1094,Ludgate Coffee Roasters,Business,Web,Low,Update billing card,"New company card, how do I switch?"
43
+ TW-4160,2026-09-14,ACC-1156,Mosswell Vets,Business,Android,Normal,Receipt scanner unreliable,"About half our scanned receipts need correcting. Our two iPhone users say theirs is fine, it seems to be the Android phones."
44
+ TW-4163,2026-09-16,ACC-1146,Orchard Row Nursery,Starter,Web,Low,Password reset link expired,The reset link says expired as soon as I click it.
45
+ TW-4166,2026-09-18,ACC-1182,Whitlock Physio,Business,Web,Low,Thank you,Just wanted to say the new invoice templates look great. No issue.
46
+ TW-4168,2026-09-21,ACC-1244,Varrick Freight,Enterprise,Web,Urgent,Nobody can log in via SSO,After our scheduled IdP certificate renewal no one in the company can sign in. Drivers cannot log fuel receipts and our admins cannot approve anything. There is no non-SSO fallback for our account. Please treat as a P1.
47
+ TW-4172,2026-09-24,ACC-1219,Quillmoor Accounting,Enterprise,Web,Normal,Approval emails slow,"Partners are getting approval emails hours late. In-app list is up to date, only email is slow."
48
+ TW-4175,2026-09-27,ACC-1031,Ellery Print Works,Starter,Web,Low,unsubscribe,Please stop sending me the newsletter.
49
+ TW-4177,2026-09-29,ACC-1042,Brightfen Logistics,Business,Web,Urgent,Export STILL broken - considering alternatives,Quarter end and the export times out. We are evaluating other tools if this is not fixed.
@@ -0,0 +1,32 @@
1
+ date,store,rating,app_version,author,title,review
2
+ 2026-08-24,Google Play,2,4.1.3,KitchenKween88,Grocery list now Premium??,Used this app for two years and now the grocery list is behind Premium. That was the whole reason I used it.
3
+ 2026-08-25,App Store,5,4.1.3,tilly.bakes,Aisle sorting!,The grocery list sorting itself by supermarket aisle is genius. Shopping takes half the time.
4
+ 2026-08-26,App Store,3,4.1.3,lowtide_lou,Need a calendar view,"Need a calendar view. Half the week it's just me and the other half my kids are here, so the plan makes way too much food on my nights alone."
5
+ 2026-08-29,App Store,2,4.1.3,dana.cooks,Bait and switch,The free grocery list was why I picked this over other planners. Paying 6.99 a month just for a shopping list is too much.
6
+ 2026-08-31,Google Play,5,4.1.3,Ben Ashdown,Great recipes,Recipes are actually tested and work. Weeknight dinners sorted.
7
+ 2026-09-02,Google Play,1,4.1.5,KitchenKween88,Still paywalled,Updated hoping they listened. Nope. Grocery list still locked. Ads between every recipe step too.
8
+ 2026-09-03,App Store,3,4.1.5,Ivo Szabo,Too many notifications,Three notifications a day reminding me to plan meals is too much.
9
+ 2026-09-05,Google Play,2,4.1.5,Marguerite T,Too many ads,An ad pops up between each step of the recipe while my hands are covered in flour.
10
+ 2026-09-06,App Store,5,4.1.5,noodlequeen,Love it,Best meal planner I've tried. The aisle-sorted list is my favourite thing.
11
+ 2026-09-08,Google Play,3,4.1.5,Priya_in_Leeds,Calendar please,Please add a calendar. My partner works away Monday to Wednesday and I end up throwing out half of what I bought.
12
+ 2026-09-11,App Store,1,4.2.0,busydadof3,Grocery list paywall,Can't justify the subscription. Back to writing my list on paper.
13
+ 2026-09-13,App Store,5,4.2.0,C. Varga,Worth it,Premium is worth every penny for our family of five.
14
+ 2026-09-14,Google Play,1,4.2.0,R. Bellweather,Import broken,Pasting a recipe link from a blog just shows 'Could not read recipe'. Worked fine before the update.
15
+ 2026-09-15,Google Play,1,4.2.0,KitchenKween88,Worse every update,Now there's a video ad before I can open my own meal plan. Grocery list still Premium. Uninstalling soon.
16
+ 2026-09-16,App Store,1,4.2.0,June Okafor-Lind,Lost everything,After the update it asked me to sign in with Apple. I did and all 200 of my saved recipes and three years of meal plans are gone. Support hasn't replied.
17
+ 2026-09-17,App Store,1,4.2.0,grahamcracker,Saved recipes deleted,Signed in with Apple as the app asked after updating and my account came up empty. Every saved recipe gone.
18
+ 2026-09-18,Google Play,2,4.2.0,cooking_with_kez,Can't import recipes anymore,Recipe import from URL fails every time on my Pixel.
19
+ 2026-09-19,App Store,4,4.2.0,hollyhock22,Almost perfect,Would be 5 stars with a calendar view.
20
+ 2026-09-21,Google Play,4,4.2.0,Hal Brennan,Solid,"Good recipes, easy plan builder."
21
+ 2026-09-23,Google Play,2,4.2.0,Alder Finch,Import error,Every website I try gives 'Could not read recipe'. My wife's iPhone imports the same link fine.
22
+ 2026-09-26,Google Play,2,4.2.0,Ollie R.,Shopping list locked,Grocery list moved to Premium with no warning. Not cool.
23
+ 2026-09-28,Google Play,4,4.2.0,Lena K,Dark mode,Please add dark mode.
24
+ 2026-10-01,Google Play,3,4.2.1,Teo M.,Weekly calendar,"I want a proper calendar. Some nights we're 2, some nights 5 when the grandkids stay, and every recipe assumes 4."
25
+ 2026-10-03,Google Play,1,4.2.1,nonnaG,Import still broken,Still can't import from links after the latest update. I have 30 recipes I can't add.
26
+ 2026-10-04,App Store,5,4.2.1,rosemary_and_tim,So easy,Planning the week takes ten minutes now.
27
+ 2026-10-06,Google Play,1,4.2.1,KitchenKween88,Do not download,"Ads, paywall, ads. Grocery list locked. One star until they fix it."
28
+ 2026-10-08,App Store,3,4.2.1,pat_the_cook,Slow,Takes a long time to load the plan screen.
29
+ 2026-10-09,App Store,2,4.2.1,fernandvine,Price,"Nice app, but the price for Premium is way more than I'd pay for a meal planner."
30
+ 2026-10-10,Google Play,2,4.2.1,mika.eats,URL import,Import from URL just spins and fails. Android 15.
31
+ 2026-10-11,Google Play,5,4.2.1,Wren P.,Fantastic,Love the leftovers suggestions and the aisle sorting.
32
+ 2026-10-12,App Store,4,4.2.1,sam_and_the_sprouts,Calendar view,Love the recipes. A calendar view would be great.
@@ -0,0 +1,48 @@
1
+ # Basilbox: round 1 discovery interviews (my notes)
2
+
3
+ Recruitment: in-app banner shown to active annual Premium subscribers, 30-minute video call, gift card as thanks. 11 signed up, 6 showed. All six use the app on iPhone or iPad. Notes typed during the call, so quotes are close to verbatim but not perfect.
4
+
5
+ ---
6
+
7
+ ## P1 — lives alone, software tester, cooks 4 nights a week
8
+
9
+ - Plans on Sunday, shops Monday. Has used Basilbox about 18 months.
10
+ - Favourite thing is the aisle-sorted grocery list: "I'm in and out of the shop in fifteen minutes."
11
+ - Price: "Honestly it's cheaper than one takeaway a month. I'd pay more."
12
+ - Skips most recipes over 40 minutes. Wishes there was a "quick only" filter, but found the time filter when I showed her.
13
+ - Imports recipes from two food blogs, no problems.
14
+
15
+ ## P2 — separated, two kids every other week
16
+
17
+ - "Week A it's me and two hungry kids, week B it's just me." Plans the same way both weeks because the app only lets her set one household size.
18
+ - Throws food away on her solo weeks: "I bin a bag of veg every other Sunday and feel awful about it."
19
+ - Asked for "a calendar where I can see which weeks are which". When I asked what she'd do with it, she said she'd use it to "make the portions right for whoever's actually at the table".
20
+ - Price is fine. Uses the grocery list every week.
21
+
22
+ ## P3 — couple, both work from home
23
+
24
+ - Heavy recipe importer, "probably 60 percent of my plan is stuff I imported from blogs". Import has always worked for her on iPhone.
25
+ - Biggest pain is leftovers: they cook big on Sunday and the plan doesn't know there's lasagne left for Tuesday.
26
+ - "The leftovers suggestions are nice, but I have to remember to tell it."
27
+ - Price: no concerns. Didn't know there was a free tier.
28
+
29
+ ## P4 — family of five, partner travels Monday to Wednesday
30
+
31
+ - "Mondays to Wednesdays I'm cooking for four, Thursday on it's five, and at weekends my mum often comes so it's six."
32
+ - Edits servings on every recipe by hand: "I do the maths on every single recipe, every week."
33
+ - Would like "a calendar view" so she can "see who's home each night".
34
+ - Loves the aisle sorting. Said Premium is "worth it, easily".
35
+
36
+ ## P5 — three housemates sharing a plan (iPad on the kitchen counter)
37
+
38
+ - They take turns cooking; who's home varies week to week with shifts.
39
+ - "Half the time we cook for three and it's only two of us, and the third person's portion goes in the fridge and dies there."
40
+ - Wants a way for each housemate to mark which nights they're in.
41
+ - Splits the subscription three ways, "so it's nothing".
42
+
43
+ ## P6 — retired couple
44
+
45
+ - Larger text matters to them; found the in-app text size setting useful.
46
+ - Cooks from the same 15 or so saved recipes on rotation. Asked what would make them stop using the app, they said "if we lost our recipes. That's years of my wife's favourites in there."
47
+ - Hasn't updated the app recently; didn't know about the Sign in with Apple prompt.
48
+ - Price: "Very fair."
@@ -0,0 +1,139 @@
1
+ # Worked example — Corbel salon booking, September feedback
2
+
3
+ A fictional booking app for hair salons. Sixteen items from three sources; the owner of the
4
+ loudest ticket thread assumed the Instagram button was the priority because "everyone asks for
5
+ it". It shows a repeat filer, a request rewritten into a problem, a one-segment theme, and a
6
+ salon whose workaround hides it from the ticket count.
7
+
8
+ ## Input
9
+
10
+ **The request:** *"Here's last month's feedback for Corbel: support tickets, CSAT comments and
11
+ three interview notes. What should we fix first? Product wants to build the Instagram booking
12
+ button next."*
13
+
14
+ **Support tickets** (salon ID, plan, country)
15
+
16
+ | ID | Salon | Plan | Country | Text |
17
+ |---|---|---|---|---|
18
+ | T-501 | S-12 | Team | UK | A client rescheduled through the text link and got put in a slot Marta already had. Two clients turned up at 10am. |
19
+ | T-502 | S-12 | Team | UK | Happened again today. Double booking from the reschedule link. |
20
+ | T-503 | S-12 | Team | UK | Third double booking this month. We had to give one client a free fringe trim to calm her down. |
21
+ | T-504 | S-31 | Team | UK | Reschedule link let a client into a slot that was already booked. |
22
+ | T-505 | S-07 | Solo | UK | Can you add a button on Instagram so people can book from there? |
23
+ | T-506 | S-44 | Solo | IE | The colours on the booking page don't match my brand. |
24
+ | T-507 | S-19 | Team | UK | How do I export my client list? |
25
+ | T-508 | S-52 | Solo | UK | Booking page font is hard to read on phones. |
26
+
27
+ **CSAT comments** (1–5)
28
+
29
+ | ID | Salon | Score | Comment |
30
+ |---|---|---|---|
31
+ | C-01 | S-31 | 2 | The double bookings are going to cost us clients. |
32
+ | C-02 | S-07 | 4 | Love the deposit feature, no-shows have nearly stopped. |
33
+ | C-03 | S-60 | 5 | Deposits changed my business. |
34
+ | C-04 | S-44 | 3 | Fine, but I'd like the booking page to look more like my salon. |
35
+ | C-05 | S-52 | 5 | Easy to use. |
36
+
37
+ **Interview notes** (quotation marks = the salon's words)
38
+
39
+ - **I-1, S-07, Solo, owner:** "Nearly all my new clients find me on Instagram, then I send them
40
+ the link in a DM. Half of them never book."
41
+ - **I-2, S-12, Team, manager:** "I check the book every morning now because I don't trust the
42
+ reschedule link."
43
+ - **I-3, S-73, Team, manager:** Gets many new clients from Instagram; has never tracked whether
44
+ they book. "We turned the reschedule link off after a double booking in our first week."
45
+
46
+ ## Coding sheet
47
+
48
+ [`inputs/booking-app-coded.csv`](inputs/booking-app-coded.csv): one row per item, salon ID as
49
+ `person_id`. T-503 is S1 because the salon gave away a service; I-2 is S2 (a daily manual check);
50
+ I-3's double booking is S3 because the salon has switched the link off. T-505 is coded to the
51
+ Instagram problem, not to a "button" theme. T-506 and T-508 are separate themes: brand colours
52
+ and legibility are different problems.
53
+
54
+ ## Script output (abridged)
55
+
56
+ ```
57
+ - Items: 16; distinct salons with an ID: 8
58
+ - Most items from one salon: S-12 4, S-07 3, S-31 2, S-44 2, S-52 2
59
+
60
+ | Theme | Salons | Mentions | Ranking severity | By severity | One segment only |
61
+ |----------------------------|--------|----------|------------------|-------------|----------------------------|
62
+ | reschedule-double-book | 3 | 7 | S1 | S1 2, S3 1 | plan=Team (4 of 8 overall) |
63
+ | instagram-new-clients | 2 | 3 | S3 | S2 1, S3 1 | - |
64
+ | page-hard-to-read-on-phone | 1 | 1 | S3 (1 report) | S3 1 | - |
65
+ | page-brand-mismatch | 1 | 2 | S4 (1 report) | S4 1 | - |
66
+ | +deposits | 2 | 2 | - | - | plan=Solo (4 of 8 overall) |
67
+
68
+ - WARNING: S-12 accounts for 56% of reschedule-double-book's mentions
69
+ ## Items with no theme
70
+ T-507, C-05
71
+ ```
72
+
73
+ ## The reply
74
+
75
+ # What salons told us in September
76
+
77
+ **Fix the reschedule link before building the Instagram button.** The reschedule link is putting
78
+ clients into slots that are already taken: three salons, all on the Team plan, and one gave away
79
+ a service to calm a client down. The Instagram request comes from two salons, and the problem
80
+ behind it is new clients dropping off between a DM and a booking, which one owner puts at "half".
81
+ Counts below are salons, not messages.
82
+
83
+ ## Themes, ranked
84
+
85
+ | # | Problem | Who | Severity | Sources |
86
+ |---|---|---|---|---|
87
+ | 1 | Rescheduling by text link books clients into slots that are already taken | 3 salons (7 messages, 4 from one salon); Team plan only | **Blocker:** two clients arrive for one slot; one salon gave a free service | tickets, CSAT, interviews |
88
+ | 2 | New clients found on Instagram are sent a link by DM and many never book | 2 salons (one Solo, one Team) | **Minor to major:** one owner says half never book; the other hasn't measured it | ticket, interviews |
89
+ | 3 | The booking page is hard to read on a phone | 1 salon | **Minor**, one report: confirm first | ticket |
90
+ | 4 | The booking page doesn't match the salon's branding | 1 salon (2 messages) | **Cosmetic**, one report | ticket, CSAT |
91
+
92
+ ## Evidence
93
+
94
+ ### 1. Rescheduling books clients into taken slots
95
+ - **Who:** S-12 (three tickets and an interview) and S-31 (a ticket and a CSAT score of 2), plus
96
+ S-73, which switched the link off after one double booking. All three are Team salons; no
97
+ Solo salon reported it.
98
+ - **In their words:** "Two clients turned up at 10am." (T-501); "We had to give one client a free
99
+ fringe trim to calm her down." (T-503); "The double bookings are going to cost us clients."
100
+ (C-01); "I don't trust the reschedule link." (I-2)
101
+ - **What would change this:** a Solo salon using the link without trouble would point at
102
+ multi-staff calendars; no Solo salon in this set says whether it uses the link.
103
+
104
+ ### 2. Instagram new clients drop off before booking
105
+ - **Who:** S-07 (Solo) and S-73 (Team).
106
+ - **In their words:** "Nearly all my new clients find me on Instagram, then I send them the link
107
+ in a DM. Half of them never book." (I-1)
108
+ - **What they asked for:** "Can you add a button on Instagram so people can book from there?"
109
+ (T-505)
110
+ - **What would change this:** S-73 has never tracked whether Instagram clients book, so the drop-off
111
+ rests on one owner's estimate.
112
+
113
+ ## What not to break
114
+ - **Deposits:** two salons, both Solo. "Love the deposit feature, no-shows have nearly stopped."
115
+ (C-02); "Deposits changed my business." (C-03)
116
+
117
+ ## Where the sources disagree
118
+ - S-07 rates the product 4 out of 5 in CSAT while losing "half" its Instagram leads in interview:
119
+ the score doesn't reflect the problem it raised in conversation.
120
+
121
+ ## What this can't tell us
122
+ - **Tickets** come from salons that hit a problem and wrote in. S-73 switched the reschedule link
123
+ off and never filed a ticket, so salons with a workaround don't show up in the count.
124
+ - **CSAT** is five comments from salons that chose to leave one; no score here describes the
125
+ customer base.
126
+ - **Interviews** are three conversations. Eight salons in total is enough to find problems, not
127
+ to say how common they are.
128
+
129
+ ## Questions for the next interviews
130
+ 1. "Walk me through the last time a client rescheduled. What did you see in the book afterwards?"
131
+ (theme 1; ask Solo salons too)
132
+ 2. "Have you switched off any part of Corbel? What made you do it?" (finds hidden workarounds
133
+ like S-73's)
134
+ 3. "Which clients reschedule without a problem? What's different about those bookings?"
135
+ (could disconfirm theme 1)
136
+ 4. "Tell me about the last new client who found you on Instagram. What happened between the DM
137
+ and the appointment?" (theme 2)
138
+
139
+ Next: turn theme 1 into a brief, with the Solo-salon question as an open risk.
@@ -0,0 +1,17 @@
1
+ item_id,person_id,source,plan,country,themes,severity
2
+ T-501,S-12,tickets,Team,UK,reschedule-double-book,S1
3
+ T-502,S-12,tickets,Team,UK,reschedule-double-book,S1
4
+ T-503,S-12,tickets,Team,UK,reschedule-double-book,S1
5
+ T-504,S-31,tickets,Team,UK,reschedule-double-book,S1
6
+ T-505,S-07,tickets,Solo,UK,instagram-new-clients,S3
7
+ T-506,S-44,tickets,Solo,IE,page-brand-mismatch,S4
8
+ T-507,S-19,tickets,Team,UK,,
9
+ T-508,S-52,tickets,Solo,UK,page-hard-to-read-on-phone,S3
10
+ C-01,S-31,csat,Team,UK,reschedule-double-book,S2
11
+ C-02,S-07,csat,Solo,UK,+deposits,
12
+ C-03,S-60,csat,Solo,UK,+deposits,
13
+ C-04,S-44,csat,Solo,IE,page-brand-mismatch,S4
14
+ C-05,S-52,csat,Solo,UK,,
15
+ I-1,S-07,interview,Solo,UK,instagram-new-clients,S2
16
+ I-2,S-12,interview,Team,UK,reschedule-double-book,S2
17
+ I-3,S-73,interview,Team,UK,instagram-new-clients;reschedule-double-book:S3,S3