@keighleykodric/weeve 0.1.0 → 0.1.2

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 (98) hide show
  1. package/README.md +75 -19
  2. package/bin/weeve.js +467 -2
  3. package/examples/core/CODEOWNERS.template +9 -0
  4. package/examples/core/README.md +63 -0
  5. package/examples/core/demo/README.md +38 -0
  6. package/examples/core/demo/weeve/ally/ally-intake.md +16 -0
  7. package/examples/core/demo/weeve/compass/compass-intake.md +15 -0
  8. package/examples/core/demo/weeve/layers-plus/figma-notes.md +31 -0
  9. package/examples/core/demo/weeve/layers-plus/layers-plus-intake.md +13 -0
  10. package/examples/core/demo/weeve/rubric/component-inventory.md +42 -0
  11. package/examples/core/demo/weeve/rubric/rubric-intake.md +14 -0
  12. package/examples/core/demo/weeve/shared/competitive.md +28 -0
  13. package/examples/core/demo/weeve/shared/roadmap.md +26 -0
  14. package/examples/core/demo/weeve/shared/weeve-guardrails.md +28 -0
  15. package/examples/core/demo/weeve/shared/weeve-intake.md +18 -0
  16. package/examples/core/demo/weeve/shared/weeve-project.md +33 -0
  17. package/examples/core/demo/weeve.yaml +15 -0
  18. package/examples/core/weeve.yaml +14 -0
  19. package/examples/engineering/CODEOWNERS.template +9 -0
  20. package/examples/engineering/README.md +61 -0
  21. package/examples/engineering/demo/README.md +20 -0
  22. package/examples/engineering/demo/weeve/forge/architecture.md +39 -0
  23. package/examples/engineering/demo/weeve/forge/ci-metrics.md +47 -0
  24. package/examples/engineering/demo/weeve/forge/forge-intake.md +41 -0
  25. package/examples/engineering/demo/weeve/guard/guard-intake.md +17 -0
  26. package/examples/engineering/demo/weeve/helm/helm-intake.md +16 -0
  27. package/examples/engineering/demo/weeve/helm/incidents.md +40 -0
  28. package/examples/engineering/demo/weeve/helm/on-call-runbook.md +33 -0
  29. package/examples/engineering/demo/weeve/shared/roadmap.md +25 -0
  30. package/examples/engineering/demo/weeve/shared/team.md +33 -0
  31. package/examples/engineering/demo/weeve/shared/weeve-guardrails.md +27 -0
  32. package/examples/engineering/demo/weeve/shared/weeve-intake.md +18 -0
  33. package/examples/engineering/demo/weeve/shared/weeve-project.md +29 -0
  34. package/examples/engineering/demo/weeve/verify/coverage-report.md +49 -0
  35. package/examples/engineering/demo/weeve/verify/verify-intake.md +16 -0
  36. package/examples/engineering/demo/weeve.yaml +15 -0
  37. package/examples/engineering/weeve.yaml +14 -0
  38. package/examples/gtm/CODEOWNERS.template +8 -0
  39. package/examples/gtm/README.md +59 -0
  40. package/examples/gtm/demo/README.md +19 -0
  41. package/examples/gtm/demo/weeve/compass/compass-intake.md +15 -0
  42. package/examples/gtm/demo/weeve/maven/maven-intake.md +35 -0
  43. package/examples/gtm/demo/weeve/maven/website-notes.md +33 -0
  44. package/examples/gtm/demo/weeve/pitch/pitch-intake.md +54 -0
  45. package/examples/gtm/demo/weeve/pitch/sales-deck-notes.md +28 -0
  46. package/examples/gtm/demo/weeve/pitch/win-loss-notes.md +40 -0
  47. package/examples/gtm/demo/weeve/shared/competitive.md +30 -0
  48. package/examples/gtm/demo/weeve/shared/roadmap.md +19 -0
  49. package/examples/gtm/demo/weeve/shared/weeve-guardrails.md +24 -0
  50. package/examples/gtm/demo/weeve/shared/weeve-intake.md +18 -0
  51. package/examples/gtm/demo/weeve/shared/weeve-project.md +25 -0
  52. package/examples/gtm/demo/weeve.yaml +22 -0
  53. package/examples/gtm/weeve.yaml +14 -0
  54. package/examples/product/CODEOWNERS.template +10 -0
  55. package/examples/product/README.md +67 -0
  56. package/examples/product/demo/README.md +21 -0
  57. package/examples/product/demo/weeve/ally/ally-intake.md +16 -0
  58. package/examples/product/demo/weeve/compass/compass-intake.md +15 -0
  59. package/examples/product/demo/weeve/felt/felt-intake.md +37 -0
  60. package/examples/product/demo/weeve/felt/user-research.md +68 -0
  61. package/examples/product/demo/weeve/layers-plus/layers-plus-intake.md +14 -0
  62. package/examples/product/demo/weeve/rubric/component-inventory.md +42 -0
  63. package/examples/product/demo/weeve/rubric/rubric-intake.md +14 -0
  64. package/examples/product/demo/weeve/shared/competitive.md +28 -0
  65. package/examples/product/demo/weeve/shared/roadmap.md +32 -0
  66. package/examples/product/demo/weeve/shared/weeve-guardrails.md +27 -0
  67. package/examples/product/demo/weeve/shared/weeve-intake.md +18 -0
  68. package/examples/product/demo/weeve/shared/weeve-project.md +29 -0
  69. package/examples/product/demo/weeve.yaml +21 -0
  70. package/examples/product/weeve.yaml +14 -0
  71. package/examples/strategy/CODEOWNERS.template +8 -0
  72. package/examples/strategy/README.md +59 -0
  73. package/examples/strategy/demo/README.md +19 -0
  74. package/examples/strategy/demo/weeve/compass/compass-intake.md +34 -0
  75. package/examples/strategy/demo/weeve/compass/customer-segments.md +34 -0
  76. package/examples/strategy/demo/weeve/layers-plus/layers-plus-intake.md +15 -0
  77. package/examples/strategy/demo/weeve/maven/maven-intake.md +33 -0
  78. package/examples/strategy/demo/weeve/shared/competitive.md +40 -0
  79. package/examples/strategy/demo/weeve/shared/roadmap.md +29 -0
  80. package/examples/strategy/demo/weeve/shared/weeve-guardrails.md +22 -0
  81. package/examples/strategy/demo/weeve/shared/weeve-intake.md +17 -0
  82. package/examples/strategy/demo/weeve/shared/weeve-project.md +25 -0
  83. package/examples/strategy/demo/weeve.yaml +15 -0
  84. package/examples/strategy/weeve.yaml +14 -0
  85. package/package.json +14 -3
  86. package/spec/contributing-template.md +109 -0
  87. package/spec/readme-template.md +55 -0
  88. package/{docs/shared/SHIP-GATE.md → spec/ship-gate.md} +7 -7
  89. package/spec/signals-schema.md +685 -0
  90. package/spec/weeve-yaml.md +274 -0
  91. package/.github/SECURITY.md +0 -22
  92. package/GOVERNANCE.md +0 -173
  93. package/WORKFLOW.md +0 -354
  94. package/docs/shared/engineering-pack-contract.md +0 -94
  95. package/docs/shared/id-prefix-reference.md +0 -235
  96. package/docs/shared/idea-intake-pattern.md +0 -99
  97. package/docs/shared/lane-conventions.md +0 -207
  98. package/docs/shared/recommendations-schema.md +0 -363
@@ -0,0 +1,19 @@
1
+ # Roadmap — Relay
2
+
3
+ _Ask Sarah (PM) for the full roadmap. This is what's public knowledge on the team._
4
+
5
+ ## Shipping soon
6
+
7
+ - LinkedIn step analytics (open/reply rates per step, not just per sequence)
8
+ - AI personalization improvements — more CRM field support
9
+
10
+ ## Planned
11
+
12
+ - Free trial / PLG motion — actively debated, no decision made
13
+ - Salesforce native app (currently an API integration)
14
+ - Call step (integrated calling, not just call tasks)
15
+
16
+ ---
17
+
18
+ _For details, see Notion > Product > Relay Roadmap._
19
+ _The PLG debate has been ongoing for 6 weeks without a decision._
@@ -0,0 +1,24 @@
1
+ # weeve-guardrails.md — Relay
2
+
3
+ ## Hard limits
4
+ - Sales-led only for now — no self-serve or PLG until onboarding is figured out
5
+ - Salesforce and HubSpot integrations are required for enterprise deals — cannot remove or degrade
6
+ - No price reduction — $99/seat/month is the floor; discounting has already compressed margins
7
+
8
+ ## GTM constraints
9
+ - 4-person sales team (1 AE, 2 SDRs, 1 CS); no marketing hire until Q3
10
+ - Content/SEO is not a current motion — all pipeline is outbound + referral
11
+ - ICP is defined as "B2B SaaS, 10–50 person sales team, Series A–B" — but it's informal, not validated
12
+ - Average sales cycle is 18 days; anything over 30 days has a <10% close rate
13
+
14
+ ## Non-negotiables
15
+ - "Quality over volume" positioning must be preserved — team believes it's core to the brand
16
+ - No reseller or channel motion — direct only
17
+ - Customer success must respond within 4 hours on business days (SLA in contracts)
18
+
19
+ ## Pipeline data (last 90 days)
20
+ - 148 opportunities created, 31 closed-won, 21% win rate
21
+ - Average deal size: $780/month (avg 7.9 seats)
22
+ - Top loss reason (by count): "evaluating Apollo" (38%), "no budget right now" (29%), "went with Outreach" (18%)
23
+ - 2 reps have 38–41% win rates; other 2 reps have 12–14% win rates
24
+ - Churn: 18% annual; 60% of churned customers never completed setup of their first sequence
@@ -0,0 +1,18 @@
1
+ # weeve-intake.md — Relay observations
2
+
3
+ ---
4
+
5
+ ## Captured observations
6
+
7
+ - Win rate is 21%; two reps are at 38–41%, two are at 12–14% — nobody has analyzed why
8
+ - Top loss reason is "evaluating Apollo" (38% of losses) — but Apollo is positioned as higher-volume/lower-quality, which should be a differentiator, not a loss reason
9
+ - Website hero copy says "The smarter outbound platform" — doesn't mention "quality over volume" at all
10
+ - Sales deck uses "personalization at scale" — the phrase Apollo also uses heavily
11
+ - 60% of churned customers never set up a sequence in the first 14 days
12
+ - CS doesn't have a structured onboarding playbook — every CSM does it differently
13
+ - Three customers in the last month said "I didn't realize it could do LinkedIn steps too" — feature awareness gap
14
+ - No formal ICP document exists; the 4 salespeople describe the ICP differently when asked
15
+ - One rep (highest win rate) always leads with the AI personalization demo; others lead with the sequence builder
16
+ - The case studies on the website are 14 months old; they don't mention the AI personalization feature
17
+ - Pricing page has 3 tiers but rep feedback is "we only ever sell the middle tier; top tier is never bought"
18
+ - Referrals account for 31% of new pipeline but there's no formal referral program
@@ -0,0 +1,25 @@
1
+ # Relay — project brief
2
+
3
+ **What it is:** Relay is a B2B outbound sales automation tool. Sales reps build multi-step sequences (email, LinkedIn, call tasks), and Relay personalizes outreach using CRM data and prospect research. Positioned against Apollo and Outreach for teams that find those tools "too complex."
4
+
5
+ **Stage:** Series A ($8M). 210 paying customers, mostly 10–50 person sales teams. ARR ~$2.4M. Grown from $800K to $2.4M in 14 months.
6
+
7
+ **Core product:**
8
+ - Sequence builder (email + LinkedIn + tasks, drag-and-drop)
9
+ - AI personalization (pulls from LinkedIn, company news, CRM fields)
10
+ - Inbox management (reply detection, auto-pause on response)
11
+ - Analytics (open rates, reply rates, meeting booked rate by sequence)
12
+ - CRM integrations: Salesforce, HubSpot, Pipedrive
13
+
14
+ **The GTM problem:**
15
+ Revenue is growing but it's noisy. Win rate is 21% (team thinks it should be 35%+). The messaging has evolved organically and is inconsistent across the website, the sales deck, and what reps actually say on calls. Two reps are consistently outperforming their peers — the team hasn't codified why. Churn is 18% annually, concentrated in customers who don't set up a sequence in the first 14 days.
16
+
17
+ **Competitive situation:**
18
+ - Apollo: lower-priced, data-heavy, perceived as spammy — Relay's main differentiator is "quality over volume"
19
+ - Outreach/Salesloft: enterprise, complex, $50K+ contracts — Relay wins deals where budget is the objection
20
+ - Instantly/Lemlist: email-only, founder-led sales teams — adjacent but different motion
21
+
22
+ **Open questions:**
23
+ - The "quality over volume" positioning resonates with some buyers but not others — is it the right message?
24
+ - Why are two reps winning at 2× the rate of the rest? Is it repeatable?
25
+ - Should we add a PLG motion (free trial) or stay sales-led?
@@ -0,0 +1,22 @@
1
+ # weave.yaml — gtm preset demo project
2
+ schema_version: "0.4"
3
+
4
+ project:
5
+ name: Relay
6
+ tag: RLY
7
+ docs_root: ./weeve
8
+ depends_on:
9
+ - tag: BCN
10
+ name: Beacon
11
+ relationship: market-intelligence # Relay's positioning and ICP are informed by Beacon's
12
+ # B2B analytics. Beacon's strategy findings flow into
13
+ # Relay's go-to-market decisions.
14
+
15
+ roads:
16
+ - name: startup
17
+ path: roads/startup
18
+
19
+ # Lanes in this preset: compass, maven, pitch, pilot
20
+ # Demo project: Relay — outbound sales automation SaaS
21
+ # Depends on: Beacon (strategy preset) — try running both to see cross-project signals in Pilot
22
+ # Run /compass-intro to get started
@@ -0,0 +1,14 @@
1
+ # weeve.yaml — gtm preset
2
+ # Generated by: weeve init gtm
3
+ schema_version: "0.4"
4
+
5
+ project:
6
+ name: My Project # Replace with your project name
7
+ tag: MYP # Short ID — matches vault Projects/<tag>/ folder
8
+ # docs_root: ./weeve # Uncomment to use a local path instead of vault
9
+
10
+ roads:
11
+ - name: startup
12
+ path: roads/startup
13
+
14
+ # Lanes in this preset: compass, maven, pitch, pilot
@@ -0,0 +1,10 @@
1
+ # Weeve lane ownership
2
+ # Copy to .github/CODEOWNERS and replace team handles with your org's teams
3
+ # Requires GitHub branch protection with "Require review from Code Owners" enabled
4
+
5
+ weeve/compass/ @leadership
6
+ weeve/layers-plus/ @product
7
+ weeve/ally/ @design
8
+ weeve/rubric/ @design
9
+ weeve/felt/ @product
10
+ weeve/pilot/ @leadership
@@ -0,0 +1,67 @@
1
+ # product preset
2
+
3
+ ## Who this is for
4
+
5
+ The `product` preset is for product teams building consumer or B2B products where UX quality, user research alignment, and accessibility are first-class concerns. It extends the `core` preset with `felt` — a lane that captures qualitative user sentiment and experience signals — giving product managers and designers a fuller picture before committing to a release. Use this preset when you have a dedicated product and design function and want their workflows formalized and review-gated.
6
+
7
+ ## What you get
8
+
9
+ - **compass-signals.md** — prioritized strategic signals ranked by market urgency and opportunity size
10
+ - **compass-context.md** — competitive and market position snapshot to anchor product decisions
11
+ - **layers-plus-map.md** — audience segmentation with motivational layers and decision drivers
12
+ - **ally-principles.md** — accessibility requirements and inclusive design constraints for the product
13
+ - **rubric-scorecard.md** — UX heuristic scorecard with severity-ranked regressions
14
+ - **felt-pulse.md** — qualitative user sentiment summary: themes, friction points, and moments of delight
15
+ - **pilot-brief.md** — launch readiness brief combining strategic, UX, accessibility, and sentiment signals
16
+
17
+ ## Install
18
+
19
+ ```bash
20
+ npx weeve add product
21
+ ```
22
+
23
+ Equivalent individual lanes:
24
+
25
+ ```bash
26
+ npx weeve add compass layers-plus ally rubric felt pilot
27
+ ```
28
+
29
+ ## First run sequence
30
+
31
+ Run these skills in order. Steps marked **(parallel)** can be run simultaneously once their prerequisites are complete.
32
+
33
+ 1. **compass** — Scans market signals and competitive context to establish the strategic backdrop for product decisions.
34
+ 2. **layers-plus** — Maps audience segments into motivational layers; uses compass context to weight which segments are most relevant to the current release.
35
+ 3. **(parallel)* ally** — Audits the product for accessibility gaps and outputs binding design constraints.
36
+ 4. **(parallel)* rubric** — Scores UX flows against quality heuristics, calibrated against the layers-plus audience map.
37
+ 5. **(parallel)* felt** — Synthesizes qualitative user research, session notes, and feedback into a structured sentiment report.
38
+ 6. **pilot** — Combines all upstream signals into a launch readiness brief with a go/no-go recommendation.
39
+
40
+ ## What you'll have at the end
41
+
42
+ | File | Description |
43
+ |---|---|
44
+ | `weeve/compass/compass-signals.md` | Ranked strategic signals with evidence and urgency scores |
45
+ | `weeve/compass/compass-context.md` | Market and competitive position snapshot |
46
+ | `weeve/layers-plus/layers-plus-map.md` | Audience layer map with needs, motivations, and decision drivers |
47
+ | `weeve/ally/ally-principles.md` | Accessibility constraints and inclusive design requirements |
48
+ | `weeve/rubric/rubric-scorecard.md` | UX heuristic scorecard with severity-ranked issues |
49
+ | `weeve/felt/felt-pulse.md` | Qualitative user sentiment: themes, friction points, and delight moments |
50
+ | `weeve/pilot/pilot-brief.md` | Launch readiness brief with go/no-go recommendation |
51
+
52
+ ## CODEOWNERS
53
+
54
+ Copy to `.github/CODEOWNERS`:
55
+
56
+ ```
57
+ weeve/compass/ @leadership
58
+ weeve/layers-plus/ @product
59
+ weeve/ally/ @design
60
+ weeve/rubric/ @design
61
+ weeve/felt/ @product
62
+ weeve/pilot/ @leadership
63
+ ```
64
+
65
+ ## Time estimate
66
+
67
+ First full run: **60–90 minutes**, with the bulk of time in `felt` if you have extensive user research artifacts to synthesize. Teams with lightweight research inputs can complete felt in under 15 minutes. Subsequent runs: 20–35 minutes.
@@ -0,0 +1,21 @@
1
+ # Canvas — product preset demo
2
+
3
+ A no-code form and workflow builder for SMBs. Use this demo to try the **product** preset (Compass, Layers+, Ally, Rubric, Felt, Pilot).
4
+
5
+ ## Run it
6
+
7
+ ```bash
8
+ weeve add product
9
+ /compass-intro # strategic positioning
10
+ /layers-plus-intro # 7-layer product evaluation
11
+ /felt-intro # UX research — personas, journeys
12
+ /ally-intro # accessibility audit
13
+ /rubric-intro # design system health
14
+ /pilot-priorities # synthesize all lanes
15
+ ```
16
+
17
+ Outputs land in `./weeve/<lane>/`.
18
+
19
+ ## The project
20
+
21
+ Canvas has real product tension: an NPS of 42 with recurring qualitative complaints about the same feature, no user research in 18 months, a known iOS bug that's 4 months old, and enterprise interest the team isn't sure how to handle. Good material for every lane in the preset.
@@ -0,0 +1,16 @@
1
+ # ally-intake — Canvas
2
+ # Source: browser devtools check, team observation
3
+
4
+ _Feed to `/ally-intake`. Not a systematic audit — just what's been noticed._
5
+
6
+ ---
7
+
8
+ - Placeholder text in the default theme fails WCAG AA contrast. Checked with browser devtools.
9
+ - Embedded iframe forms: never tested with a screen reader or keyboard-only navigation.
10
+ - Drag-and-drop builder: keyboard accessibility unknown. Drag-and-drop is typically inaccessible without explicit implementation.
11
+ - The iOS Safari drag-and-drop bug (4 months open) likely also affects iOS AT users.
12
+ - No accessibility statement on the website or in the app.
13
+
14
+ ---
15
+
16
+ _No formal audit. WCAG compliance status unknown. The embedded form renderer ships to end-users' websites — any AT failures affect Canvas customers' users, not just Canvas users._
@@ -0,0 +1,15 @@
1
+ # compass-intake — Canvas
2
+ # Source: sales notes, inbound inquiry log, retention data
3
+
4
+ _Feed to `/compass-intake`._
5
+
6
+ ---
7
+
8
+ - ICP today: SMB teams (5–50 people), non-technical users, form-heavy workflows.
9
+ - Inbound is shifting: last 2 months, 8 demo requests from companies with 50–200 employees asking about SSO, audit logs, and API access. These aren't the current ICP.
10
+ - One enterprise prospect (180 employees) walked away citing "no SAML." Estimated at $600/month.
11
+ - Growth has slowed: MoM growth down from 12% to 6% over the last quarter. 1,200 active teams.
12
+ - Retention pattern: high for teams using conditional logic. Low for teams using only basic forms — they often return to Google Forms.
13
+ - Founding positioning: "Typeform for people who can't afford Typeform." Still the implicit frame — never formally updated.
14
+ - Pricing: Free / $29 / $79. The $79 plan rarely comes up in customer conversations. Team doesn't know why.
15
+ - No written ICP document. Founders describe the customer differently in different conversations.
@@ -0,0 +1,37 @@
1
+ # felt-intake — Canvas
2
+ # Source: weeve/felt/user-research.md, NPS data, in-app analytics, CSAT survey
3
+
4
+ _Feed to `/felt-intake`._
5
+
6
+ ---
7
+
8
+ ## Quantitative signal
9
+
10
+ - NPS: 42 (March 2026, n=340)
11
+ - Top promoter theme: "easy to set up, works for simple stuff"
12
+ - Top detractor theme: "conditional logic is confusing" — in 5 of the last 6 qualitative NPS responses
13
+ - CSAT on conditional logic: 2.8/5 (n=47, from in-app survey after using the feature)
14
+ - 73% of users who try conditional logic abandon it in the first session
15
+ - Most-visited page: response inbox (68% of all sessions include it)
16
+ - Integrations page: only 12% of users have ever opened it
17
+
18
+ ## User interview themes (6 interviews, Feb–March 2026)
19
+
20
+ - Conditional logic UX: 4 of 6 participants couldn't complete a conditional form in a task session. "I'd just make two separate forms."
21
+ - Feature discovery: integrations and multi-page forms are invisible. Multiple users discovered them during the interview and reacted with surprise.
22
+ - Delete with no confirmation: 1 participant visibly stressed while deleting a test form. "Are you sure there's no undo?"
23
+ - Enterprise signal: 2 of 6 participants asked unprompted about SSO or audit logs. Neither is the target user type.
24
+ - Mobile: 2 participants asked if the builder works on mobile. It doesn't — not communicated.
25
+
26
+ ## Behavioral data (analytics)
27
+
28
+ - Avg forms per active team: 3.2
29
+ - Teams who use conditional logic: 27% (low given it's a core feature)
30
+ - Time to first form: median 11 minutes
31
+ - Teams who import data via integrations: 12% (despite 6 integrations available)
32
+
33
+ ## What we don't know
34
+
35
+ - Why teams churn — no churn interview process
36
+ - What the 50–200 person company inbound actually needs vs what we assume
37
+ - Whether conditional logic confusion is a UX problem or an onboarding problem (or both)
@@ -0,0 +1,68 @@
1
+ # User research notes — Canvas
2
+
3
+ _Running doc. Most recent first._
4
+
5
+ ---
6
+
7
+ ## March 2026 — 6 moderated interviews
8
+
9
+ **Recruiting:** existing free/pro users, mix of industries. 45-min sessions.
10
+ **Tasks given:**
11
+ 1. Build a form with 3 conditional branches
12
+ 2. Find the Slack integration
13
+ 3. Delete a form (then try to recover it — there's no recovery)
14
+
15
+ **Task completion:**
16
+
17
+ | Task | Completed | Avg time | Notes |
18
+ |---|---|---|---|
19
+ | Conditional logic form | 2 of 6 | n/a | 4 gave up. "I'll just make two forms." |
20
+ | Find Slack integration | 3 of 6 | 4.5 min | Not findable from main nav. |
21
+ | Delete form | 6 of 6 | — | 1 visibly stressed. 2 asked "are you sure?" before clicking. |
22
+
23
+ **Interview notes (selected):**
24
+
25
+ *P1 — Marketing coordinator, 25-person agency:*
26
+ "I gave up on the if/then stuff. I just make separate forms."
27
+ Primary use: basic lead capture. Never returned to conditional logic after first try.
28
+
29
+ *P2 — Operations manager, 80-person SaaS:*
30
+ "It does what I need but I feel like I'm missing features I don't know about."
31
+ Discovered Slack integration during the interview. Had been exporting to CSV for 6 months.
32
+ Quote: "Why isn't this in the main nav?"
33
+
34
+ *P3 — Freelance designer:*
35
+ "The embedded form doesn't look great in my client's site. Styling options are limited."
36
+ Workaround: CSS overrides in the client's CMS. Wants branded forms.
37
+
38
+ *P4 — HR manager, 120-person company:*
39
+ "I need to know who filled out what. The response inbox doesn't make that easy."
40
+ Use case: employee onboarding. Wants respondent tracking and SSO.
41
+ End of session: "Do you have a plan for enterprise?"
42
+
43
+ *P5 — Product manager, 40-person startup:*
44
+ "Conditional logic took me 3 tries. The 'then' panel is confusing."
45
+ Specific issue: if/then panels are visually disconnected — no line or arrow showing the relationship.
46
+ Also noted: "Delete form should confirm. I deleted the wrong one once."
47
+
48
+ *P6 — Small business owner, e-commerce:*
49
+ "I use it for customer feedback. It's fine. I just wish the emails looked better."
50
+ Very low engagement. 1 form. Would switch if Google Forms added Slack.
51
+
52
+ ---
53
+
54
+ ## 2023 — Pre-launch research (3 interviews)
55
+
56
+ Finding: users want "simple, not powerful." Key jobs: lead capture, events, feedback.
57
+ Main concern: "will it look good on my website?"
58
+
59
+ **Note:** These are 3 years old. Product has changed significantly. Personas from this research should not be used as current signal.
60
+
61
+ ---
62
+
63
+ ## Research backlog
64
+
65
+ - [ ] Churned user interviews — why do low-engagement users leave?
66
+ - [ ] Enterprise prospect interviews — 8 recent demo requests from 50–200 person companies
67
+ - [ ] JTBD mapping — current understanding is demographic, not job-based
68
+ - [ ] Accessibility testing with real AT users
@@ -0,0 +1,14 @@
1
+ # layers-plus-intake — Canvas
2
+ # Source: team observations, user interview sessions, analytics
3
+
4
+ _Feed to `/layers-plus-intake`._
5
+
6
+ ---
7
+
8
+ - Conditional logic: "if" condition and "then" action are in separate panels with no visual connection. Users report not knowing which panel affects which.
9
+ - Drag-and-drop builder communicates nothing about what's droppable — no hover states, no visual affordance. Users discover it by accident.
10
+ - Response inbox: most-used feature (68% of sessions) but has had the fewest design iterations since MVP.
11
+ - Empty states: none exist for new workspaces, empty form lists, or empty response inboxes.
12
+ - Mobile: forms are responsive, builder is desktop-only with no messaging to users who try it on mobile.
13
+ - Object model ambiguity: is a "form" a container for questions or a workflow? The product treats it as both — conditional logic implies workflow — but the UI only communicates "container."
14
+ - Delete has no confirmation. Undo doesn't exist. Known gap; 2 data loss reports.
@@ -0,0 +1,42 @@
1
+ # Component inventory — Canvas
2
+
3
+ _Partial audit. Web app (builder + inbox) only._
4
+ _Last updated: February 2026_
5
+
6
+ ## Components confirmed in use
7
+
8
+ | Component | Location | Notes |
9
+ |---|---|---|
10
+ | Button (primary) | Throughout | Standalone file. |
11
+ | Button (secondary) | Throughout | Copy of primary, different background. |
12
+ | Button (danger) | Delete actions | Copy of primary, red. |
13
+ | Input (light) | Builder, settings | |
14
+ | Input (dark) | Embedded form renderer | Copy of light, inverted. |
15
+ | Textarea | Builder | |
16
+ | Select | Settings, logic builder | |
17
+ | Checkbox | Builder | |
18
+ | Radio | Builder | |
19
+ | Toggle | Settings | |
20
+ | Modal | Exists but... | Not used for delete confirmation — that's just a direct action. |
21
+ | Card (plain) | Response inbox | |
22
+ | Card (bordered) | Form list | Copy of plain with border. |
23
+ | Badge | Form status labels | |
24
+ | Spinner | Loading states | |
25
+ | Toast | Success messages | Error toast: unclear if it exists |
26
+
27
+ ## Not inventoried
28
+
29
+ - Conditional logic panels — built inline, not componentized
30
+ - Field type selector — inline
31
+ - Embedded form renderer — separate bundle, different styles, not reviewed
32
+
33
+ ## Missing (no component exists)
34
+
35
+ - Empty states — needed in 4+ places
36
+ - Confirmation dialog — needed for delete at minimum
37
+ - Error state for form submission
38
+ - Skeleton/loading for the response inbox
39
+
40
+ ---
41
+
42
+ _6 confirmed copy-paste variants. No shared base components. No tokens._
@@ -0,0 +1,14 @@
1
+ # rubric-intake — Canvas
2
+ # Source: weeve/rubric/component-inventory.md, code review
3
+
4
+ _Feed to `/rubric-intake`._
5
+
6
+ ---
7
+
8
+ - 22 components total. 6 are copy-pasted style variants with no shared base.
9
+ - The 6 copy-paste components: Button (primary/secondary/danger), Input (light/dark), Card (plain/bordered). Each maintains its own padding and color values separately.
10
+ - No design token system. Colors and spacing are hardcoded in component files.
11
+ - No Storybook. Components are documented in a Notion page that's 8 months out of date.
12
+ - No contribution process — engineers modify or add components without design review.
13
+ - The conditional logic UI (most complex feature surface) is not componentized — built inline in a single 800-line file.
14
+ - The embedded form renderer uses a separate stylesheet from the builder. They've diverged.
@@ -0,0 +1,28 @@
1
+ # Competitive notes — Canvas
2
+
3
+ _Not a formal analysis. Based on what the team knows._
4
+
5
+ ## Direct competitors
6
+
7
+ **Typeform** — premium UX, strong brand, expensive at scale. Mentioned in churn surveys.
8
+ **Jotform** — feature-heavy, lower cost, cluttered. Popular with non-technical users.
9
+
10
+ ## Baseline
11
+
12
+ **Google Forms** — the free comparison everyone makes. "It's like Google Forms but..."
13
+
14
+ ## What we hear from customers
15
+
16
+ - "We switched from Typeform because it got too expensive" — main acquisition story
17
+ - "Typeform looks better" — main design pressure
18
+ - Nobody mentions Jotform in conversations; they've probably never encountered it
19
+
20
+ ## What we don't know
21
+
22
+ - Why customers churn to Google Forms vs just canceling
23
+ - What enterprise alternatives look like at the 100+ employee tier
24
+ - Whether Notion Forms or similar newer tools are becoming relevant
25
+
26
+ ---
27
+
28
+ _No formal win/loss tracking. Enterprise competitors (Formstack, Conga) not researched._
@@ -0,0 +1,32 @@
1
+ # Roadmap — Canvas
2
+
3
+ _Q3 2026 planning. Not all items are sized or committed._
4
+
5
+ ## Shipping this quarter (committed)
6
+
7
+ - Multi-page forms — top feature request (3 explicit asks last month alone)
8
+ - Conditional logic redesign — addressing the consistent UX complaint
9
+ - iOS Safari drag-and-drop fix — 4 months overdue
10
+
11
+ ## Planned / in design
12
+
13
+ - Delete confirmation dialog — 2 users have reported accidental data loss
14
+ - Response inbox redesign — most-used feature, fewest design iterations
15
+ - SSO (SAML) — enterprise inbound is asking; no timeline set
16
+
17
+ ## Backlog
18
+
19
+ - API access (read responses programmatically)
20
+ - Custom subdomain for embedded forms
21
+ - Audit log — enterprise requirement
22
+ - Native Salesforce/HubSpot integration (currently webhook-based)
23
+
24
+ ## Not on the roadmap
25
+
26
+ - Mobile native app
27
+ - Payments / Stripe integration
28
+ - AI form generation
29
+
30
+ ---
31
+
32
+ _Roadmap reviewed monthly. Backlog items shift. SSO has been "planned" for two quarters._
@@ -0,0 +1,27 @@
1
+ # weeve-guardrails.md — Canvas
2
+
3
+ ## Hard limits
4
+ - React frontend only — no migration
5
+ - No native mobile apps — web responsive only
6
+ - Integrations must use public APIs only — no screen scraping
7
+ - GDPR compliance required (EU customers on paid plan)
8
+
9
+ ## Technical constraints
10
+ - Drag-and-drop built on dnd-kit — switching libraries would require full rewrite
11
+ - Embedded forms use iframe isolation — cannot share styles with host page
12
+ - Webhooks are fire-and-forget (no retry mechanism yet)
13
+ - Free plan is truly free — no credit card gate; limits enforced by quota
14
+
15
+ ## Resourcing
16
+ - 1 PM, 2 designers, 5 engineers; no QA or research roles
17
+ - No dedicated accessibility support
18
+
19
+ ## Non-negotiables
20
+ - Public-facing forms must load in under 2 seconds (p75)
21
+ - Response data must never be shared across tenant boundaries
22
+ - The free plan must remain genuinely useful (no dark patterns to force upgrades)
23
+
24
+ ## Known UX debt
25
+ - Conditional logic UI has been flagged as "confusing" in 5 of 6 user interviews
26
+ - iOS Safari drag-and-drop bug has been open 4 months
27
+ - "Delete form" is not guarded by a confirmation dialog — data loss has been reported twice
@@ -0,0 +1,18 @@
1
+ # weeve-intake.md — Canvas observations
2
+
3
+ ---
4
+
5
+ ## Captured observations
6
+
7
+ - NPS is 42; qualitative responses mention "conditional logic is confusing" in 5 of 6 recent replies
8
+ - No formal user research since 3 interviews at launch 18 months ago
9
+ - The drag-and-drop builder has a known regression on iOS Safari — unresolved for 4 months
10
+ - "Delete form" has no confirmation dialog; two users have reported accidental data loss
11
+ - 6 of 22 components are copy-pasted style variants with no shared base — will diverge further
12
+ - Embedded form iframe was never tested with a screen reader or keyboard-only navigation
13
+ - Conditional logic step adds cognitive load: users set "if" and "then" in separate panels with no visual connection
14
+ - Inbound from 50–200 person companies requesting SSO and audit logs — not on the roadmap
15
+ - One enterprise prospect walked away citing "no SAML" as a blocker
16
+ - The response inbox is the most-used feature but has the fewest design iterations
17
+ - Three users in the last month asked for "multi-page forms" — it's the top feature request
18
+ - Color contrast on placeholder text fails WCAG AA in the default theme
@@ -0,0 +1,29 @@
1
+ # Canvas — project brief
2
+
3
+ **What it is:** Canvas is a no-code form and workflow builder for SMBs. Teams build intake forms, approval flows, and lightweight internal tools without writing code. Think Typeform + Zapier but simpler, with better data ownership.
4
+
5
+ **Stage:** Post-launch, 18 months in. ~1,200 active teams on free/pro plans. Starting to get inbound from companies with 50–200 employees wanting more customization and security controls.
6
+
7
+ **Core product surface:**
8
+ - Drag-and-drop form builder
9
+ - Conditional logic engine (show/hide fields, branch workflows)
10
+ - Response inbox and basic data table view
11
+ - Integrations: Slack, Google Sheets, Airtable, webhooks
12
+ - Public-facing forms + embedded forms (iframe)
13
+
14
+ **Current state:**
15
+ - The UX was designed by the founding engineer 18 months ago; no formal UX research has been done
16
+ - 3 user interviews were run at launch; nothing systematic since
17
+ - The component library has 22 components; 6 are copy-pasted variants with slight style differences
18
+ - Embedded form accessibility is unknown — it was never tested with assistive technology
19
+ - The drag-and-drop interaction has a known bug on iOS Safari (unresolved for 4 months)
20
+ - User research: NPS is 42, but qualitative feedback consistently mentions "confusing conditional logic"
21
+
22
+ **Team:**
23
+ - 1 PM, 2 product designers, 5 engineers
24
+ - No dedicated research, accessibility, or QA role
25
+
26
+ **Open questions:**
27
+ - Is the SMB ICP right, or is the inbound from 50–200 person companies telling us something?
28
+ - The conditional logic UX has been called "confusing" in every user interview — redesign or patch?
29
+ - Should we invest in a design system or keep shipping features?
@@ -0,0 +1,21 @@
1
+ # weeve.yaml — product preset demo project
2
+ schema_version: "0.4"
3
+
4
+ project:
5
+ name: Canvas
6
+ tag: CVS
7
+ docs_root: ./weeve
8
+ depends_on:
9
+ - tag: VLT
10
+ name: Volta
11
+ relationship: platform # Canvas runs on Volta's internal developer platform.
12
+ # Volta's engineering health and API contracts affect Canvas's release readiness.
13
+
14
+ roads:
15
+ - name: startup
16
+ path: roads/startup
17
+
18
+ # Lanes in this preset: compass, layers-plus, ally, rubric, felt, pilot
19
+ # Demo project: Canvas — no-code form and workflow builder
20
+ # Depends on: Volta (engineering preset) — try running both to see cross-project signals in Pilot
21
+ # Run /compass-intro to get started
@@ -0,0 +1,14 @@
1
+ # weeve.yaml — product preset
2
+ # Generated by: weeve init product
3
+ schema_version: "0.4"
4
+
5
+ project:
6
+ name: My Project # Replace with your project name
7
+ tag: MYP # Short ID — matches vault Projects/<tag>/ folder
8
+ # docs_root: ./weeve # Uncomment to use a local path instead of vault
9
+
10
+ roads:
11
+ - name: startup
12
+ path: roads/startup
13
+
14
+ # Lanes in this preset: compass, layers-plus, ally, rubric, felt, pilot
@@ -0,0 +1,8 @@
1
+ # Weeve lane ownership
2
+ # Copy to .github/CODEOWNERS and replace team handles with your org's teams
3
+ # Requires GitHub branch protection with "Require review from Code Owners" enabled
4
+
5
+ weeve/compass/ @leadership
6
+ weeve/layers-plus/ @product
7
+ weeve/maven/ @marketing
8
+ weeve/pilot/ @leadership