Generates structured pivot options for a scored idea based on weak dimensions, market_insights signals, and founder constraints. Includes scoring simulation, minimum viable pivot criteria, effort estimation, and indie buildability filtering.
Scanned 9/7/2026
Install to Claude Code
npx -y skills add MaxKmet/idea-validation-agents --skill pivot-engine --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Pivot Engine?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/maxkmet-pivot-engine-242f457e)More formats (shields.io, HTML) on the badges page.
---
name: pivot-engine
description: Generates structured pivot options for a scored idea based on weak dimensions, market_insights signals, and founder constraints. Includes scoring simulation, minimum viable pivot criteria, effort estimation, and indie buildability filtering.
---
<!-- version: 0.3.0 | outputs: memory/ideas/<slug>/pivot_options.json + memory/ideas/<slug>/pivot_report.md -->
# Skill: pivot-engine
## Purpose
When an idea scores poorly in one or more dimensions, generate concrete pivot options rather than abandoning the idea entirely. A pivot is a deliberate change in **one variable** to improve the weakest dimension — not a complete restart. The best pivots preserve what's already strong while fixing what's broken, and they're grounded in real market signals, not wishful thinking.
## Input
- Idea slug
- `memory/ideas/<slug>/scores.json` (current scores — required)
- `memory/ideas/<slug>/weaknesses.json` (weak dimensions with root causes — required, run weakness-detection first)
- `memory/ideas/<slug>/idea.md` (current concept)
- `memory/ideas/<slug>/competitors.json` (positioning gaps, competitor complaints)
- `memory/ideas/<slug>/distribution.json` (current channel assessment)
- `memory/ideas/<slug>/pricing.json` (current pricing model and WTP)
- `memory/ideas/<slug>/retention.json` (current retention assessment)
- `memory/user_profile.md` (ICP tier, budget, time, distribution advantages)
- `memory/market_insights/<niche>-*-<YYYY>-<MM>.md` (trend data — **use all available platform files**)
### Using Market Insights
Market insights are essential for generating pivots grounded in real demand rather than theory. Extract:
| Field | How it informs pivots |
|---|---|
| `top_signals` | Identify adjacent niches or audience segments with validated demand. A trending subreddit or TikTok hashtag near the idea's space suggests a viable audience pivot target. |
| `trend_velocity` | If the current niche is "declining", pivoting within it is futile — pivot to an adjacent rising niche. If "rising-fast", the problem may be execution (distribution, pricing), not the market. |
| `monetization_evidence` | If monetization is weak but market_insights show competitors successfully charging in the space, the issue is pricing model or positioning, not WTP. Pivot the model, not the idea. |
| Platform narratives (Reddit complaints, TikTok trends, App Store gaps) | Source specific pivot targets: underserved segments mentioned in Reddit threads, content angles trending on TikTok, App Store categories with stale top results. |
## Pivot Types
| Pivot type | What changes | What stays | When to use |
|---|---|---|---|
| **Audience narrowing** | Target user segment | Core problem and solution | Demand is broad but shallow; CAC too high because targeting is diffuse |
| **Audience expansion** | Broaden from niche to adjacent segment | Core solution mechanics | Market is too small (micro-niche verdict); SOM < $10K |
| **Feature simplification** | Scope and complexity | Core value proposition | Complexity too high; time-to-MVP exceeds founder capacity |
| **Feature pivot** | Core feature emphasis | Target audience and problem | Current feature set doesn't match what users actually want (review mining signals) |
| **Niche pivot** | Problem space subcategory | Solution approach | Competition too high in broad category; narrow to underserved niche |
| **Pricing pivot** | Pricing model or price point | Product and audience | WTP mismatch; wrong model for usage pattern; competitive pricing gap |
| **Distribution pivot** | Primary acquisition channel | Product and audience | Current channel is unviable; founder lacks skills/budget for assumed channel |
| **Platform pivot** | Target platform (iOS → web, mobile → desktop) | Core idea and audience | Wrong platform for audience behavior or market dynamics |
| **Monetization pivot** | Revenue model (B2C → B2C2B, app → content, product → service) | Core domain expertise | Direct monetization unviable but the domain has other revenue paths |
| **Problem pivot** | Which problem to solve | Target audience and domain | Audience is right but the specific pain point is weak; adjacent problem is stronger |
## Minimum Viable Pivot Criteria
A pivot must be different enough to change the score but similar enough to preserve existing work and insights. Apply the **Same Idea Test**:
### A valid pivot must meet ALL of these:
1. **Changes exactly 1–2 variables** from the list above. Changing 3+ variables is a new idea, not a pivot — create a new idea slug instead.
2. **Preserves at least one strong dimension** (score ≥ 60 in the original). A pivot that abandons all strengths is a restart.
3. **Has evidence** — the pivot direction is supported by at least one concrete signal (market_insights data, competitor gap, user complaint, trend).
4. **Addressable root cause** — the weakness it targets has `root_cause_type` of "addressable" or "situational" in `weaknesses.json`. Pivots cannot fix structural weaknesses unless the pivot changes the core mechanic (which usually means it's a new idea).
### A pivot is NOT valid if:
- It requires the founder to acquire a skill set they don't have and can't learn in < 4 weeks
- It targets a completely different audience AND a different problem (that's a new idea)
- The only evidence is "maybe this would work" with no supporting signal
- It makes the idea harder to build without a proportional improvement in market viability
## Process
### Step 1 — Load and assess weakness landscape
1. Load `weaknesses.json`. Identify all weak dimensions and their root causes.
2. Separate weaknesses into:
- **Addressable** (`root_cause_type` = "addressable" or "situational") → these are pivot targets
- **Knowledge gaps** (`root_cause_type` = "knowledge-gap") → these need more research, not a pivot
- **Structural** (`root_cause_type` = "structural") → only fixable by major pivot or new idea
3. If `overall_weakness_severity` = "fatal" and all weaknesses are structural, recommend dropping rather than pivoting. Note this in the output.
### Step 2 — Map weak dimensions to pivot types
Use this mapping to identify which pivot types are most likely to improve each weak dimension:
| Weak dimension | Primary pivot types | Secondary pivot types |
|---|---|---|
| **Demand** (< 40) | Problem pivot, audience narrowing | Niche pivot |
| **Competition** (< 40) | Niche pivot, audience narrowing | Feature pivot, platform pivot |
| **Monetization** (< 40) | Pricing pivot, monetization pivot | Audience narrowing (higher-WTP segment) |
| **Distribution** (< 40) | Distribution pivot, platform pivot | Audience narrowing (more reachable segment) |
| **Retention** (< 40) | Feature pivot, feature simplification | Problem pivot (pick a stickier problem) |
| **Founder-Market Fit** (< 40) | Niche pivot (toward founder's domain), feature simplification | Platform pivot (to founder's strongest platform) |
If multiple dimensions are weak, prioritize the one with the lowest score AND an addressable root cause.
### Step 3 — Generate pivot options using market_insights
For each applicable pivot type (from Step 2), generate a concrete option:
1. **Pull evidence from market_insights**:
- For audience pivots: look for specific user segments mentioned in Reddit discussions or TikTok content
- For niche pivots: identify adjacent niches with rising trend_velocity
- For distribution pivots: check which channels show actual activity for the niche in market_insights
- For pricing pivots: reference monetization_evidence and competitor pricing from `competitors.json`
2. **Be specific, not generic**:
- Bad: "Narrow the audience"
- Good: "Target freelance designers who use Figma (150K+ active in r/FigmaDesign) instead of all designers. This segment has higher WTP ($8–12/mo based on competitor pricing), active Reddit communities for organic distribution, and specific pain points around invoice management that existing tools ignore."
3. **Generate 2–3 options**, ranked by expected impact. Each option must pass the Minimum Viable Pivot Criteria.
### Step 4 — Scoring simulation
For each pivot option, simulate the expected score change by projecting how each dimension would shift. This gives the orchestrator enough information to decide whether a full re-score is warranted.
#### Simulation method
For the dimension(s) the pivot targets, estimate the new score range based on:
- The pivot direction and its evidence strength
- Category benchmarks from the rubrics in `idea-scoring`
- What the market_insights data suggests about the pivot target
For dimensions the pivot doesn't target, assume they remain unchanged **unless** there's a clear secondary effect:
- Audience narrowing typically improves Distribution (+5 to +15) but may reduce Demand (-5 to -10) and Market Size
- Feature simplification typically improves Founder-Market Fit (+10 to +20) but may reduce Retention (-5 to -10) if features drove stickiness
- Pricing pivots can affect Distribution (freemium → more installs) and Retention (subscription → commitment)
#### Projected score calculation
```
projected_score = sum of (projected_dimension_scores × weights) × projected_floor_penalty
```
Use the same weights and floor penalty logic from `idea-scoring`. This is an estimate — the actual re-score (step 4 of the pivot-optimization workflow) will be definitive.
Report as a range: `projected_score_range: { low: X, high: Y }`.
### Step 5 — Effort estimation
Each pivot has an execution cost. Estimate it relative to the founder's tier:
| Effort level | Definition | Typical timeline |
|---|---|---|
| **Low** | Can be done in a weekend. Changes copy, positioning, pricing, or targeting — no code changes. | 1–3 days |
| **Medium** | Requires feature changes or new content. Some development work. | 1–3 weeks |
| **High** | Significant rebuild. New core feature, new platform, or new audience requiring fresh research. | 1–3 months |
#### Tier adjustment on effort
| Founder tier | Adjust |
|---|---|
| **Beginner** | Upgrade effort by one level (what's "medium" for a builder is "high" for a beginner) |
| **Builder** | No adjustment |
| **Growth** | Downgrade effort by one level (what's "medium" for a builder is "low" for growth) |
A pivot with "high" effort for the founder's tier should be flagged as risky — the time investment may not be justified unless the projected score improvement is substantial (≥ 20 points).
### Step 6 — Indie buildability filter
Before finalizing, verify each pivot option passes these constraints:
| Constraint | Fails if |
|---|---|
| **Solo buildable** | Pivot requires a team (e.g., marketplace requiring both supply and demand side simultaneously) |
| **Budget feasible** | Pivot requires spend exceeding founder's budget tier (e.g., "run paid social" for a Bootstrap founder) |
| **Time feasible** | Pivot requires > 3 months of work for the founder's tier |
| **Skill feasible** | Pivot requires skills the founder doesn't have and can't learn in 4 weeks (e.g., "build an ML model" for a no-code beginner) |
| **No enterprise creep** | Pivot moves the idea toward B2B enterprise, custom sales, or long sales cycles — fundamentally not an indie B2C play |
If a pivot fails any constraint, either modify it to fit or discard it and note why.
### Step 7 — Select recommended pivot
Rank remaining options by: `(projected_score_improvement / effort_level)` — the best pivot is the one with the highest score impact per unit of effort.
Tie-breakers:
1. Stronger evidence from market_insights
2. Lower risk (fewer dimensions negatively affected)
3. Preserves more of the original idea's strengths
## Output
Write two files to `memory/ideas/<slug>/`:
### 1. `pivot_options.json`
Machine-readable structured data for downstream skills (`idea-scoring`, `decision-memo`):
```json
{
"original_score": 0,
"original_verdict": "",
"triggered_by_weaknesses": [
{
"dimension": "",
"score": 0,
"root_cause_type": "",
"root_cause_description": ""
}
],
"structural_weaknesses_unpivotable": [],
"pivot_options": [
{
"pivot_id": "pivot-1",
"pivot_type": "",
"description": "",
"specific_change": "",
"evidence": "",
"evidence_source": "",
"meets_minimum_viable_pivot": true,
"scoring_simulation": {
"dimensions_improved": [
{ "dimension": "", "current": 0, "projected_low": 0, "projected_high": 0 }
],
"dimensions_worsened": [
{ "dimension": "", "current": 0, "projected_low": 0, "projected_high": 0 }
],
"dimensions_unchanged": [],
"projected_score_range": { "low": 0, "high": 0 },
"projected_verdict_range": ""
},
"effort": {
"level": "low | medium | high",
"tier_adjusted_level": "low | medium | high",
"timeline": "",
"what_changes": "",
"what_stays": ""
},
"indie_buildability": {
"passes": true,
"constraints_checked": ["solo_buildable", "budget_feasible", "time_feasible", "skill_feasible", "no_enterprise_creep"],
"failed_constraints": []
},
"trade_offs": [],
"variables_changed": 0
}
],
"recommended_pivot": "",
"recommended_pivot_rationale": "",
"drop_recommendation": false,
"drop_rationale": "",
"market_insights_sources_used": []
}
```
### 2. `pivot_report.md`
Human-readable pivot brief. This is the document the founder actually reads. Write it after `pivot_options.json` is complete — source all data from the JSON, don't introduce new judgements.
#### Structure
```markdown
---
idea_slug: <slug>
original_score: <X>
original_verdict: <verdict>
recommended_pivot: <pivot_id>
created_at: <YYYY-MM-DD>
---
# Pivot Report: <Idea Name>
## Why the Original Idea Scored <X>/100
<2–3 sentences. State the root cause of the low score plainly — not a list of every problem, just the one or two structural reasons the idea can't work as-is. Cite specific scores from scores.json (e.g. "Distribution scored 34/100 because…"). No hedging.>
---
## What Can Be Fixed vs. What Can't
**Addressable weaknesses** (pivot targets):
- <dimension>: <1-sentence root cause and why it's fixable>
- ...
**Structural weaknesses** (cannot be pivoted away):
- <dimension>: <1-sentence root cause and why no pivot can fix it>
- ...
<If all weaknesses are structural, state clearly that a pivot is unlikely to rescue this idea and explain why.>
---
## Pivot Options
### Option 1 — <Pivot Type>: <Short Name> · Projected score: <low>–<high>/100 · Effort: <tier_adjusted_level>
**The change:** <1–2 sentences. Be specific about exactly what changes — audience, feature, channel, pricing model, platform. Name concrete details (specific subreddits, competitor pricing, App Store keywords, etc.).>
**Why this works:** <2–3 sentences grounded in evidence. Cite the market_insights signal, competitor gap, or user complaint that supports this direction. Name the source (e.g. "r/FigmaDesign has 150K active members discussing invoice pain", "BookPal's 1-star reviews consistently mention X", "TikTok hashtag #X has 40M views and rising velocity").>
**What stays the same:** <1 sentence. What existing work and strengths are preserved.>
**Score projection:**
| Dimension | Current | Projected |
|---|---|---|
| <dimension> | <current>/100 | <low>–<high>/100 |
| <dimension (worsened)> | <current>/100 | <low>–<high>/100 |
| ... | ... | unchanged |
**Trade-offs:** <1–2 sentences. What this pivot gives up. Be honest — every pivot has a cost.>
**Effort:** <What specifically needs to change — code, copy, positioning, research. Timeline.>
---
### Option 2 — <Pivot Type>: <Short Name> · Projected score: <low>–<high>/100 · Effort: <tier_adjusted_level>
<Same structure as Option 1.>
---
### Option 3 — <Pivot Type>: <Short Name> · Projected score: <low>–<high>/100 · Effort: <tier_adjusted_level> *(optional)*
<Same structure as Option 1. Include only if a genuinely distinct third option exists.>
---
## Recommendation
**Go with Option <N> — <Short Name>.**
<3–4 sentences. State why this option has the best impact-to-effort ratio. Reference the scoring simulation. Name the one thing that makes this pivot more credible than the alternatives (the market signal, the competitor gap, the distribution advantage). End with a specific first action the founder should take this week.>
**If this pivot also scores below 50:** <1 sentence — what that means and what to do (drop, major rethink, or new idea slug).>
---
## What to Do First
<1–3 concrete steps, ordered. Each step should be doable within a week. No vague advice — name the specific subreddit, pricing change, App Store keyword, or feature to cut. If a RAT experiment makes sense before committing to the pivot, define it here: ≤2 weeks, ≤$100, pass/fail criteria.>
```
#### Writing rules for `pivot_report.md`
1. **Every claim cites a source.** Name the market_insights file, competitor data point, or dimension score behind every assertion. "Demand is weak" is not a claim — "Demand scored 36/100 because search volume for 'invoice app for freelancers' is 2,400/mo, below the 10K threshold for a viable indie SOM" is.
2. **Options must be meaningfully distinct.** Don't generate three variations of the same audience pivot. Each option should change a different variable.
3. **Score projections must be ranges, not false precision.** `62–71/100` is honest. `67/100` implies certainty the model doesn't have.
4. **The recommendation must pick one.** Not "it depends" — commit to the best option and explain why.
5. **Total length: ~500–800 words.** Cut anything that doesn't help the founder decide. This is a decision brief, not a research report.
---
## Notes
- If `overall_weakness_severity` = "fatal" and all weaknesses are structural, set `drop_recommendation` = true and explain why no pivot can save this idea. Still generate 1 option as a "Hail Mary" if the founder wants to try, but be honest about the odds.
- When generating niche pivots, always check `competitors.json` for `positioning_gaps` — an identified gap with evidence is the strongest pivot foundation.
- Pivot options that combine two small changes (e.g., audience narrowing + pricing change) are allowed as a single option if both changes are "low" effort. Call this out as a **compound pivot** and flag the higher risk.
- The `pivot_id` field is used by `idea-scoring` to link re-scores in `pivot_scores.json` back to the specific option.
- If market_insights files are past their `stale_after` date, note that pivot evidence may be outdated and recommend refreshing trend analysis before committing to a pivot direction.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!