Product Research

Product research

by alirezarezvani · MIT license · ★ 26,349 on GitHub · v2.9.0 · updated Aug 30

Product research cover

Use when planning and synthesizing product/user research as a method-and-repository discipline — selecting the right method for the goal (generative interviews vs usability test vs concept test vs validation), computing method-based…

---
name: product-research
description: Use when planning and synthesizing product/user research as a method-and-repository discipline — selecting the right method for the goal (generative interviews vs usability test vs concept test vs validation), computing method-based saturation/sample size with an explicit confidence level, or synthesizing coded observations into insights while flagging single-source anecdotes. Never fabricates user insight; an insight requires recurrence across independent participants. Distinct from product-team/ux-researcher-designer (persona/journey artifacts), product-discovery (discovery-sprint planning), and experiment-designer (live A/B) — this is the research-ops method + insight-repository layer.
version: 2.9.0
author: claude-code-skills
license: MIT
tags: [research-ops, product-research, ux-research, jtbd, usability, saturation, insight-synthesis, research-repository]
compatible_tools: [claude-code, codex-cli, cursor, antigravity, opencode, gemini-cli]
---

# product-research

Product / user research as an operational discipline: choosing the right method, sizing it honestly, and synthesizing findings into governed insights. The core rule: **method must match the goal**, and **an insight requires recurrence across independent participants** — a single quote is an anecdote.

## Purpose

Product researchers, ResearchOps teams, and PMs running discovery need method rigor and an insight repository they can trust. This skill structures three decisions:

Overview

Product / user research as an operational discipline: choosing the right method, sizing it honestly, and synthesizing findings into governed insights. The core rule: method must match the goal, and an insight requires recurrence across independent participants — a single quote is an anecdote.

Manual install (npx, ZIP)
Claude Codenpx skills add alirezarezvani/claude-skills --skill product-research -g -a claude-code
Claude Code (degit)npx degit alirezarezvani/claude-skills/research-ops/skills/product-research#main ~/.claude/skills/product-research
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md10.6 KB
Read SKILL.md here
alirezarezvani/main1 file shown
SKILL.md
Show the full text146 lines

product-research

Product / user research as an operational discipline: choosing the right method, sizing it honestly, and synthesizing findings into governed insights. The core rule: method must match the goal, and an insight requires recurrence across independent participants — a single quote is an anecdote.

Purpose

Product researchers, ResearchOps teams, and PMs running discovery need method rigor and an insight repository they can trust. This skill structures three decisions:

Three deterministic tools:

  1. study_designer.py — Maps (research goal × product stage) to an appropriate method and emits a method-matched plan skeleton (objective, participant criteria, guide structure, success criteria). Redirects live A/B to product-team/experiment-designer.
  2. saturation_planner.py — Method-based sample guidance with an explicit confidence label: Nielsen problem-discovery (5/segment), Guest et al. thematic saturation (~12), and evaluative coverage. Never claims a prevalence rate from a small-n usability test.
  3. insight_synthesizer.py — Clusters coded observations by tag, counts distinct participants, ranks by cross-participant recurrence, and flags any candidate below the source threshold as an ANECDOTE, never promoting it to an insight.

When to use

Invoke this skill when:

  • You are planning a study and need the method to match the goal (generative vs evaluative vs validation).
  • You need a defensible sample size / saturation rationale with a stated confidence.
  • You have raw coded observations and need to synthesize insights without over-claiming.
  • You are setting up or auditing a research repository and need the insight-vs-observation discipline.

Do NOT use this skill to: generate personas / journey maps (use product-team/ux-researcher-designer), plan a discovery sprint or validate an opportunity (use product-team/product-discovery), design or analyze a live product A/B experiment (use product-team/experiment-designer), or do market sizing / surveys (use the market-research sibling).

Workflow

  1. Frame the study — Fill assets/research_plan_template.md (research questions, method rationale, participant criteria, analysis plan, repository tagging scheme).
  2. Pick the method — Run study_designer.py --goal {discovery|evaluative|validation} --stage {concept|prototype|beta|live} --profile {b2b-saas|consumer-app|enterprise|marketplace|hardware|platform}. Honor the redirect if it routes to experiment-designer.
  3. Size it — Run saturation_planner.py --method {usability|thematic|evaluative-coverage} --segments N. Record the confidence label and limits.
  4. Synthesize — After fielding, code observations and run insight_synthesizer.py --input observations.json --min-sources 3. Treat ANECDOTE-flagged clusters as signals to probe, not findings to ship.
  5. File in the repository — Tag insights to the atomic schema at synthesis time, with their evidence and confidence.

Scripts

Script Purpose Profiles
scripts/study_designer.py (goal × stage) → method + plan skeleton b2b-saas, consumer-app, enterprise, marketplace, hardware, platform
scripts/saturation_planner.py Method-based sample guidance + confidence n/a (method-driven)
scripts/insight_synthesizer.py Cluster observations, flag anecdotes n/a (evidence-driven)

All three: stdlib-only, --help, --sample, --output {human,json}.

Onboarding & customization

Run the onboarding questionnaire once before you start — it captures your defaults so every tool in this skill is pre-configured. Customization is the point: the answers actually change tool behavior (e.g. the insight source-threshold).

python3 scripts/onboard.py            # interactive (also: --defaults, --set key=value, --reset)
python3 scripts/onboard.py --show     # see the questions + current effective config

Answers are saved to ~/.config/research-ops/product-research.json (global) or ./.research-ops/product-research.json (--scope project) and are read automatically by config_loader.py. They set the default product profile, the insight source-threshold (how many independent participants make a finding an insight, not an anecdote), the default saturation method, and the high-stakes flag. CLI flags always override saved config; RESEARCH_OPS_NO_CONFIG=1 ignores it.

The four questions: product profile · insight source-threshold · saturation method · high-stakes flag.

Optimize with autoresearch (opt-in)

This skill ships an isolated, opt-in bridge to engineering/autoresearch-agent. Only when you ask to "optimize the synthesis" / "run a loop" does an autoresearch experiment iteratively refine the coding/clustering of a fixed evidence set so more cross-participant patterns surface. scripts/ar_evaluator.py is the ground-truth evaluator; it prints validated_insights: <int> (higher is better). It optimizes the coding, never fabricates evidence.

/ar:setup --domain custom --name insight-synthesis \
  --target observations.json \
  --eval "python3 ar_evaluator.py --target observations.json" \
  --metric validated_insights --direction higher
/ar:loop custom/insight-synthesis

Isolated: no hard dependency — autoresearch runs only on demand, and the loop edits observations.json, never the evaluator.

References

  • references/research_methods_canon.md — Portigal Interviewing Users; Christensen/Ulwick JTBD; Rohrer's UX-research methods landscape (NN/g); Sauro & Lewis Quantifying the User Experience; Goodman/Kuniavsky.
  • references/sampling_and_saturation.md — Nielsen "test with 5 users"; Guest, Bunce & Johnson saturation; Faulkner on more-than-5; Sauro usability sample size; Braun & Clarke thematic analysis.
  • references/repository_and_synthesis.md — ResearchOps / atomic research (Tomer Sharon "Polaris"); insight-vs-observation discipline; repository governance; affinity mapping; democratization guardrails.

Assumptions

  • Method selection assumes you can name the goal honestly; if the goal is fuzzy, grill it first (the goal drives everything).
  • Saturation guidance is method-based, not a power calculation — usability tests find problems, not prevalence rates.
  • The synthesizer counts evidence you provide; coding quality is upstream of it. Garbage tags → garbage clusters.
  • The insight threshold (--min-sources) defaults to 3; raise it for high-stakes or heterogeneous populations.

Anti-patterns

  • Mismatching method to goal. A usability test cannot discover unmet needs; an interview cannot measure task success.
  • Reporting usability problems as percentages. Small-n tests surface problems, not population rates.
  • Promoting an anecdote to an insight. One participant is a signal to probe, not a finding.
  • Framing interview questions as feature reactions. Probe the job-to-be-done and recent real behavior, not hypothetical opinions.
  • Synthesizing without a repository scheme. Tag at synthesis time, or insights rot unfindable.

Distinct from

Neighbor Scope Difference
product-team/ux-researcher-designer Personas, journey maps, usability frameworks tied to design output That produces artifacts; this is method + repository discipline
product-team/product-discovery Opportunity validation, discovery-sprint planning That plans discovery sprints; this designs and synthesizes the research
product-team/experiment-designer Live product A/B hypothesis + sample size That runs live experiments; this runs qualitative/evaluative research
market-research (sibling) Market sizing, surveys, segmentation That studies the market; this studies users

Quick examples

python3 scripts/study_designer.py --sample
python3 scripts/saturation_planner.py --method thematic --segments 3
python3 scripts/insight_synthesizer.py --sample --min-sources 3

The synthesizer sample correctly promotes "import-confusion" (3 independent participants) to INSIGHT and flags "wants-slack" (1 participant) as an ANECDOTE.

Forcing-question library (Matt Pocock grill discipline)

Walked one at a time by /cs:grill-research-ops or the orchestrator. Recommended answer + canon citation per question. Never bundled.

  1. "Is this study generative (discover problems) or evaluative (test a solution)?" Recommended: name it first — the method follows from the goal. Canon: Rohrer, When to Use Which User-Experience Research Methods (NN/g).

  2. "What's your sample size and saturation rationale — and at what confidence?" Recommended: method-based n (5/segment usability; ~12 for thematic saturation), state the confidence. Canon: Nielsen; Guest, Bunce & Johnson (2006); Faulkner (2003).

  3. "How many independent participants support each insight — or is it a single-source anecdote?" Recommended: require recurrence across ≥3 sources before calling it an insight; flag singletons. Canon: atomic research / ResearchOps; Braun & Clarke thematic analysis.

  4. "Are your interview / usability tasks framed as outcomes (jobs) or as feature reactions?" Recommended: frame around the job-to-be-done and recent real behavior, not hypothetical opinion. Canon: Christensen/Ulwick Jobs-to-be-Done; Portigal Interviewing Users.

  5. "Where does this land in the repository, and how is it tagged for reuse?" Recommended: tag to the atomic schema at synthesis time, not later. Canon: Tomer Sharon, Polaris / ResearchOps repository practice.

Walk depth-first. Lock 1-2 before opening 3-5. After all are answered, invoke study_designer.py → saturation_planner.py → (after fielding) insight_synthesizer.py.

1---
2name: product-research
3description: Use when planning and synthesizing product/user research as a method-and-repository discipline — selecting the right method for the goal (generative interviews vs usability test vs concept test vs validation), computing method-based saturation/sample size with an explicit confidence level, or synthesizing coded observations into insights while flagging single-source anecdotes. Never fabricates user insight; an insight requires recurrence across independent participants. Distinct from product-team/ux-researcher-designer (persona/journey artifacts), product-discovery (discovery-sprint planning), and experiment-designer (live A/B) — this is the research-ops method + insight-repository layer.
4version: 2.9.0
5author: claude-code-skills
6license: MIT
7tags: [research-ops, product-research, ux-research, jtbd, usability, saturation, insight-synthesis, research-repository]
8compatible_tools: [claude-code, codex-cli, cursor, antigravity, opencode, gemini-cli]
9---
10 
11# product-research
12 
13Product / user research as an operational discipline: choosing the right method, sizing it honestly, and synthesizing findings into governed insights. The core rule: **method must match the goal**, and **an insight requires recurrence across independent participants** — a single quote is an anecdote.
14 
15## Purpose
16 
17Product researchers, ResearchOps teams, and PMs running discovery need method rigor and an insight repository they can trust. This skill structures three decisions:
18 
19Three deterministic tools:
20 
211. `study_designer.py` — Maps (research goal × product stage) to an appropriate method and emits a method-matched plan skeleton (objective, participant criteria, guide structure, success criteria). Redirects live A/B to `product-team/experiment-designer`.
222. `saturation_planner.py` — Method-based sample guidance with an explicit **confidence label**: Nielsen problem-discovery (5/segment), Guest et al. thematic saturation (~12), and evaluative coverage. Never claims a prevalence rate from a small-n usability test.
233. `insight_synthesizer.py` — Clusters coded observations by tag, counts distinct participants, ranks by cross-participant recurrence, and flags any candidate below the source threshold as an **ANECDOTE**, never promoting it to an insight.
24 
25## When to use
26 
27Invoke this skill when:
28 
29- You are planning a study and need the method to match the goal (generative vs evaluative vs validation).
30- You need a defensible sample size / saturation rationale with a stated confidence.
31- You have raw coded observations and need to synthesize insights without over-claiming.
32- You are setting up or auditing a research repository and need the insight-vs-observation discipline.
33 
34**Do NOT use this skill to**: generate personas / journey maps (use `product-team/ux-researcher-designer`), plan a discovery sprint or validate an opportunity (use `product-team/product-discovery`), design or analyze a live product A/B experiment (use `product-team/experiment-designer`), or do market sizing / surveys (use the `market-research` sibling).
35 
36## Workflow
37 
381. **Frame the study** — Fill `assets/research_plan_template.md` (research questions, method rationale, participant criteria, analysis plan, repository tagging scheme).
392. **Pick the method** — Run `study_designer.py --goal {discovery|evaluative|validation} --stage {concept|prototype|beta|live} --profile {b2b-saas|consumer-app|enterprise|marketplace|hardware|platform}`. Honor the redirect if it routes to experiment-designer.
403. **Size it** — Run `saturation_planner.py --method {usability|thematic|evaluative-coverage} --segments N`. Record the confidence label and limits.
414. **Synthesize** — After fielding, code observations and run `insight_synthesizer.py --input observations.json --min-sources 3`. Treat ANECDOTE-flagged clusters as signals to probe, not findings to ship.
425. **File in the repository** — Tag insights to the atomic schema at synthesis time, with their evidence and confidence.
43 
44## Scripts
45 
46| Script | Purpose | Profiles |
47|---|---|---|
48| `scripts/study_designer.py` | (goal × stage) → method + plan skeleton | b2b-saas, consumer-app, enterprise, marketplace, hardware, platform |
49| `scripts/saturation_planner.py` | Method-based sample guidance + confidence | n/a (method-driven) |
50| `scripts/insight_synthesizer.py` | Cluster observations, flag anecdotes | n/a (evidence-driven) |
51 
52All three: stdlib-only, `--help`, `--sample`, `--output {human,json}`.
53 
54## Onboarding & customization
55 
56Run the onboarding questionnaire **once before you start** — it captures your defaults so every tool in this skill is pre-configured. Customization is the point: the answers actually change tool behavior (e.g. the insight source-threshold).
57 
58```bash
59python3 scripts/onboard.py # interactive (also: --defaults, --set key=value, --reset)
60python3 scripts/onboard.py --show # see the questions + current effective config
61```
62 
63Answers are saved to `~/.config/research-ops/product-research.json` (global) or `./.research-ops/product-research.json` (`--scope project`) and are read automatically by `config_loader.py`. They set the default product **profile**, the **insight source-threshold** (how many independent participants make a finding an insight, not an anecdote), the default **saturation method**, and the **high-stakes** flag. CLI flags always override saved config; `RESEARCH_OPS_NO_CONFIG=1` ignores it.
64 
65**The four questions:** product profile · insight source-threshold · saturation method · high-stakes flag.
66 
67## Optimize with autoresearch (opt-in)
68 
69This skill ships an **isolated, opt-in** bridge to `engineering/autoresearch-agent`. Only when you ask to "optimize the synthesis" / "run a loop" does an autoresearch experiment iteratively refine the coding/clustering of a fixed evidence set so more cross-participant patterns surface. `scripts/ar_evaluator.py` is the ground-truth evaluator; it prints `validated_insights: <int>` (higher is better). It optimizes the **coding**, never fabricates evidence.
70 
71```bash
72/ar:setup --domain custom --name insight-synthesis \
73 --target observations.json \
74 --eval "python3 ar_evaluator.py --target observations.json" \
75 --metric validated_insights --direction higher
76/ar:loop custom/insight-synthesis
77```
78 
79Isolated: no hard dependency — autoresearch runs only on demand, and the loop edits `observations.json`, never the evaluator.
80 
81## References
82 
83- `references/research_methods_canon.md` — Portigal *Interviewing Users*; Christensen/Ulwick JTBD; Rohrer's UX-research methods landscape (NN/g); Sauro & Lewis *Quantifying the User Experience*; Goodman/Kuniavsky.
84- `references/sampling_and_saturation.md` — Nielsen "test with 5 users"; Guest, Bunce & Johnson saturation; Faulkner on more-than-5; Sauro usability sample size; Braun & Clarke thematic analysis.
85- `references/repository_and_synthesis.md` — ResearchOps / atomic research (Tomer Sharon "Polaris"); insight-vs-observation discipline; repository governance; affinity mapping; democratization guardrails.
86 
87## Assumptions
88 
89- Method selection assumes you can name the goal honestly; if the goal is fuzzy, grill it first (the goal drives everything).
90- Saturation guidance is method-based, not a power calculation — usability tests find problems, not prevalence rates.
91- The synthesizer counts evidence you provide; coding quality is upstream of it. Garbage tags → garbage clusters.
92- The insight threshold (`--min-sources`) defaults to 3; raise it for high-stakes or heterogeneous populations.
93 
94## Anti-patterns
95 
96- **Mismatching method to goal.** A usability test cannot discover unmet needs; an interview cannot measure task success.
97- **Reporting usability problems as percentages.** Small-n tests surface problems, not population rates.
98- **Promoting an anecdote to an insight.** One participant is a signal to probe, not a finding.
99- **Framing interview questions as feature reactions.** Probe the job-to-be-done and recent real behavior, not hypothetical opinions.
100- **Synthesizing without a repository scheme.** Tag at synthesis time, or insights rot unfindable.
101 
102## Distinct from
103 
104| Neighbor | Scope | Difference |
105|---|---|---|
106| `product-team/ux-researcher-designer` | Personas, journey maps, usability frameworks tied to design output | That produces **artifacts**; this is **method + repository discipline** |
107| `product-team/product-discovery` | Opportunity validation, discovery-sprint planning | That plans **discovery sprints**; this designs and synthesizes the **research** |
108| `product-team/experiment-designer` | Live product A/B hypothesis + sample size | That runs **live experiments**; this runs **qualitative/evaluative research** |
109| `market-research` (sibling) | Market sizing, surveys, segmentation | That studies **the market**; this studies **users** |
110 
111## Quick examples
112 
113```bash
114python3 scripts/study_designer.py --sample
115python3 scripts/saturation_planner.py --method thematic --segments 3
116python3 scripts/insight_synthesizer.py --sample --min-sources 3
117```
118 
119The synthesizer sample correctly promotes "import-confusion" (3 independent participants) to INSIGHT and flags "wants-slack" (1 participant) as an ANECDOTE.
120 
121## Forcing-question library (Matt Pocock grill discipline)
122 
123Walked one at a time by `/cs:grill-research-ops` or the orchestrator. Recommended answer + canon citation per question. Never bundled.
124 
1251. **"Is this study generative (discover problems) or evaluative (test a solution)?"**
126 Recommended: name it first — the method follows from the goal.
127 Canon: Rohrer, *When to Use Which User-Experience Research Methods* (NN/g).
128 
1292. **"What's your sample size and saturation rationale — and at what confidence?"**
130 Recommended: method-based n (5/segment usability; ~12 for thematic saturation), state the confidence.
131 Canon: Nielsen; Guest, Bunce & Johnson (2006); Faulkner (2003).
132 
1333. **"How many independent participants support each insight — or is it a single-source anecdote?"**
134 Recommended: require recurrence across ≥3 sources before calling it an insight; flag singletons.
135 Canon: atomic research / ResearchOps; Braun & Clarke thematic analysis.
136 
1374. **"Are your interview / usability tasks framed as outcomes (jobs) or as feature reactions?"**
138 Recommended: frame around the job-to-be-done and recent real behavior, not hypothetical opinion.
139 Canon: Christensen/Ulwick Jobs-to-be-Done; Portigal *Interviewing Users*.
140 
1415. **"Where does this land in the repository, and how is it tagged for reuse?"**
142 Recommended: tag to the atomic schema at synthesis time, not later.
143 Canon: Tomer Sharon, *Polaris* / ResearchOps repository practice.
144 
145Walk depth-first. Lock 1-2 before opening 3-5. After all are answered, invoke `study_designer.py` → `saturation_planner.py` → (after fielding) `insight_synthesizer.py`.
146 
View all files on GitHub →

Details

Version
2.9.0
Updated
Aug 30, 2026
License
MIT
Stars on the repo
★ 26,349
Checked
Source
alirezarezvani/claude-skills ↗
Creator
alirezarezvani · 363 listings
View creator

Similar skills

See all →
Skill360 Feedback Surveymohitagw15856/pm-claude-skills · by mohitagw15856Design a 360-degree feedback survey or write a structured 360 feedback report. Use when asked to build a 360 feedback process, write 360 feedback for a colleague, design a feedback survey, or produce a feedback report. Produces either a complete survey instrument with rating scales and open-ended questions, or a structured narrative feedback report with themes, strengths, and development areas.★ 1.4k GitHub starsSkillExpert Knowledge Extractorinhouseseo/superseo-skills · by inhouseseoUse when extracting first-party expertise from a subject-matter expert before writing content. Produces a knowledge document of contrarian takes, specific examples, and surprising outcomes that AI can't fabricate.★ 353 GitHub starsSkillCreator Persona ResearcherTheMattBerman/scrollclaw · by TheMattBermanStart of the UGC pipeline for persona research, creator profiles, format selection, and scriptwriting. Use when the user is clearly asking for messaging work rather than broad full-pipeline orchestration.★ 71 GitHub starsSkillQuestionnaire Generatormattpocock/skills · by mattpocockTell us who you need answers from and what you're missing; get back a clean form you send them to fill in.★ 267k GitHub starsSkillIntent Interview Assistantaddyosmani/agent-skills · by addyosmaniExtracts what the user actually wants instead of what they think they should want. Achieves this through one-question-at-a-time interview until ~95% confidence about the underlying intent. Use when an ask is underspecified ("build me X" without "for whom" or "why now"), when the user explicitly invokes ("interview me", "grill me", "are we sure?", "stress-test my thinking"), or when you catch yourself silently filling in ambiguous requirements before any plan, spec, or code exists.★ 98.7k GitHub starsSkillBehavioral Science for Marketingcoreyhaines31/marketingskills · by coreyhaines31When the user wants to apply psychological principles, mental models, or behavioral science to marketing. Also use when the user mentions 'psychology,' 'mental models,' 'cognitive bias,' 'persuasion,' 'behavioral science,' 'why people buy,' 'decision-making,' 'consumer behavior,' 'anchoring,' 'social proof,' 'scarcity,' 'loss aversion,' 'framing,' or 'nudge.' Use this whenever someone wants to understand or leverage how people think and make decisions in a marketing context. For applying psychology to specific pages, see cro; for pricing tactics, see pricing; for copy framing, see copywriting.★ 51.1k GitHub stars

More from alirezarezvani

SkillExperiment Resume Toolalirezarezvani/claude-skills · by alirezarezvaniResume a paused experiment. Checkout the experiment branch, read results history, continue iterating. Use when the user runs /ar:ar-resume or asks to pick up a previously started autoresearch experiment.★ 26.3k GitHub starsSkillExperiment Dashboard Vieweralirezarezvani/claude-skills · by alirezarezvaniShow experiment dashboard with results, active loops, and progress. Use when the user runs /ar:ar-status or asks how an autoresearch experiment is going.★ 26.3k GitHub starsSkillAutonomous Experiment Runneralirezarezvani/claude-skills · by alirezarezvaniStart an autonomous experiment loop with user-selected interval (10min, 1h, daily, weekly, monthly). Uses CronCreate for scheduling. Use when the user runs /ar:loop or asks to run an autoresearch experiment continuously on a schedule.★ 26.3k GitHub starsSkillSingle Experiment Iteratoralirezarezvani/claude-skills · by alirezarezvaniRun a single experiment iteration. Edit the target file, evaluate, keep or discard. Use when the user runs /ar:run or asks for one manual autoresearch iteration.★ 26.3k GitHub starsSkillAutoresearch Experiment Setupalirezarezvani/claude-skills · by alirezarezvaniSet up a new autoresearch experiment interactively. Collects domain, target file, eval command, metric, direction, and evaluator. Use when the user runs /ar:setup or asks to start optimizing a file with the autoresearch loop.★ 26.3k GitHub starsSkillExecutive Boardroom Deliberatoralirezarezvani/claude-skills · by alirezarezvani/cs:boardroom <brief> — 6-phase multi-role deliberation across the C-suite with Phase 2 isolation, critic pre-screen, and synthesis. Outputs a board memo. Use when a decision spans multiple executive domains — e.g. a pricing change touching finance, positioning, and product, or a raise-vs-cut runway call.★ 26.3k GitHub stars