⌘+K
← Back to blog

Why I Maintain 5 Products at 55-95% Complete

Perfection is a trap. Shipping useful products at 80% beats shipping perfect products never. Here's why I deliberately keep multiple projects in various states of 'incomplete.'

πŸ“– 5 min read
πŸ‘β€”
PhilosophySolo DevelopmentShippingProduct Strategy

The Completion Paradox

Right now, I'm maintaining five products simultaneously:

  • Life-Coach-Ai: 85% complete
  • Legal Malpractice Detector: 95% complete
  • Personal Dashboard: 100% complete
  • AJ-AGI: 55% complete
  • Trading Fanatics: Active development

Traditional wisdom says this is insanity. Finish one thing before starting another. Ship complete products. Don't spread yourself thin.

I disagree.

What "Complete" Actually Means

Here's the dirty secret: 100% complete doesn't exist.

Software is never finished. There's always another feature, another edge case, another optimization. The question isn't "when is it done?" but "when is it useful?"

My 85% Life-Coach-Ai has:

  • 30 working agents
  • Crisis intervention that saves lives
  • 149 passing tests
  • Real users getting real help

Is it "complete"? No. Is it useful? Absolutely.

The missing 15% is nice-to-have features, not core functionality. Users don't care about my completion percentage. They care about whether the product solves their problem.

The 80% Threshold

I've found a pattern: products become useful at around 80%.

Below 80%, you're missing something critical. A key feature, a necessary integration, basic polish. The product works but feels broken.

Above 80%, you're adding value but with diminishing returns. Each percentage point takes longer and matters less.

0-50%:   Foundation. Not usable.
50-80%:  Core features. Barely usable.
80-95%:  Polish and extras. Fully usable.
95-100%: Perfection trap. Marginally better.

The jump from 80% to 95% might double user satisfaction. The jump from 95% to 100% might improve it by 2%.

That math doesn't make sense.

Why Multiple Projects

1. Context Switching is a Feature

When I hit a wall on one project, I switch to another. Fresh eyes. Different problems. No burnout.

The conventional wisdom about context switching being expensive assumes you're in an office with meetings and interruptions. When you work alone, you control the switches. They become strategic retreats, not interruptions.

2. Cross-Pollination

Patterns I discover in blockchain development inform my AI architecture. Security practices from legal AI transfer to therapeutic AI. Dashboard infrastructure supports everything else.

One codebase, five products, shared patterns.

3. Risk Distribution

If one product fails to find market fit, I have four others. If one technology becomes obsolete, I have diversified skills. If one user base churns, I have others.

This isn't hedgingβ€”it's resilience.

4. Shipping Momentum

I ship something every week. Not to the same product, but to a product. This maintains momentum better than grinding on one thing for months.

Small wins compound. Deployment confidence stays high. The muscle of shipping stays strong.

The Products at Different Stages

55% (AJ-AGI): My personal AI assistant. Experimental. Breaking constantly. Learning what works. This is where I try dangerous ideas.

85% (Life-Coach-Ai): Production-ready core. Users depending on it. New features added carefully. This is stable-but-growing.

95% (Legal Malpractice): Nearly feature-complete. Polish phase. Bug fixes and edge cases. This is approaching maintenance mode.

100% (Personal Dashboard): Done. Maintenance only. Serves its purpose. I rarely touch it.

Active (Trading Fanatics): Partnership project. Different rhythm. External deadlines and requirements.

Each stage requires different energy. Some days I want to experiment (55%). Some days I want to polish (95%). Some days I want to ship (85%).

Having options means always having appropriate work.

What I'm Not Saying

I'm not advocating for:

  • Abandoning projects
  • Shipping broken software
  • Ignoring user feedback
  • Never finishing anything

Every one of my "incomplete" products is:

  • Deployed to production
  • Serving real users
  • Passing all tests
  • Actively maintained

"Incomplete" means "not yet everything I imagine." It doesn't mean broken or abandoned.

The Perfection Trap

I've seen developers spend years on products that never ship. Perpetually polishing. Adding features no one asked for. Refactoring working code. Waiting for "ready."

Ready never comes.

Meanwhile, someone else ships at 80% and captures the market. They iterate based on real feedback while the perfectionist iterates based on imagination.

The market doesn't reward perfection. It rewards presence.

Practical Implementation

If you want to try this approach:

1. Define "Useful"

Before building, know what 80% looks like. What's the minimum that solves the core problem? Ship that first.

2. Track Completion Honestly

I maintain actual percentages for each project. Not vibesβ€”real assessments of feature completeness, test coverage, and polish.

3. Set Switching Rules

I switch projects when:

  • I've shipped something (reward momentum)
  • I'm stuck for more than 2 hours (diminishing returns)
  • A different project has urgent user feedback

4. Protect Core Time

Multi-project doesn't mean scattered. I still work in focused blocks. I just choose which project gets today's block.

5. Accept Incompleteness

Some projects will stay at 85% for months. That's fine. If they're useful at 85%, that's success.

The Real Metric

Products shipped Γ— Users helped > Completion percentage

I'd rather have five products at 80% helping thousands of users than one product at 100% helping nobody.

The completion percentage is for my tracking. The user impact is for the world.


Currently maintaining 5 products, none of them "perfect," all of them useful.

Ship what works. Help real people. Iterate forever.