Reframe Ranker as feedback map MVP
This commit is contained in:
+103
-201
@@ -3,224 +3,126 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<meta name="theme-color" content="#061B33" />
|
||||
<title>Rank — Work your ideas before they work you</title>
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link rel="stylesheet" href="/styles.css?v=rank-sales-20260523-2" />
|
||||
<meta name="theme-color" content="#101626" />
|
||||
<meta name="rank-version" content="2.0.0-feedback-map-mvp" />
|
||||
<title>Ranker — ranked feedback maps for messy decisions</title>
|
||||
<link rel="stylesheet" href="/styles.css?v=2.0.0-feedback-map-mvp" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="app-shell">
|
||||
<aside class="sidebar" aria-label="Main navigation">
|
||||
<div class="brand-mark" aria-label="Prioritix">P</div>
|
||||
<nav>
|
||||
<a class="active" href="#home"><span>⌂</span><b>Home</b></a>
|
||||
<a href="#prioritize"><span>☆</span><b>Sort</b></a>
|
||||
<a href="#roadmap"><span>◇</span><b>Roadmap</b></a>
|
||||
<a href="#review"><span>✓</span><b>Review</b></a>
|
||||
<main class="page-shell">
|
||||
<section class="hero" aria-labelledby="hero-title">
|
||||
<nav class="topline" aria-label="Ranker navigation">
|
||||
<a class="brand" href="#top" aria-label="Ranker home"><span>R</span>Ranker</a>
|
||||
<div class="nav-links">
|
||||
<a href="#try">Try it</a>
|
||||
<a href="#proof">Output</a>
|
||||
<a href="#why">Why</a>
|
||||
</div>
|
||||
</nav>
|
||||
<button class="collapse" type="button" title="Collapse sidebar">←</button>
|
||||
</aside>
|
||||
|
||||
<main class="workspace">
|
||||
<section class="sales-hero" aria-label="Rank product promise">
|
||||
<div class="hero-grid" id="top">
|
||||
<div class="hero-copy">
|
||||
<span class="eyebrow">For scattered founders, product teams, and backlog-heavy brains</span>
|
||||
<h1>Your backlog is not a roadmap.</h1>
|
||||
<p class="hero-lede">Rank is a nice-looking tool that understands your chaos. Paste messy ideas and work them into a clear build order before they start working you.</p>
|
||||
<p class="eyebrow">Decision feedback for scatterminds, builders, and structured people</p>
|
||||
<h1 id="hero-title">Dump your options. See what deserves attention first.</h1>
|
||||
<p class="lede">Ranker turns a messy list of ideas, features, offers, roadmap items, or next moves into a ranked feedback map: what to test, build, defer, or drop — and why.</p>
|
||||
<div class="hero-actions">
|
||||
<a class="primary-cta" href="#feature-sets">Paste my messy backlog</a>
|
||||
<button class="secondary-cta" type="button" id="sampleBacklog">Try sample backlog</button>
|
||||
<a class="button primary" href="#try">Rank a messy list</a>
|
||||
<button class="button ghost" type="button" id="loadSampleTop">Load sample</button>
|
||||
</div>
|
||||
<div class="trust-row" aria-label="What Rank gives you">
|
||||
<span>Build now</span>
|
||||
<div class="promise-row" aria-label="What Ranker returns">
|
||||
<span>Do first</span>
|
||||
<span>Validate next</span>
|
||||
<span>Park safely</span>
|
||||
<span>Explain why</span>
|
||||
<span>Expert reflections</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="proof-card" aria-label="Before and after example">
|
||||
<div class="proof-column messy">
|
||||
<span>Before</span>
|
||||
<h2>Messy idea pile</h2>
|
||||
<ul>
|
||||
<li>AI onboarding coach</li>
|
||||
<li>Team voting</li>
|
||||
<li>Dark mode</li>
|
||||
<li>Stripe export</li>
|
||||
<li>Better mobile sorting</li>
|
||||
</ul>
|
||||
|
||||
<article class="artifact-card" aria-label="Sample ranked feedback map">
|
||||
<div class="artifact-head">
|
||||
<span>Ranked Feedback Map</span>
|
||||
<b>Fastest useful progress</b>
|
||||
</div>
|
||||
<div class="proof-arrow" aria-hidden="true">→</div>
|
||||
<div class="proof-column clear">
|
||||
<span>After</span>
|
||||
<h2>Defendable build order</h2>
|
||||
<ol>
|
||||
<li><b>Build now</b><small>Mobile sorting removes the biggest usage friction.</small></li>
|
||||
<li><b>Validate next</b><small>Team voting needs proof before it becomes process theatre.</small></li>
|
||||
<li><b>Park</b><small>Dark mode is nice, not the reason anyone buys.</small></li>
|
||||
</ol>
|
||||
<ol class="mini-ranking">
|
||||
<li><strong>Manual offer critique</strong><small>High signal, easy to test, clear buyer pain.</small></li>
|
||||
<li><strong>Pricing calculator</strong><small>Useful, but generic unless paired with judgement.</small></li>
|
||||
<li><strong>Client dashboard</strong><small>Park it. Too much machinery before proof.</small></li>
|
||||
</ol>
|
||||
<div class="mini-brief">
|
||||
<strong>Pattern noticed</strong>
|
||||
<p>Your strongest wedge is judgement, not automation. Test whether people want their offer criticized before building a platform around it.</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="approach-strip" aria-label="How Rank approaches you">
|
||||
<article><strong>No dashboard first.</strong><span>Proof before controls. You see the transformation before learning the system.</span></article>
|
||||
<article><strong>No fake AI mysticism.</strong><span>Every decision needs a plain reason, risk, and next evidence.</span></article>
|
||||
<article><strong>No surprise gate.</strong><span>Work the ideas first; export, save, and deeper workflows come after value is obvious.</span></article>
|
||||
</section>
|
||||
|
||||
<header class="topbar" id="home">
|
||||
<button class="menu-button" type="button" aria-label="Menu">☰</button>
|
||||
<div class="project-title">
|
||||
<h1>Rank idea workbench</h1>
|
||||
<p><strong>Project goal:</strong> turn rough feature ideas into a clear, defendable build order.</p>
|
||||
</div>
|
||||
<div class="profile-card">
|
||||
<span>Sorting profile</span>
|
||||
<strong>MVP (2x2)</strong>
|
||||
<button type="button" id="profileToggle" aria-label="Change sorting profile">⌄</button>
|
||||
<div class="profile-menu" id="profileMenu" hidden>
|
||||
<button type="button" class="selected" data-profile="mvp">MVP (2x2) ✓</button>
|
||||
<button type="button" data-profile="rice">RICE Score</button>
|
||||
<button type="button" data-profile="value">Value vs Effort</button>
|
||||
<button type="button" data-profile="kano">Kano Model</button>
|
||||
<button type="button" data-profile="custom">Custom</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="progress-card" id="progressCard"></div>
|
||||
</header>
|
||||
|
||||
<section class="mobile-home" id="mobileHome" aria-label="Project overview">
|
||||
<div class="mobile-statusbar"><span>9:41</span><span>Rank</span></div>
|
||||
<div class="mobile-project-card">
|
||||
<span class="eyebrow">Project overview</span>
|
||||
<h2>Work your ideas</h2>
|
||||
<p>Paste the chaos. Sort what to build now, validate next, and park without guilt.</p>
|
||||
<div id="mobileHomeProgress" class="mobile-home-progress"></div>
|
||||
</div>
|
||||
<div class="mobile-flow-cards">
|
||||
<a href="#prioritize"><span>☆</span><strong>Active Feature Sorting</strong><small>Prioritize using the selected profile.</small></a>
|
||||
<a href="#roadmap"><span>▱</span><strong>Timeline Roadmap</strong><small>Review and reorder the product timeline.</small></a>
|
||||
<a href="#feature-sets"><span>⇪</span><strong>Paste messy backlog</strong><small>Drop in rough ideas and turn them into order.</small></a>
|
||||
<a href="#review"><span>✓</span><strong>Completion Review</strong><small>Check sorted progress and export.</small></a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="capture-strip" aria-label="Quick capture">
|
||||
<form id="ideaForm" autocomplete="off">
|
||||
<label class="capture-title">One messy idea
|
||||
<input id="title" name="title" maxlength="180" placeholder="Mobile sorting feels clumsy, team voting, Stripe export…" required />
|
||||
</label>
|
||||
<label>Brief
|
||||
<input id="description" name="description" maxlength="500" placeholder="Why does this matter, and what would it change?" />
|
||||
</label>
|
||||
<label>Category
|
||||
<input id="labels" name="labels" placeholder="UI / UX" />
|
||||
</label>
|
||||
<input type="hidden" name="milestoneId" value="inbox" />
|
||||
<input type="hidden" name="impact" value="7" />
|
||||
<input type="hidden" name="effort" value="4" />
|
||||
<input type="hidden" name="confidence" value="6" />
|
||||
<input type="hidden" name="urgency" value="5" />
|
||||
<button type="submit">Capture ↵</button>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section class="feature-set-panel" id="feature-sets" aria-label="Feature set import and export">
|
||||
<div class="feature-set-copy">
|
||||
<div class="section-label">Paste the chaos</div>
|
||||
<h2>Drop in the rough list. Rank turns it into a build order.</h2>
|
||||
<p>Start with a messy backlog, stakeholder requests, or five half-formed ideas. Rank helps you decide what to build now, what needs evidence, what can wait, and what is just noise wearing a nice hat. JSON import still works if you need it.</p>
|
||||
</div>
|
||||
<div class="feature-set-actions">
|
||||
<textarea id="featureSetInput" spellcheck="false" placeholder='{
|
||||
"format": "prioritix-feature-set-v1",
|
||||
"name": "Launch plan",
|
||||
"features": [
|
||||
{ "title": "Smart requirement sorting", "description": "Cluster pasted requirements into delivery slices.", "labels": ["AI", "Planning"], "impact": 8, "effort": 5, "confidence": 7, "urgency": 6 }
|
||||
]
|
||||
}'></textarea>
|
||||
<div class="feature-set-toolbar">
|
||||
<label class="file-pick">Upload .json<input id="featureSetFile" type="file" accept="application/json,.json" /></label>
|
||||
<button type="button" id="copyAiPrompt" class="ai-prompt-button">Copy AI-ready prompt</button>
|
||||
<button type="button" id="importFeatureSet">Import features</button>
|
||||
<button type="button" id="exportFeatureSet">Export sorted setup</button>
|
||||
</div>
|
||||
<p class="ai-prompt-status" id="aiPromptStatus" aria-live="polite">Copies a prompt that makes another AI return import-ready Rank JSON.</p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="sorting-layout" id="prioritize">
|
||||
<section class="active-column" aria-label="Active feature">
|
||||
<div class="section-label">Active feature</div>
|
||||
<div class="feature-deck" id="featureDeck"></div>
|
||||
<div class="deck-actions">
|
||||
<button type="button" id="skipFeature">▷ Skip</button>
|
||||
<button type="button" id="postponeFeature">↓ Postpone</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="grid-column" aria-label="Sorting grid">
|
||||
<div class="section-label" id="gridLabel">Sorting grid (MVP - 2x2)</div>
|
||||
<div class="sorting-grid" id="sortingGrid"></div>
|
||||
<p class="shortcut-hint">Shortcuts: <kbd>1</kbd>-<kbd>4</kbd> place active card · <kbd>P</kbd> park · <kbd>I</kbd> investigate · <kbd>U</kbd> undo · <kbd>/</kbd> capture</p>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section class="utility-row" aria-label="Feature card actions">
|
||||
<button type="button" data-utility="park"><span>⚑</span><strong>Park</strong><small>Valid idea, not relevant now. Revisit later.</small></button>
|
||||
<button type="button" data-utility="investigate"><span>⌕</span><strong>Investigate</strong><small>Needs more research or validation.</small></button>
|
||||
<button type="button" data-utility="remove"><span>⌫</span><strong>Remove</strong><small>Not a good fit. Remove from project.</small></button>
|
||||
</section>
|
||||
|
||||
<section class="timeline-panel" id="roadmap" aria-label="Timeline view">
|
||||
<div class="timeline-head">
|
||||
<div>
|
||||
<h2>Timeline view</h2>
|
||||
<p>Sorted features become nodes. Drag nodes horizontally to reorder the roadmap; click a node to inspect details.</p>
|
||||
</div>
|
||||
<div class="zoom-controls"><button type="button">−</button><button type="button">+</button><button type="button">⛶</button></div>
|
||||
</div>
|
||||
<div class="timeline" id="timeline"></div>
|
||||
</section>
|
||||
|
||||
<section class="backlog-panel" id="backlog">
|
||||
<div class="section-label">Backlog / utility states</div>
|
||||
<div id="backlogList" class="backlog-list"></div>
|
||||
</section>
|
||||
|
||||
<section class="review-panel" id="review" aria-label="Sorting completion review">
|
||||
<div id="reviewPanel"></div>
|
||||
</section>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<aside class="detail" id="detail" aria-hidden="true">
|
||||
<form id="detailForm">
|
||||
<div class="detail-head">
|
||||
<div><span class="category-dot"></span><span id="detailCategory">UI / UX</span></div>
|
||||
<span class="chip">MVP</span>
|
||||
<button type="button" id="closeDetail" aria-label="Close">×</button>
|
||||
</article>
|
||||
</div>
|
||||
<input name="title" class="detail-title" />
|
||||
<label>Brief<textarea name="description" rows="4" placeholder="What this feature changes for the product"></textarea></label>
|
||||
<label>Categories / chips<input name="labels" placeholder="UI / UX, Dependencies, Growth" /></label>
|
||||
<div class="detail-grid">
|
||||
<label>User value<input type="number" min="0" max="10" name="impact" /></label>
|
||||
<label>Effort<input type="number" min="1" max="10" name="effort" /></label>
|
||||
<label>Confidence<input type="number" min="0" max="10" name="confidence" /></label>
|
||||
<label>Urgency<input type="number" min="0" max="10" name="urgency" /></label>
|
||||
</section>
|
||||
|
||||
<section class="decision-tool" id="try" aria-labelledby="try-title">
|
||||
<div class="tool-intro">
|
||||
<p class="eyebrow">MVP · no account · no dashboard swamp</p>
|
||||
<h2 id="try-title">Rank the pile</h2>
|
||||
<p>Paste one idea plus the possible features, directions, offers, or next steps. Pick what the ranking should care about. Ranker gives a first-pass decision brief.</p>
|
||||
</div>
|
||||
<label>Links, dependencies, notes<textarea name="notes" rows="5" placeholder="Decision notes, source links, dependency risks, acceptance details…"></textarea></label>
|
||||
<div class="detail-actions">
|
||||
<button type="button" id="parkDetail">Park</button>
|
||||
<button type="submit">Save</button>
|
||||
<button type="button" id="archiveIdea" class="danger">Delete</button>
|
||||
|
||||
<form class="rank-form" id="rankForm">
|
||||
<label>
|
||||
<span>Main idea or context</span>
|
||||
<textarea name="idea" rows="4" placeholder="Example: I’m building a tool that helps freelancers package their services and decide what to sell first."></textarea>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
<span>Options to rank <b>required</b></span>
|
||||
<textarea name="optionsText" rows="9" required placeholder="One per line. Bullets, rambling, half-thoughts are fine.
|
||||
- Offer critique
|
||||
- Pricing calculator
|
||||
- Proposal generator
|
||||
- Client persona mapper
|
||||
- Landing page copywriter
|
||||
- Client dashboard"></textarea>
|
||||
</label>
|
||||
|
||||
<fieldset class="mode-picker">
|
||||
<legend>What should the ranking care about?</legend>
|
||||
<label><input type="radio" name="mode" value="progress" checked /> <span>Fastest useful progress</span></label>
|
||||
<label><input type="radio" name="mode" value="mvp" /> <span>Best MVP order</span></label>
|
||||
<label><input type="radio" name="mode" value="revenue" /> <span>Revenue potential</span></label>
|
||||
<label><input type="radio" name="mode" value="risk" /> <span>Risk reduction</span></label>
|
||||
<label><input type="radio" name="mode" value="originality" /> <span>Most original</span></label>
|
||||
</fieldset>
|
||||
|
||||
<label>
|
||||
<span>Extra constraints <em>optional</em></span>
|
||||
<input name="context" placeholder="Example: one week, solo builder, no paid ads, must be useful on mobile" />
|
||||
</label>
|
||||
|
||||
<div class="form-actions">
|
||||
<button class="button primary" type="submit">Create ranked feedback map</button>
|
||||
<button class="button ghost" type="button" id="loadSample">Use sample</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section class="results" id="results" aria-live="polite" hidden></section>
|
||||
|
||||
<section class="proof-section" id="proof" aria-labelledby="proof-title">
|
||||
<div>
|
||||
<p class="eyebrow">The artifact</p>
|
||||
<h2 id="proof-title">A decision brief, not a vibes table.</h2>
|
||||
</div>
|
||||
</form>
|
||||
</aside>
|
||||
<div class="proof-grid">
|
||||
<article><strong>Ranked order</strong><p>Clear first-pass order with do / test / defer / park labels.</p></article>
|
||||
<article><strong>Reason per item</strong><p>Every option gets a plain-language reason and concern.</p></article>
|
||||
<article><strong>Expert reflections</strong><p>Product expert, scattermind simplifier, and structured operator lenses.</p></article>
|
||||
<article><strong>Next 48 hours</strong><p>The output ends with a concrete move instead of more thinking fog.</p></article>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="why-section" id="why" aria-labelledby="why-title">
|
||||
<p class="eyebrow">Positioning</p>
|
||||
<h2 id="why-title">Scattermind clarifies one idea. Ranker judges the possible moves.</h2>
|
||||
<p>That makes Ranker broader: scattered people get relief, structured people get a second opinion, and builders get a defensible build order before they waste time on the wrong piece.</p>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<div class="toast" id="toast" hidden></div>
|
||||
<script src="/app.js?v=rank-sales-20260523-2" type="module"></script>
|
||||
<script src="/app.js?v=2.0.0-feedback-map-mvp" type="module"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user