Superseded by v17/app-page.html. The single-column chat-style layout hid the input once a run started. The replacement brings back input-left / output-right split-view with 2026 chrome so users can always see what they submitted alongside what came back.
Open v17/app-page.html →

App page redesign · chat-style run surface

Fixing /p/:slug. Today's page is a 2015-era 2-column "form left, output right" split with tabbed sub-nav. This replaces it with a single-column, state-driven flow that mirrors ChatGPT / Cursor / claude.ai: inputs own the stage until Run, then they collapse into a thin header and the output takes the screen.

2026-04-21 redesign proposal source: /p/lead-scorer
State 1 · Idle — single column, inputs centered, no empty right panel
floom.dev/p/lead-scorer
floom / Store / lead-scorer
LS

lead-scorer

live
v0.1.0 · stable · by @fede · 2d ago

Score inbound leads for fit + intent. Paste a CSV or upload a file — get back a ranked list with reasoning per row.

Drop a CSV here, or click to browse Columns: company, domain, title, headcount · up to 10k rows
Or paste rows below.
~1.2s · 5 free runs
chat-style single column · max-width 720px · no empty output panel
About this app
Install in Claude
Source
quieter than a tab strip · default view is Run, always
State 2 · Running — input collapses into a thin bar, streaming feed takes the stage
floom.dev/p/lead-scorer
floom / Store / lead-scorer
LS
Running lead-scorer with leads-q2.csv
00:03 · row 12 of 50
Live · score_batch 12 / 50 · 5 high-fit so far
row 192Ramp — RevOps ICP, 850 FTE, strong domain signal
row 288Linear — Founder-led, product-led growth fit
row 381Figma — VP Sales title, enterprise motion match
row 464Notion — Wrong ICP tier, PMM contact
row 541Acme Plumbing — Off-ICP, SMB services
row 687Vercel — Frontier devtools, series C
row 752Squarespace — Wrong ICP, legacy stack
row 879Airtable — Ops-adjacent, 1.2k headcount
row 968Webflow — Borderline, marketing-led
row 1084Retool — Internal tools, 700 FTE
row 1158Shopify merchant — SMB, under threshold
row 12scoring…Supabase — analyzing domain + intent signals…
form collapsed · streaming status line-by-line · cancel sits inline, not in a modal
State 3 · Complete — thin header stays at top, full-width result below, share link inline
floom.dev/p/lead-scorer?run=r_a7f3
floom / Store / lead-scorer
LS
Scored 50 leads · 18 high-fit · leads-q2.csv
1.2s ·
Run · r_a7f3 score_batch · 1.2s · just now
Ranked 50 leads against the b2b-saas rubric. Top matches below; full list + raw JSON available via the buttons.
CompanyTitleHeadcountFit scoreReasoning
RampHead of RevOps85092RevOps ICP, strong domain signal
LinearFounder12088Founder-led, PLG fit
VercelVP Eng54087Frontier devtools, series C
RetoolHead of GTM70084Internal tools, enterprise motion
FigmaVP Sales140081VP Sales title, enterprise motion
AirtableHead of Ops120079Ops-adjacent, mid-market
WebflowDemand Gen Lead48068Borderline, marketing-led
NotionPMM90064Wrong tier, skip
Acme PlumbingOwner441Off-ICP, SMB services
+ 41 more rows · download CSV
thin header · full-width output · share link inline · refine composer only when manifest opts in
About this app
Install in Claude
Source
What changes
Before (today)
  • Primary nav is a 4-tab strip: Run / About / Install / Source
  • Run tab = 2-column grid: form on the left, "Output will appear here" empty box on the right
  • Empty right panel eats 50% of the viewport before the first click
  • Post-run: output renders in the same cramped right column, form stays large on the left
  • Feels like an n8n / Zapier admin surface, not a product
After (this wireframe)
  • Single column, max-width 720px, centered
  • Idle = inputs on stage, nothing competing for attention
  • Running = input collapses to a thin bar, streaming status below
  • Complete = thin bar persists, result fills the column, share link inline, "Run again" one click
  • About / Install / Source demoted to quiet chips below the run surface
  • Refine composer appears only when the manifest opts in (chat-style affordance without forcing it)
Contracts preserved