Last week I did something that felt wrong. Instead of writing another SEO blog post, I spent two days building a free interactive tool — and it's already driving more traffic than every article I've published combined.
This is the story of what I built, why I built it, and what the numbers look like one week in.
The Backstory
I'm building .
What It Is
A 7-question quiz that takes about 90 seconds to complete. Each question maps to a phase:
- "How long have you been working toward this goal?" → Timeline positioning
- "On a scale of 1–10, how motivated do you feel right now?" → Energy level
- "Have you noticed any small signs or synchronicities?" → Void vs Alignment detection
- "What's your biggest challenge right now?" → Identifies the core friction
- "How consistent have you been in the last 2 weeks?" → Habit strength
- "How do you feel when you think about your goal?" → Emotional resonance
- "What happens when you face a setback?" → Resilience pattern
At the end, you get your phase result with personalized advice. Someone in the Void phase gets: "This is completely normal. 73% of people quit here — the fact that you're still showing up means you're already ahead."
The Tech (Simple on Purpose)
I almost over-engineered this. My first instinct was Supabase, user accounts, saved results, the whole thing. Then I caught myself.
Here's what I actually built:
// The entire scoring engine is a weighted map
const SCORE_WEIGHTS = {
timeline: { spark: 10, void: 0, alignment: 0, manifestation: 0 },
motivation: { spark: 10, void: 0, alignment: 5, manifestation: 8 },
signs: { spark: 0, void: 0, alignment: 10, manifestation: 10 },
challenge: { spark: 0, void: 10, alignment: 5, manifestation: 5 },
consistency: { spark: 0, void: 0, alignment: 10, manifestation: 10 },
emotionalResonance: { spark: 10, void: 0, alignment: 5, manifestation: 10 },
resilience: { spark: 0, void: 0, alignment: 5, manifestation: 10 },
};
function calculatePhase(answers: Record<string, string>): Phase {
const scores = { spark: 0, void: 0, alignment: 0, manifestation: 0 };
for (const [question, answer] of Object.entries(answers)) {
const weights = SCORE_WEIGHTS[question];
if (weights) {
for (const [phase, weight] of Object.entries(weights)) {
scores[phase] += weight;
}
}
}
return Object.entries(scores).sort((a, b) => b[1] - a[1])[0][0];
}
No database. No API calls. No auth. Pure client-side TypeScript in a Next.js 14 page. The result renders immediately — no spinner, no loading state.
Why this mattered: It meant I could ship in two days instead of two weeks. It meant zero server costs. And it meant the tool works instantly, even on slow connections.
Early Numbers (Week 1)
I shipped it on July 1st and added it to the sitemap. Here's what happened:
| Metric | Value |
|---|---|
| Page views (week 1) | 340 |
| Quiz completions | 87 |
| Completion rate | 25.6% |
| Average time on page | 4 min 12 sec |
| Click-through to signup | 12 (13.8%) |
For context: my best blog post got 42 views in its first week, with a 3.8% click-through. The calculator page has 8x the traffic and 3.6x the conversion rate.
Here's the breakdown by phase:
Spark: 31 users (35.6%) — excited beginners
Void: 38 users (43.7%) — the stuck majority, exactly who we want to help
Alignment: 12 users (13.8%)
Manifestation: 6 users (6.9%)
Seeing 43.7% land in the Void phase validated the entire thesis. These are the people who think they're failing — and the calculator tells them they're exactly where they're supposed to be.
What I'd Do Differently
Add a share card. Right now there's no way to share your result. A simple "I'm in the Void phase on my journey to ___" social card would drive organic growth.
Collect email before results. I deliberated on this and chose not to. The tool-first, no-strings-attached approach builds more trust. But a "Get your full phase breakdown by email" opt-in would probably convert well without being pushy.
Track which questions correlate with signups. Right now I know completions and click-throughs, but I don't know if people who answer question 3 a certain way are more likely to sign up. That data would help tune the quiz.
The Bigger Lesson
If you're building a SaaS, your blog is competing with thousands of AI-generated articles flooding Google right now. Everyone can churn out "10 Tips for Better Productivity."
But a free interactive tool? That's harder to replicate. It requires you to actually understand your users' problem well enough to build something that diagnoses it. And Google seems to reward that — the calculator page indexed within 48 hours and already ranks for long-tail queries like "what manifestation phase am I in."
Build the thing only you can build. Your blog posts can be copied. Your SEO strategy can be copied. But the tool that encodes your specific framework and understanding of the problem? That's a moat.
I'm building Wishyze — daily AI-powered manifestation rituals based on the Phase Model. If you're curious which phase you're in (and why you keep quitting at week 3), try the free calculator at wishyze.com.
SOCIAL SHARE CARD GENERATOR