| 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. |
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:
- 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.
- Preserves at least one strong dimension (score ≥ 60 in the original). A pivot that abandons all strengths is a restart.
- Has evidence — the pivot direction is supported by at least one concrete signal (market_insights data, competitor gap, user complaint, trend).
- 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
- Load
weaknesses.json. Identify all weak dimensions and their root causes.
- 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
- 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:
-
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
-
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."
-
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:
- Stronger evidence from market_insights
- Lower risk (fewer dimensions negatively affected)
- 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):
{
"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
---
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
- 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.
- Options must be meaningfully distinct. Don't generate three variations of the same audience pivot. Each option should change a different variable.
- Score projections must be ranges, not false precision.
62–71/100 is honest. 67/100 implies certainty the model doesn't have.
- The recommendation must pick one. Not "it depends" — commit to the best option and explain why.
- 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.