skilldrop-cli 0.16.29 → 0.16.30

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 (174) hide show
  1. package/bin/skilldrop.js +160 -33
  2. package/catalogue.json +7 -3
  3. package/model-routing.json +16 -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/skills/codebase-tour/SKILL.md +115 -0
  19. package/packs/dev-team/skills/codebase-tour/evals/eval_queries.json +13 -0
  20. package/packs/dev-team/skills/codebase-tour/evals/evals.json +77 -0
  21. package/packs/dev-team/skills/codebase-tour/evals/files/1/.github/workflows/ci.yml +23 -0
  22. package/packs/dev-team/skills/codebase-tour/evals/files/1/README.md +23 -0
  23. package/packs/dev-team/skills/codebase-tour/evals/files/1/openapi.yaml +21 -0
  24. package/packs/dev-team/skills/codebase-tour/evals/files/1/package-lock.json +7 -0
  25. package/packs/dev-team/skills/codebase-tour/evals/files/1/package.json +29 -0
  26. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/config.ts +20 -0
  27. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/domain/shipments/filter.ts +24 -0
  28. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/domain/shipments/repository.ts +15 -0
  29. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/errors.ts +9 -0
  30. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/generated/api-types.ts +9 -0
  31. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/http/handlers/shipments.ts +38 -0
  32. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/http/routes.ts +7 -0
  33. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/jobs/export-shipments.ts +22 -0
  34. package/packs/dev-team/skills/codebase-tour/evals/files/1/src/server.ts +18 -0
  35. package/packs/dev-team/skills/codebase-tour/evals/files/1/tests/domain/filter.test.ts +16 -0
  36. package/packs/dev-team/skills/codebase-tour/evals/files/1/tests/http/shipments.test.ts +18 -0
  37. package/packs/dev-team/skills/codebase-tour/evals/files/1/tsconfig.json +10 -0
  38. package/packs/dev-team/skills/codebase-tour/evals/files/1/vitest.config.ts +5 -0
  39. package/packs/dev-team/skills/codebase-tour/evals/files/2/.github/workflows/ci.yml +16 -0
  40. package/packs/dev-team/skills/codebase-tour/evals/files/2/README.md +16 -0
  41. package/packs/dev-team/skills/codebase-tour/evals/files/2/noxfile.py +14 -0
  42. package/packs/dev-team/skills/codebase-tour/evals/files/2/pyproject.toml +22 -0
  43. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/__init__.py +3 -0
  44. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/_version.py +4 -0
  45. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/cli.py +32 -0
  46. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/detect.py +15 -0
  47. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/errors.py +2 -0
  48. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/money.py +14 -0
  49. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/parsers/__init__.py +8 -0
  50. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/parsers/acme.py +18 -0
  51. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/parsers/base.py +24 -0
  52. package/packs/dev-team/skills/codebase-tour/evals/files/2/src/ledgerline/parsers/harbor.py +13 -0
  53. package/packs/dev-team/skills/codebase-tour/evals/files/2/tests/fixtures/acme_sample.csv +3 -0
  54. package/packs/dev-team/skills/codebase-tour/evals/files/2/tests/test_acme.py +23 -0
  55. package/packs/dev-team/skills/codebase-tour/evals/files/2/tests/test_detect.py +13 -0
  56. package/packs/dev-team/skills/codebase-tour/evals/files/3/.github/workflows/ci.yml +28 -0
  57. package/packs/dev-team/skills/codebase-tour/evals/files/3/Makefile +16 -0
  58. package/packs/dev-team/skills/codebase-tour/evals/files/3/README.md +16 -0
  59. package/packs/dev-team/skills/codebase-tour/evals/files/3/cmd/tidepool/main.go +24 -0
  60. package/packs/dev-team/skills/codebase-tour/evals/files/3/go.mod +5 -0
  61. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/config/config.go +38 -0
  62. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/dispatch/dispatcher.go +52 -0
  63. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/dispatch/dispatcher_test.go +42 -0
  64. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/dispatch/sender.go +32 -0
  65. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/replay/replay.go +31 -0
  66. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/db.go +35 -0
  67. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/query.sql +11 -0
  68. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/query.sql.go +30 -0
  69. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/schema.sql +6 -0
  70. package/packs/dev-team/skills/codebase-tour/evals/files/3/internal/store/store_integration_test.go +21 -0
  71. package/packs/dev-team/skills/codebase-tour/evals/files/3/sqlc.yaml +9 -0
  72. package/packs/dev-team/skills/codebase-tour/evals/files/4/.env.example +4 -0
  73. package/packs/dev-team/skills/codebase-tour/evals/files/4/.github/workflows/ci.yml +16 -0
  74. package/packs/dev-team/skills/codebase-tour/evals/files/4/Makefile +16 -0
  75. package/packs/dev-team/skills/codebase-tour/evals/files/4/README.md +23 -0
  76. package/packs/dev-team/skills/codebase-tour/evals/files/4/data/rates.csv +4 -0
  77. package/packs/dev-team/skills/codebase-tour/evals/files/4/pyproject.toml +19 -0
  78. package/packs/dev-team/skills/codebase-tour/evals/files/4/scripts/gen_rates.py +29 -0
  79. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/__init__.py +0 -0
  80. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/api/__init__.py +0 -0
  81. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/api/preview.py +14 -0
  82. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/api/routes.py +36 -0
  83. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/config.py +15 -0
  84. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/discounts.py +8 -0
  85. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/generated/__init__.py +0 -0
  86. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/generated/rates_table.py +8 -0
  87. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/main.py +8 -0
  88. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/shipping.py +18 -0
  89. package/packs/dev-team/skills/codebase-tour/evals/files/4/src/shipcalc/tax.py +7 -0
  90. package/packs/dev-team/skills/codebase-tour/evals/files/4/tests/conftest.py +3 -0
  91. package/packs/dev-team/skills/codebase-tour/evals/files/4/tests/unit/test_discounts.py +11 -0
  92. package/packs/dev-team/skills/codebase-tour/evals/files/4/tests/unit/test_tax.py +13 -0
  93. package/packs/dev-team/skills/codebase-tour/evals/files/5/.env.example +3 -0
  94. package/packs/dev-team/skills/codebase-tour/evals/files/5/.github/workflows/ci.yml +13 -0
  95. package/packs/dev-team/skills/codebase-tour/evals/files/5/README.md +18 -0
  96. package/packs/dev-team/skills/codebase-tour/evals/files/5/package.json +13 -0
  97. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/openapi.json +30 -0
  98. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/package.json +15 -0
  99. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/db.js +19 -0
  100. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/flags.js +8 -0
  101. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/generated/schema.js +32 -0
  102. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/middleware/validate.js +20 -0
  103. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/routes/bookings.js +15 -0
  104. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/server.js +15 -0
  105. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/services/bookings.js +23 -0
  106. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/src/services/pricing.js +9 -0
  107. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/api/test/pricing.test.js +15 -0
  108. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/package.json +9 -0
  109. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/src/bookingForm.js +11 -0
  110. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/src/format.js +7 -0
  111. package/packs/dev-team/skills/codebase-tour/evals/files/5/packages/web/test/format.test.js +12 -0
  112. package/packs/dev-team/skills/codebase-tour/evals/files/5/scripts/gen-schema.mjs +27 -0
  113. package/packs/dev-team/skills/codebase-tour/examples/refund-window.md +158 -0
  114. package/packs/dev-team/skills/codebase-tour/manifest.json +47 -0
  115. package/packs/dev-team/skills/codebase-tour/scripts/repo_facts.py +403 -0
  116. package/packs/dev-team/skills/codebase-tour/templates/codebase-tour.md +85 -0
  117. package/packs/dev-team/skills/dependency-upgrade-review/SKILL.md +101 -0
  118. package/packs/dev-team/skills/dependency-upgrade-review/evals/eval_queries.json +11 -0
  119. package/packs/dev-team/skills/dependency-upgrade-review/evals/evals.json +77 -0
  120. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/.github/workflows/ci.yml +20 -0
  121. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/pr.diff +87 -0
  122. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/quillmark-CHANGELOG.md +24 -0
  123. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/src/render/comment.js +6 -0
  124. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/src/render/note.js +8 -0
  125. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/1/test/note.test.js +12 -0
  126. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/.github/workflows/ci.yml +23 -0
  127. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/.github/workflows/release.yml +23 -0
  128. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/pr.diff +32 -0
  129. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/2/release-notes.md +20 -0
  130. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/.github/workflows/ci.yml +18 -0
  131. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/Dockerfile +8 -0
  132. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/PR.md +36 -0
  133. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/pr.diff +47 -0
  134. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/src/ingest/client.py +24 -0
  135. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/src/ingest/reader.py +32 -0
  136. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/tests/test_reader.py +15 -0
  137. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/4/upstream/quillstream-CHANGELOG.md +37 -0
  138. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.github/workflows/ci.yml +22 -0
  139. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.github/workflows/release.yml +25 -0
  140. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/.nvmrc +1 -0
  141. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/PR-412.md +16 -0
  142. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/PR-413.md +15 -0
  143. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/package.json +21 -0
  144. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/pr-412.diff +26 -0
  145. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/pr-413.diff +84 -0
  146. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/scripts/release.mjs +18 -0
  147. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/upstream/release-notary-CHANGELOG.md +16 -0
  148. package/packs/dev-team/skills/dependency-upgrade-review/evals/files/5/upstream/setup-toolchain-RELEASES.md +22 -0
  149. package/packs/dev-team/skills/dependency-upgrade-review/examples/inputs/ledgerline.diff +38 -0
  150. package/packs/dev-team/skills/dependency-upgrade-review/examples/ledgerline-tidyparse.md +91 -0
  151. package/packs/dev-team/skills/dependency-upgrade-review/manifest.json +50 -0
  152. package/packs/dev-team/skills/dependency-upgrade-review/reference.md +99 -0
  153. package/packs/dev-team/skills/dependency-upgrade-review/scripts/upgrade_diff.py +718 -0
  154. package/packs/product-manager/loops/discover/LOOP.md +5 -4
  155. package/packs/product-manager/loops/discover/loop.json +2 -2
  156. package/packs/product-manager/skills/feedback-synthesis/SKILL.md +182 -0
  157. package/packs/product-manager/skills/feedback-synthesis/evals/eval_queries.json +46 -0
  158. package/packs/product-manager/skills/feedback-synthesis/evals/evals.json +76 -0
  159. package/packs/product-manager/skills/feedback-synthesis/evals/files/1/interview-notes.md +47 -0
  160. package/packs/product-manager/skills/feedback-synthesis/evals/files/1/nps-verbatims.csv +13 -0
  161. package/packs/product-manager/skills/feedback-synthesis/evals/files/1/support-tickets.csv +36 -0
  162. package/packs/product-manager/skills/feedback-synthesis/evals/files/3/churn-exit-survey.csv +11 -0
  163. package/packs/product-manager/skills/feedback-synthesis/evals/files/3/sales-call-notes.md +55 -0
  164. package/packs/product-manager/skills/feedback-synthesis/evals/files/4/csat_comments_q3.csv +17 -0
  165. package/packs/product-manager/skills/feedback-synthesis/evals/files/4/support_tickets_q3.csv +49 -0
  166. package/packs/product-manager/skills/feedback-synthesis/evals/files/5/app_reviews_last_60_days.csv +32 -0
  167. package/packs/product-manager/skills/feedback-synthesis/evals/files/5/interview_notes_round1.md +48 -0
  168. package/packs/product-manager/skills/feedback-synthesis/examples/booking-app-feedback.md +139 -0
  169. package/packs/product-manager/skills/feedback-synthesis/examples/inputs/booking-app-coded.csv +17 -0
  170. package/packs/product-manager/skills/feedback-synthesis/manifest.json +53 -0
  171. package/packs/product-manager/skills/feedback-synthesis/reference.md +89 -0
  172. package/packs/product-manager/skills/feedback-synthesis/scripts/theme_counts.py +355 -0
  173. package/packs/product-manager/skills/feedback-synthesis/templates/coding-sheet.csv +6 -0
  174. package/packs/product-manager/skills/feedback-synthesis/templates/synthesis.md +42 -0
@@ -13,7 +13,7 @@ script: no check can tell you that you solved the wrong problem well.
13
13
 
14
14
  | # | Stage | Type | Skills | Gate |
15
15
  |---|---|---|---|---|
16
- | 1 | `gather` | generate | [`requirements-interview`](../../skills/requirements-interview/SKILL.md), [`user-journey-map`](../../skills/user-journey-map/SKILL.md), [`strategy-analysis`](../../skills/strategy-analysis/SKILL.md) | — |
16
+ | 1 | `gather` | generate | [`requirements-interview`](../../skills/requirements-interview/SKILL.md), [`user-journey-map`](../../skills/user-journey-map/SKILL.md), [`strategy-analysis`](../../skills/strategy-analysis/SKILL.md), [`feedback-synthesis`](../../skills/feedback-synthesis/SKILL.md) | — |
17
17
  | 2 | `structure` | generate | [`brief-intake`](../../../core/skills/brief-intake/SKILL.md) | — |
18
18
  | 3 | `specify` | generate | [`prd-draft`](../../skills/prd-draft/SKILL.md) | — |
19
19
  | 4 | `ratify` | gate | [`doc-critique`](../../../core/skills/doc-critique/SKILL.md) | **G0** human |
@@ -22,8 +22,9 @@ script: no check can tell you that you solved the wrong problem well.
22
22
 
23
23
  1. **Gather from whichever direction the signal arrives.** A stakeholder conversation →
24
24
  `requirements-interview`. An existing experience with known friction → `user-journey-map`.
25
- An open strategic question → `strategy-analysis`. Run one; running all three on the same
26
- input produces three views of the same thing and no more information.
25
+ An open strategic question → `strategy-analysis`. A pile of tickets, survey verbatims or
26
+ interview notes already collected → `feedback-synthesis`. Run one; running several on the
27
+ same input produces several views of the same thing and no more information.
27
28
  2. **Structure once.** `brief-intake` tags every field `[explicit]` / `[implied]` /
28
29
  `[inferred]` / `[missing]` with verbatim quotes. The tags are the deliverable — an
29
30
  untagged brief hides which parts are somebody's assumption.
@@ -75,7 +76,7 @@ which end in `BLOCKED`.
75
76
 
76
77
  ## Anti-patterns to avoid
77
78
 
78
- - ❌ **Running all three `gather` skills to be thorough.** Three lenses on one input is not three inputs; pick the one that matches where the signal came from.
79
+ - ❌ **Running every `gather` skill to be thorough.** Three lenses on one input is not three inputs; pick the one that matches where the signal came from.
79
80
  - ❌ **Letting `prd-draft` fill a `[missing]` field.** That converts an open question into a fact nobody agreed to.
80
81
  - ❌ **Treating `doc-critique`'s `SHIP IT` as ratification.** The critique judges the document; G0 judges the problem.
81
82
  - ❌ **Returning `REVISE` to `specify`.** Re-writing the PRD from the same thin brief reproduces the same gaps in better prose.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$comment": "RFC-0028. The first loop of the lifecycle: nothing is designed or built until a human has ratified what problem is being solved. Cheapest loop to redo and the most expensive to skip.",
3
3
  "name": "discover",
4
- "version": "0.2.0",
4
+ "version": "0.3.0",
5
5
  "description": "Take raw signal — interviews, journeys, a strategy question — to a requirement a human has ratified, so design starts from an agreed problem rather than an assumed one. Use when the user is deciding what to build, scoping a feature, or turning stakeholder conversations into requirements.",
6
6
  "entrypoint": "LOOP.md",
7
7
  "kind": "loop",
@@ -11,7 +11,7 @@
11
11
  "id": "gather",
12
12
  "type": "generate",
13
13
  "intent": "Collect the raw signal from whichever direction it arrives: a stakeholder conversation, an existing user journey, or a strategic question.",
14
- "skills": ["requirements-interview", "user-journey-map", "strategy-analysis"]
14
+ "skills": ["requirements-interview", "user-journey-map", "strategy-analysis", "feedback-synthesis"]
15
15
  },
16
16
  {
17
17
  "id": "structure",
@@ -0,0 +1,182 @@
1
+ ---
2
+ name: feedback-synthesis
3
+ description: Turn raw customer feedback — interview notes, support tickets, NPS or CSAT verbatims, app-store reviews, sales-call notes — into ranked themes a product decision can rest on, each a problem statement rather than a feature request, counted by distinct people or accounts not mentions, with segments, severity kept separate from frequency, verbatim quotes with source IDs, what people value, where sources disagree, what the sample cannot tell, and the questions for the next interviews. A stdlib script computes the counts. Use when the user says "what are customers telling us", "synthesise this feedback", "find the themes in these tickets / reviews / NPS comments", "affinity map these interview notes", or "what should we fix first based on feedback".
4
+ ---
5
+
6
+ # feedback-synthesis
7
+
8
+ Feedback arrives as a pile of tickets, survey comments, reviews and notes, and the loudest
9
+ thing in the pile is rarely the most important. This skill turns the pile into a short list of
10
+ problems worth acting on, with numbers that are counted rather than guessed and quotes that can
11
+ be traced to the item they came from. It feeds discovery: the themes go to `brief-intake` to
12
+ become a brief, and the open questions go into the next round of interviews.
13
+
14
+ ## How to respond
15
+
16
+ **Five rules come before the steps and outrank them:**
17
+
18
+ - **Answer what was asked, first.** Open with what to act on and why, in plain words. If the
19
+ data contradicts the user's premise ("the CSV export is our biggest problem"), say so in the
20
+ opening lines, with the count that shows it.
21
+ - **Count people, not mentions.** One customer filing six tickets is one customer. Every number
22
+ in the reply is a count of distinct people or accounts, computed, and says which.
23
+ - **Use only what the input contains.** No quote, count, segment, customer name, revenue figure
24
+ or reason that isn't in the feedback. What is missing goes in **What this can't tell us** and
25
+ the interview questions, never into a theme.
26
+ - **Deliver from what there is.** Feedback without IDs, segments or a stated decision still gets
27
+ a synthesis, with the limit named once. Ask first only when there is no feedback at all.
28
+ - **Write for someone who has never heard of this skill.** No skill names, file paths, script
29
+ output, theme codes or "S2" shorthand without its meaning. A next step is one plain sentence
30
+ at the end.
31
+
32
+ 1. **Read every item before coding any.** List the sources and, for each, what an item is
33
+ (a ticket, a response, an interview, a review), what identifies the person (account ID,
34
+ respondent ID, reviewer name, nothing), and what segment fields exist (plan, role, region,
35
+ tenure, company size, score). Decide the counting unit: **accounts** for B2B feedback where
36
+ account IDs exist (two staff from one customer are one account), **people** otherwise.
37
+ Match people across sources only on a shared ID: an interviewee whose account ID appears in
38
+ the tickets is the same account. Anonymous rows are never merged by guesswork. A rep's or
39
+ interviewer's guess about what someone needs ("they'll probably need SSO") is not that
40
+ person's feedback: leave it uncoded and say so if it matters to the answer.
41
+
42
+ 2. **Write the codebook as problem statements.** 4–12 themes, each one sentence saying who hits
43
+ what and what it costs them, plus a short code. A theme must be something the next interview
44
+ could prove wrong.
45
+ - ✅ *"Clients in the EU can't complete card payments; the error says authentication failed
46
+ and payment arrives weeks later by transfer."*
47
+ - ❌ *"Payment issues"* / *"Users want a better experience"* / *"Improve usability"* — banned:
48
+ nothing could disprove them.
49
+ - **A feature request is evidence of a need, not the need.** Rewrite it into the job behind
50
+ it and keep the request as a quote. ✅ *"Changing a rate means editing every recurring
51
+ invoice by hand — 30 to 58 invoices per price change"*, with "Please add bulk edit"
52
+ quoted as evidence. ❌ Theme title *"Bulk edit"*. Never let the loudest proposed solution
53
+ become the title.
54
+ - **A request with no stated reason is not a theme.** Three "add dark mode" comments with no
55
+ context go under **Requests with no stated need**, and the reason becomes an interview
56
+ question. Don't invent the need.
57
+ - Code what people value as themes too, prefixed `+` (`+reminders`). These become **What
58
+ not to break**.
59
+
60
+ 3. **Rate severity per item, separately from frequency.** From what happened to the person, not
61
+ how angry they sound; capitals and exclamation marks don't raise it.
62
+
63
+ | Level | Meaning | Example |
64
+ |---|---|---|
65
+ | **S1 — blocker** | A core job can't be done, or money, data, security or compliance is at stake | Clients can't pay; data lost; can't log in |
66
+ | **S2 — major** | Done only through a costly recurring workaround, or the person says they'll leave over it | Reformatting an export by hand every month |
67
+ | **S3 — minor** | Slower or annoying; the workaround is quick | An extra click to find a report |
68
+ | **S4 — cosmetic** | Looks, wording, preference, no stated cost | Blurry logo on a PDF |
69
+
70
+ More rules and edge cases in [`reference.md`](reference.md).
71
+
72
+ 4. **Fill the coding sheet and run the counts.** One row per item in the shape of
73
+ [`templates/coding-sheet.csv`](templates/coding-sheet.csv): `item_id`, `person_id` (blank
74
+ when the source has none), `source`, the segment columns, `themes` separated by `;` (a code
75
+ may carry its own severity as `code:S1`), and `severity`. When a raw segment is too fine to
76
+ show a pattern, add a derived column beside it (country → `market` EU / UK / US; employee
77
+ count → `size` band). Then run:
78
+
79
+ ```bash
80
+ # Claude Code
81
+ python3 "${CLAUDE_SKILL_DIR}/scripts/theme_counts.py" coded.csv --person-label account -o counts.md
82
+ # Other IDEs (from the skill folder)
83
+ python3 scripts/theme_counts.py coded.csv --person-label account -o counts.md
84
+ ```
85
+
86
+ It prints per theme the distinct people with an ID, the items with no ID (beside the count,
87
+ never added to it), mentions, repeat filers, sources, the segment breakdown with a flag when
88
+ a theme sits in one segment only, the ranking severity, and the items with no theme. If no script can run, count by hand from the sheet and show the
89
+ tally per theme. Above about 300 items, code the most recent full period or a stated sample,
90
+ and say the counts cover that sample.
91
+
92
+ 5. **Read the counts, then fix the codebook.** Re-read the unthemed items: three or more about
93
+ the same thing is a missing theme. Where one person drives most of a theme's mentions, the
94
+ theme is ranked on its people count. Where a theme lives in one segment, that is a finding
95
+ (✅ *"Only EU accounts: DE, FR, NL"*), not a footnote. Rerun after any recode.
96
+
97
+ 6. **Rank: severity first, then distinct people.** A theme's severity is the worst level at
98
+ least two people reached; a theme raised by one person takes that person's level and is
99
+ labelled *one report — confirm before acting*. The script's ranking severity column applies
100
+ this rule. A rare issue that stops payment outranks a common cosmetic gripe: say so in those
101
+ words when the ranking differs from the volume order.
102
+
103
+ 7. **Write the reply in the shape of [`templates/synthesis.md`](templates/synthesis.md)**,
104
+ sized to the ask (a few bullets when asked for bullets):
105
+ - **Headline** — what to act on first and why, correcting the premise if needed.
106
+ - **Themes, ranked** — problem statement; distinct people or accounts, plus mentions when
107
+ they differ; segments; severity in words; sources.
108
+ - **Evidence per theme** — 1–3 verbatim quotes, each followed by its source ID:
109
+ *"Took most of a Friday." (I-2)*. The quote is an exact substring of the item; cut with
110
+ "…", never reword, never stitch two items into one quote. An interviewer's or rep's summary
111
+ is reported without quotation marks and attributed to them. The requests behind the theme
112
+ are quoted here too.
113
+ - **What not to break** — what people value, with counts and quotes.
114
+ - **Where the sources disagree** — ✅ *"Interviewees call reminders the reason they stay;
115
+ four accounts report reminders going to a former contact."* Both sides, counted.
116
+ - **What this can't tell us** — each source's sampling bias in one line, and the
117
+ conclusions it rules out. No percentage of the user base from a self-selected sample:
118
+ ✅ *"7 of the 29 accounts that raised a ticket"* — ❌ *"24% of customers"*. Anonymous rows
119
+ that may overlap with identified ones are reported beside the count, never added to it:
120
+ ✅ *"3 accounts, plus one anonymous NPS comment that may be one of them"*.
121
+ - **Questions for the next interviews** — 3–6, each tied to a theme, open, non-leading, and
122
+ at least one that could disconfirm the top theme. ✅ *"Walk me through the last time a
123
+ client couldn't pay you. What happened next?"* — ❌ *"Would a fix for card payments help?"*
124
+
125
+ 8. **Keep the machinery out of the reply.** Theme codes, the coding sheet and the script's report
126
+ are working files; save them only when the user asked. The reply carries the answer.
127
+
128
+ **Non-interactive runs** (subagent, CI, headless): with no feedback items at all, emit
129
+ `BLOCKED: need the feedback itself (tickets, survey verbatims, interview notes or reviews)`,
130
+ because a synthesis of what customers "usually say" is fabrication. A missing decision or
131
+ audience becomes an `[assumption]` stated at the top (default: *"feeds next quarter's
132
+ prioritisation"*). Missing person IDs or segment fields are not blockers: proceed, and state
133
+ that the counts are mentions or unsegmented.
134
+
135
+ ## Useful references in this skill
136
+
137
+ - [`reference.md`](reference.md) — the severity scale with edge cases, sampling bias by source, rewriting requests into problems, codebook rules, counting across sources
138
+ - [`templates/coding-sheet.csv`](templates/coding-sheet.csv) — the CSV the script reads
139
+ - [`templates/synthesis.md`](templates/synthesis.md) — the reply skeleton
140
+ - [`scripts/theme_counts.py`](scripts/theme_counts.py) — distinct-person counts per theme, segments, severity, unthemed items (stdlib, Python 3.9+)
141
+ - [`examples/booking-app-feedback.md`](examples/booking-app-feedback.md) — worked example: 16 items from three sources, the coding sheet, the real script output, and the finished reply
142
+
143
+ ## Quality bar
144
+
145
+ - **Every count is distinct people or accounts,** computed from the coded items, and says which unit; mentions appear only beside it.
146
+ - **The ranking puts severity before frequency** and says so where the two disagree.
147
+ - **Every theme title is a falsifiable problem statement** naming who and what it costs; no theme is titled with a proposed feature.
148
+ - **Every quote is verbatim with a source ID;** paraphrase never sits inside quotation marks.
149
+ - **Segments are reported per theme,** and a one-segment theme is called out.
150
+ - **Each source's sampling bias is named,** and no percentage of the whole user base is drawn from a self-selected sample.
151
+ - **What people value and where the sources disagree** are both present.
152
+ - **Interview questions are tied to themes,** open, and include one that could disconfirm the top theme.
153
+ - **Nothing is invented:** no quote, count, segment, reason or customer that isn't in the input.
154
+
155
+ ## When to use this skill
156
+
157
+ - ✅ A pile of support tickets, NPS or CSAT comments, reviews or interview notes, and the question "what are customers telling us?"
158
+ - ✅ Checking a stakeholder's claim ("everyone asks for SSO") against the feedback before it goes into a brief
159
+ - ✅ Affinity-mapping interview notes after a discovery round
160
+ - ✅ Choosing what to fix first from a quarter's feedback
161
+
162
+ ## When NOT to use this skill
163
+
164
+ - ❌ Planning or running the interviews themselves, or writing the question guide — `requirements-interview`
165
+ - ❌ Mapping the stages of a journey a customer goes through — `user-journey-map`
166
+ - ❌ Answering a research question from papers, reports or articles — `source-synthesis`
167
+ - ❌ Ranking rival explanations for a metric change ("why did churn rise in March?") — `hypothesis-comparison`
168
+ - ❌ Turning agreed findings into a brief for a PRD or design doc — `brief-intake`
169
+ - ❌ Cleaning up a tracker backlog: duplicates, stale tickets, ordering — `backlog-triage`
170
+
171
+ ## Anti-patterns to avoid
172
+
173
+ - ❌ **Counting tickets as customers.** "CSV export: 7 tickets, our biggest issue" when six came from one account.
174
+ - ❌ **Ranking by volume alone.** Seven blurry-logo complaints above three accounts whose clients can't pay.
175
+ - ❌ **The feature as the theme.** "Users want bulk edit" — the theme is the hours lost re-pricing recurring invoices.
176
+ - ❌ **Inventing the need behind a bare request.** "Users want dark mode for eye strain" when nobody said why.
177
+ - ❌ **Quotation marks around a summary.** A rep's note or the agent's paraphrase presented as the customer's words.
178
+ - ❌ **Percentages of the base from a self-selected sample.** "40% of users want an Apple Watch app" from fifteen reviews.
179
+ - ❌ **Merging anonymous rows into identified counts** by guessing who wrote them.
180
+ - ❌ **Only problems.** Leaving out what people value invites the fix that breaks it.
181
+ - ❌ **Vague themes.** "Pricing concerns", "usability", "better experience": name who, what happened, and what it cost.
182
+ - ❌ **Leading interview questions.** "Would you use bulk edit?" confirms nothing.
@@ -0,0 +1,46 @@
1
+ [
2
+ {
3
+ "query": "Here are 200 support tickets and last quarter's NPS comments. What are customers actually telling us?",
4
+ "should_trigger": true
5
+ },
6
+ {
7
+ "query": "Affinity map these eight interview notes into themes with quotes",
8
+ "should_trigger": true
9
+ },
10
+ {
11
+ "query": "Find the themes in our app store reviews and tell me what to fix first",
12
+ "should_trigger": true
13
+ },
14
+ {
15
+ "query": "Sales says every prospect wants SSO. Check that against the call notes and churn survey before it goes in the brief",
16
+ "should_trigger": true
17
+ },
18
+ {
19
+ "query": "Synthesise this CSAT export into the top customer pain points by segment",
20
+ "should_trigger": true
21
+ },
22
+ {
23
+ "query": "Write me an interview guide for talking to churned customers next week",
24
+ "should_trigger": false
25
+ },
26
+ {
27
+ "query": "Map our customer's onboarding journey from sign-up to first invoice, with pains at each stage",
28
+ "should_trigger": false
29
+ },
30
+ {
31
+ "query": "Summarise what these five industry reports say about four-day weeks",
32
+ "should_trigger": false
33
+ },
34
+ {
35
+ "query": "Churn jumped 3 points in August. Which of these explanations fits the evidence best?",
36
+ "should_trigger": false
37
+ },
38
+ {
39
+ "query": "Clean up our Jira backlog: duplicates, stale tickets and what to pull next",
40
+ "should_trigger": false
41
+ },
42
+ {
43
+ "query": "Turn this Slack thread about the export bug into a brief for the PRD",
44
+ "should_trigger": false
45
+ }
46
+ ]
@@ -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.