Sales Machine — UX opportunities
Ranked by (deal impact × demo value) ÷ effort. Say the numbers you want built.
1
Next step and days-since-touch on the card face
hoursrecommended first
Every contacted card gains a two-line footer — the next step in plain words plus how long it has waited ("Wait for David's circle-back on scope · Sean checked in 5 Aug, no reply — 7 days") — with an amber left edge past the stage's threshold and a "no next step" marker on the six live deals whose next-step field is blank, sorted to the top of their column.
This is the one fact that decides whether either founder does anything today, it is already written on every record, and right now a stalled proposal and a fresh card look identical.
2
Score, trust tier and timing window on the card face
hoursrecommended first
Under the company name each card gets a thin stacked bar of the eight scoring terms with the total beside it, a colored tier dot (rankable / unverified / out-of-band) whose one-line reason shows on hover, and a timing chip like "Now to mid-September".
All three values exist for all 545 rows and appear nowhere, so the board is a list of names, ranking a column by eye is impossible, and the 139 companies whose window shuts mid-September are invisible as a group.
3
Capacity line: the one company we could actually start
hoursrecommended first
A one-line strip above the board reads "1 of 2 delivery slots open (~80 hours a month each) · KAGE / Urban Phenix is the only one we could start now · their window closes mid-September", with a matching marker on that card.
For two people the real daily question is who gets the one open delivery slot, not who scores highest, and the answer is already computed and shown nowhere.
4
Click a card and the board stays put
days
Clicking a card opens a right-hand drawer over the board — tabs Why / Dossier / People and paths / Timeline / Calls — where the chip you clicked picks the tab and up-down arrows step to the next card in the column without closing.
Today a click fires scrollIntoView and drops you thousands of lines below the board with no back, so triaging a column of twenty costs twenty round trips and you lose your place every time.
5
Why this score, in eight sentences, with the shaky terms marked
hours
The panel replaces the generic weights table with this company's own eight terms as written sentences and points ("They employ the on-site team themselves, so the field-operations product has somewhere to live"), each term computed on missing data flagged amber with what is missing, formula folded underneath.
The page explains the formula but never a verdict, so nobody can say why one company beat another — and the per-term reasons and degraded flags are already written for all 545 rows.
6
Split Closing back into Proposal, Pilot and Contract
hours
Render the eight stages the schema already defines instead of collapsing three into one "Closing · 2" column with the real stage smuggled in as a chip on the card name.
Ulysses (proposal stalled since 21 July) and CONAM (pilot waiting on their IT approval) are stuck for completely different reasons and the board says they are in the same place.
Conflicts with your 12 Aug call ("too many stages") — only worth revisiting because two deals are stuck there for different reasons.
7
A presenter mode that hides the internal panes
hours
A toggle or ?present link leaves only Case study and Proposal on the tab bar and collapses the coaching folds inside Pitch, so a screen share shows client-safe material only.
When Sean shares his screen, one misclick shows the prospect every competitor's unit count, the named "way in" on each warm path, and graded critiques of Sean's own calls.
The screen-share safety item — worth shipping before the next client-facing demo.
8
One search box, and table rows that open
hours
A search field in the top bar finds any of the 545 companies from any tab and opens its panel, Cmd+K focuses it, and rows in the 398-row uncontacted table become clickable to the same panel.
Finding a company mid-call means guessing whether it is a card or a row, switching views, then typing into a filter that only filters that one table — and the table's rows are inert, so you can find a company and then not read it.
9
Make the uncontacted table honest: match count, named slices, tier-aware sort
hours
The filter reports "38 of 398 shown", a row of one-click slices sits above the table (Warm path · Rankable only · Fragmented software · Window closes mid-September), and score sort stops ranking unverified companies above rankable ones.
Sorting by score today puts unverified Cortland (76.2) and out-of-band Prime Residential (73.8) above rankable Baron (70.7) and Botnick (65.1), so the "who do I call next" list is actively wrong, and a filter that silently hides 360 rows is how people stop trusting it.
10
Turn the decision-maker gap into a named worklist
hours
A line under the board names the biggest hole — "who can actually sign is worth 14 points and is unanswered on 537 of 545 companies, including 8 of the 15 we have profiled" — clicking it filters to the workable ones, and each panel shows the gap as a one-line research job.
Every score on the page is quietly running at a discount nobody can see, and the highest-leverage research task is the same task on eight companies you could actually work this week.
11
One definition per number
hours
Each count gets its definition in place on hover — the tab's 545, the view toggle's 398 and the first column's 308 each state what is in and what is excluded, same for the tier words in the table.
Three numbers for what a reader takes to be the same set is the fastest way to lose a cofounder's trust on a page whose whole claim is that nothing is hand-typed.
12
Moving a card writes a commit, and the move asks why
app build
Dragging a card to another column writes stage, who moved it and a one-line basis picked in one click from the last email, call outcome or proposal event; a move to Passed additionally requires one of the seven rejection categories, and every write shows "Saving… → Saved · Undo" on the card itself.
Today the only way to move a deal after a call is to hand-edit JSON and rebuild, so the board goes stale between builds — and making the evidence a one-click pick collects rejection analytics for free at the one moment the founder actually knows the answer.