Rank

Interactive feature prioritization tool for rank.friborg.uk.

Product definition

Rank is a fast intake and prioritization board for product ideas from Jimmi and agents.

Core loop:

Capture idea → score impact/effort/confidence/urgency → drag into milestone → revisit top-ranked work

Chosen subdomain: rank.friborg.uk — short, memorable, and honest about the job.

UX principles

  • One-screen capture, no modal ceremony.
  • Keyboard-first: / focuses capture, Enter saves.
  • Plain sharp visual system: zero rounded corners, dark space/glass, high contrast.
  • Milestones are customizable lanes, not a rigid roadmap prison.
  • Agents can post ideas through the same API endpoint as the UI.

Architecture

  • Node/Express app on port 3045
  • Static SPA in public/
  • Appwrite TablesDB persistence
  • Docker deploy on Unraid
  • Gitea remote repo
  • Nginx Proxy Manager routes rank.friborg.uk192.168.30.100:3045

Appwrite schema

Database: priority_rank

Tables:

  • ideas — title, description, source, sourceName, milestoneId, impact, effort, confidence, urgency, score, rank, labels, notes, archived
  • milestones — name, description, horizon, color, position, active
  • activity — small append-only UX feed

Scattermind → Ranker bridge

Ranker's continuation job is narrow:

Snapshot / Concept Map → candidate feature/action set → Rank-ready build order

POST /api/rank-feedback accepts a prioritix-feature-set-v1-style payload from Scattermind and returns ranked items plus buildOrder.doFirst / validateNext / defer / park. Keep this contract action-first; do not use it as a reason to add generic dashboard, auth, billing, or workspace layers before the bridge has proof.

Recommended payload shape:

{
  "schema": "prioritix-feature-set-v1",
  "sourceName": "Scattermind",
  "artifactId": "snapshot_or_concept_map_id",
  "snapshotTitle": "Plain idea title",
  "conceptMapId": "optional_concept_map_id",
  "originalPrompt": "The user's starting prompt, trimmed for provenance",
  "idea": "What Scattermind clarified",
  "context": "Important constraints: solo builder, non-AI-native user, avoid dashboard swamp, etc.",
  "mode": "mvp",
  "featureSet": {
    "features": [
      {
        "id": "build-order-preview",
        "title": "Build order preview",
        "description": "Show do first, validate next, defer, and park with reasons.",
        "userValue": "A tired builder sees the next move without opening a dashboard.",
        "evidenceNeeded": "Can 3 non-AI-native users understand the first recommended action?",
        "proofSteps": ["Show a static result screen to 3 people"],
        "dependencies": [],
        "risk": "May become generic roadmap UI if the source context is lost.",
        "recommendedLane": "validate-next",
        "sourceSection": "concept-map.nextMoves"
      }
    ]
  }
}

Commands

npm run setup:appwrite
npm run check
PORT=3045 node server.js
npm run smoke

Agent idea post:

curl -X POST https://rank.friborg.uk/api/ideas \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $RANK_AGENT_TOKEN" \
  -d '{"title":"Add public roadmap export","source":"agent","sourceName":"Rook","impact":8,"effort":3,"confidence":7,"urgency":5}'
S
Description
Rank feature prioritization tool for humans and agents
Readme 830 KiB
Languages
JavaScript 98.1%
HTML 1.9%