The Feature Prioritization Framework: When Technical Readiness Isn't Enough
How we decided to ship auto-recovery but delay live transcription—and why UX friction matters more than technical complexity
Published: January 2025
Tags: #ProductStrategy #FeaturePrioritization #UXFirst #SoloBuilder #DecisionFramework #ShipSmart
The “So What?” - Stop Building Features Users Don’t Want
Bottom Line Value: Learn a practical framework for deciding which features to build now vs. later—even when both are technically feasible—by evaluating UX friction, user value, and implementation risk.
What You’ll Gain:
- A decision framework for feature prioritization based on UX impact, not just technical complexity
- Real example: Why we’re shipping auto-recovery (invisible safety) but delaying live transcription (UX undecided)
- The “zero friction” principle for evaluating new features
- How to separate technical readiness from product readiness
- When to say “we’re not ready” even when the code is architected
- ROI: Ship features that build trust without adding friction—avoid wasting weeks on features users won’t use
Who This Helps: Solo builders and technical product managers who struggle with feature prioritization and knowing when to ship vs. when to wait.
Why Bother: Having complete technical architecture doesn’t mean you should build it. This framework helps you avoid the trap of building technically impressive features that add friction to your UX.
TLDR: Technical Readiness ≠ Product Readiness
We just completed risk assessments and technical architecture for two major features:
- Auto-Recovery - Automatically recover crashed sessions (LOW risk, 3 weeks)
- Live Transcription - Show transcript as you speak (MEDIUM risk, 3-5 weeks)
Both are technically ready to implement. Both have complete architecture docs. Both would add value.
The Decision:
- ✅ Ship auto-recovery in v1.0 (invisible safety, zero friction)
- ❌ Delay live transcription (UX undecided, potential friction)
The Principle:
“Zero friction to current UX is non-negotiable. If we haven’t figured out how to add value without adding friction, we’re not ready to build it—no matter how good the technical architecture is.”
The Problem: When Technical Architecture Outpaces UX Design
Here’s the trap every technical founder falls into:
The Seductive Technical Solution
What Happened:
We have a checkpoint system that saves audio every 30 seconds during recording. It’s working great for crash recovery. Then someone (me) had a brilliant idea:
“Hey, if we’re already saving chunks every 30 seconds, why not transcribe them in the background? Users could see their transcript appearing in real-time!”
The Technical Analysis:
- ✅ Architecture complete (file watcher, transcription queue, UI updates)
- ✅ Risk assessment complete (MEDIUM risk, manageable)
- ✅ Timeline estimated (3-5 weeks with PoC validation)
- ✅ Code examples written (CheckpointWatcher, LiveTranscriptionManager)
- ✅ Integration plan documented (4 phases, clear milestones)
The Temptation:
“We have everything we need. Let’s build it!”
The UX Reality Check
Then I asked the critical question:
“How should users enable this feature? Where should the live transcript appear? Should we auto-paste as they speak or wait until the end?”
The Honest Answer:
“I don’t know. I haven’t figured that out yet.”
The Realization:
Having complete technical architecture doesn’t mean we’re ready to build. If we can’t answer basic UX questions, we’re not ready—period.
The Framework: Four Questions Before You Build
Here’s the decision framework that emerged from this process:
Question 1: Does This Add Friction to Current UX?
Current VoiceCatcher workflow:
User records → Stops → Transcript appears → Auto-paste
This workflow is perfect. Users love it. It’s simple, predictable, hands-free.
Auto-Recovery Impact:
Normal operation: User records → Stops → Transcript appears → Auto-paste
(No change—completely invisible)
After crash: User restarts → Notification appears → "Your session was recovered"
(Only visible when needed)
Friction added: ZERO
Live Transcription Impact (Option A - Auto-paste live):
User records → Text appears in their document as they speak
Problems:
- What if user switches apps mid-recording? (paste goes to wrong place)
- What if user moves cursor? (where do we paste?)
- What if partial transcripts have errors? (can’t undo easily)
- What if user is typing while recording? (cursor position chaos)
Friction added: UNKNOWN (potentially high)
Live Transcription Impact (Option B - Show in window):
User records → Live transcript appears in VoiceCatcher window → User copies when done
Problems:
- Adds manual copy/paste step (friction)
- Requires window management (friction)
- Breaks hands-free workflow (friction)
Friction added: DEFINITE (extra steps required)
Decision Rule:
If you can’t confidently say “this adds ZERO friction,” you’re not ready to build it.
Question 2: Can You Articulate the UX in One Sentence?
Auto-Recovery UX:
“If the app crashes, your work is automatically recovered and saved to History—you’ll see a notification when you restart.”
Clear? ✅ Yes
Simple? ✅ Yes
Predictable? ✅ Yes
Live Transcription UX:
“Uh… you can see your transcript as you speak… somewhere… maybe in a window? Or maybe it auto-pastes? We’re not sure yet how you enable it or where it appears…”
Clear? ❌ No
Simple? ❌ No
Predictable? ❌ No
Decision Rule:
If you can’t explain the UX in one clear sentence, you haven’t designed it yet.
Question 3: Is This Invisible or Opt-In?
The Zero Friction Principle:
New features should be either:
- Completely invisible (only appear when needed), OR
- Clearly opt-in (user explicitly chooses to enable)
Auto-Recovery:
- Invisible during normal operation ✅
- Only appears after crash ✅
- No user decisions required ✅
- No settings to configure ✅
Live Transcription:
- How do users enable it? ❌ Undecided
- Settings toggle? Keyboard shortcut? Always on? ❌ Don’t know
- Where does it appear? ❌ Undecided
- Can users disable it mid-recording? ❌ Don’t know
Decision Rule:
If you haven’t decided whether it’s invisible or opt-in, you haven’t designed the UX.
Question 4: What Happens When It Fails?
The Catastrophic Failure Test:
Auto-Recovery Fails:
- User loses work (same as current state)
- No worse than not having the feature
- Low risk
Live Transcription Fails (Option A - Auto-paste):
- Text pastes to wrong app
- Cursor position gets corrupted
- User loses trust in auto-paste feature
- User disables auto-paste entirely
- Catastrophic: Breaks core feature users love
Live Transcription Fails (Option B - Show in window):
- Live preview doesn’t update
- User doesn’t notice (they’re focused on speaking)
- Final transcript still works fine
- Low risk
Decision Rule:
If failure could break user trust in core features, you need bulletproof UX design first.
The Decision: Ship Safety, Delay Speed
Auto-Recovery: Ship in v1.0 ✅
Why:
- ✅ Zero friction (invisible unless crash)
- ✅ Clear UX (one sentence explanation)
- ✅ Invisible (no user decisions)
- ✅ Low failure risk (doesn’t affect core features)
- ✅ Critical value (prevents data loss)
- ✅ Builds trust (users feel safe)
Timeline: 3 weeks
Risk: LOW
User Value: CRITICAL
Live Transcription: Delay to v1.1+ ❌
Why:
- ❌ Friction unknown (haven’t solved UX)
- ❌ UX unclear (can’t explain in one sentence)
- ❌ Enablement undecided (invisible or opt-in?)
- ❌ High failure risk (could break auto-paste trust)
- 🟡 Nice-to-have value (enhancement, not critical)
- 🟡 Builds delight (but only if UX is perfect)
Timeline: 3-5 weeks (when UX is ready)
Risk: MEDIUM
User Value: HIGH (but not critical)
Blocking Issues:
- How do users enable this feature?
- Where does live transcript appear?
- Auto-paste live or wait until end?
- User testing needed to validate approach
The Principle: Predictable and Invisible Beats Magical and Intrusive
Here’s what I learned from this process:
Bad Product Thinking:
“We have the technical architecture. Let’s build it and figure out the UX later.”
Good Product Thinking:
“We have the technical architecture. Now let’s design the UX. If we can’t make it zero-friction, we’re not ready to build.”
The Trap:
Technical founders love solving technical problems. We get excited about elegant architecture, clever algorithms, and sophisticated implementations.
The Reality:
Users don’t care about your architecture. They care about whether your product makes their life easier or harder.
Auto-recovery makes life easier:
- Invisible safety net
- No decisions required
- No workflow changes
- Just works
Live transcription (current state) might make life harder:
- Where do I look? (window management)
- How do I enable it? (cognitive load)
- Will it paste to the wrong place? (anxiety)
- Do I have to copy/paste manually? (friction)
The Process: How We Got Here
Step 1: Technical Architecture (Complete)
What We Did:
- Designed checkpoint-based live transcription system
- Created file watcher for detecting new chunks
- Architected background transcription queue
- Planned UI integration and IPC events
- Estimated timeline and effort
Result: Complete technical architecture, ready to implement
Step 2: Risk Assessment (Complete)
What We Did:
- Analyzed technical complexity (MEDIUM)
- Evaluated integration complexity (MEDIUM)
- Assessed performance impact (+20-30% CPU)
- Estimated testing effort (2 weeks)
- Compared with auto-recovery (LOW risk)
Result: MEDIUM risk, manageable, worth building
Step 3: UX Design (Incomplete)
What We Asked:
- How do users enable this?
- Where does live transcript appear?
- Auto-paste live or wait?
- What if user switches apps?
- What if cursor moves?
Result: Can’t answer basic UX questions—NOT READY
Step 4: The Honest Conversation
The Question: “I don’t like adding any friction at all for our current UX, and I have not decided on how the user should enable this feature.”
The Realization: We’re not ready. Technical architecture is complete, but product design isn’t.
The Decision: Block implementation until UX is designed and validated.
The Takeaway: Work Can Continue Without Implementation
Here’s the key insight: Saying “we’re not ready to implement” doesn’t mean work stops.
What We Did:
- ✅ Completed technical architecture (ready when UX is)
- ✅ Completed risk assessment (know what we’re getting into)
- ✅ Documented UX questions (clear blocking issues)
- ✅ Created decision framework (how to evaluate when ready)
- ✅ Moved forward with auto-recovery (ship critical features first)
What We’re NOT Doing:
- ❌ Rushing to implement without UX design
- ❌ Adding friction to current workflow
- ❌ Building features users might not want
- ❌ Blocking critical features (auto-recovery) on nice-to-haves
The Result:
- Auto-recovery ships in v1.0 (3 weeks)
- Live transcription UX gets proper design time
- When UX is ready, technical architecture is waiting
- No wasted implementation effort on wrong UX
The Framework Summary
Before You Build Any Feature, Ask:
-
Does this add friction to current UX?
- If yes → Design UX to eliminate friction first
- If no → Proceed
-
Can you explain the UX in one sentence?
- If yes → UX is clear enough to build
- If no → Design UX first
-
Is this invisible or clearly opt-in?
- If invisible → Ensure it only appears when needed
- If opt-in → Design enablement UX
- If neither → Not ready
-
What happens when it fails?
- If catastrophic → Need bulletproof UX
- If graceful → Can iterate on UX
Decision Matrix:
| Feature | Friction | UX Clear | Invisible/Opt-in | Failure Risk | Decision |
|---|---|---|---|---|---|
| Auto-recovery | Zero | Yes | Invisible | Low | ✅ Ship v1.0 |
| Live transcription | Unknown | No | Undecided | High | ❌ Design UX first |
Conclusion: Technical Readiness Is Necessary But Not Sufficient
The Lesson:
Having complete technical architecture, risk assessment, and implementation plan doesn’t mean you’re ready to build. If you can’t answer basic UX questions, you’re not ready—no matter how elegant your code would be.
The Discipline:
- Ship features that add zero friction (auto-recovery)
- Delay features that might add friction (live transcription)
- Design UX before writing code
- Be honest about what you don’t know
The Result:
- v1.0 ships with critical safety (auto-recovery)
- v1.1 ships with delightful UX (live transcription, when ready)
- Users trust your product (no friction added)
- You avoid wasting weeks on wrong UX
The Principle:
“Predictable and invisible beats magical and intrusive. Every time.”
Ship smart. Ship safe. Ship what users actually want.
Next in this series: How we designed the auto-recovery UX to be completely invisible (and why that’s harder than it sounds)