unvibed.
Menu
Free UI audit

Licensed case study / Before audit

Funil CRM

Client portal · Nov 8, 2026

Overall gradeCDesign grade after deductions

7 measured views. Local app. Design grades compare the actual screen with published product references. N/A means there was no applicable sample. Unverified means evidence was insufficient.

Product specificity and generic signals · C

Both widths identify a sales pipeline through named leads, contacts, values, sources and concrete next actions. Desktop exposes the full decision space; phone initially exposes mostly New records and reduces New lead to a plus icon. (/#/)

Visual specificity before deductions B. Weighted design base B. Distinct signal deductions 1.

Product specificity supplies 55% of the base, and the five visual design dimensions share 45%. Round the base to the nearest letter. Each distinct verified generic signal lowers it by one letter, down to F. Foundations are reported separately. The detector ceiling is B. Vision reviewed 3 of 3 measured routes.

Template copy · not observed
No instance was identified in the reviewed views.
Gradient hero · not observed
No instance was identified in the reviewed views.
Emoji bullets · not observed
No instance was identified in the reviewed views.
Default shadcn grays · −1
8 separate visible panels repeat the same near-default neutral border, fill, width and corner treatment. (/#/insights, 1440 px, Detector and vision.)
Purple on white · not observed
No instance was identified in the reviewed views.
Centered everything · not observed
No instance was identified in the reviewed views.

Compared with the 2026 references

  • /#/ · Like client-portal-2, desktop pairs strong headings with responsible people and contextual details. Phone loses the broader workspace overview because stage choices fall outside the viewport. Commercial grade: C after the observed default-grays deduction from B; no overall A is supported across both widths. OpenProject · project workspace overview
  • /#/leads · Like the OpenProject workspace overview, desktop Funil places responsibility beside work objects. At 390, owner information is absent from the visible table, weakening that context. Neither capture establishes whether inspecting a lead preserves the surrounding list. OpenProject · project workspace overview
  • /#/insights · Like client-portal-2, Funil uses strong panel headings and responsibility context: desktop shows pipeline value by owner. At 390, that ownership context is below the opening view. The reference places controls beside corresponding content; these captures do not establish a direct route from a stage or owner summary to its leads. OpenProject · project workspace overview

Visual design

Hierarchy
C
At 1440, summary metrics precede six clearly labeled stages. At 390, metrics remain readable, but the wide board hides most stage choices and makes pipeline comparison cumbersome. (/#/)
Typography
B
Both widths distinguish company names, contact names, next actions and bold monetary values. Small source badges and muted metadata are subordinate; control text above the board is unreadable in both captures. (/#/)
Spacing
B
Desktop has consistent column gutters and compact, separated cards. Phone cards have comfortable internal spacing, but oversized columns expose only a sliver of the next stage. (/#/)
Copy and labels
C
“Send intro deck” and “Legal review of contract” provide useful record-specific direction at 1440; phone retains concrete New-stage actions. Search and neighboring controls lack readable text in both images, and mobile creation loses its visible label. (/#/)
Imagery
N/A
This text-led pipeline requires no artwork. Stage dots and initials support record scanning at both widths.

Foundations · A

Contrast, responsive layout and keyboard reach are sampled separately. The foundations grade is the lowest verified result in this group.

Color contrast
A
At least four opaque text samples per view passed the contrast threshold. Verified across 7 measured views.
Responsive layout
A
All sampled viewports fit without horizontal overflow and contained readable text. Verified across 7 measured views.
Keyboard access
A
Tab reached two visibly focused controls and Shift+Tab returned to the first. Verified across 7 measured views.

Fix these first

  1. Give the primary task, supporting information and actions distinct visual roles.Product specificity · /#/insights · 1440 px

Evidence from the screens

Gray blocks conceal form values or sensitive text. Numbered outlines identify measured issues.

Captured /#/ at 390 pixels wide
/#/ · 390 × 844

No issue was detected in this view.

Captured /#/ at 1440 pixels wide
/#/ · 1440 × 900 · Original JPEG

No issue was detected in this view.

Captured /#/leads at 1440 pixels wide
/#/leads · 1440 × 900

No issue was detected in this view.

Independent task review

The reviewer assesses each route against its user task using desktop and phone evidence. Its task grades describe the interaction evidence available for that route.

/#/

Audit Funil’s working sales pipeline at /#/. Find leads, inspect their stage and value, and identify the next action. Lumen Studio is New, worth $4,200, with “Send intro deck” as its next action.

Reviewed at 1440 × 900 and 390 × 844.

Task hierarchy
C
At 1440, six stages, totals and record actions are visible together. At 390, New dominates and Contacted is clipped; later stages require navigation beyond the opening view. The search and adjacent control text are unreadable in both captures.
Landing message
N/A
This is an internal working pipeline, not a public product landing page.
Interaction feedback
Unverified
Checks establish that Tab reached a visible target at both widths. No recorded lead opening, creation, stage change, save confirmation or persistence outcome was supplied.
Access and recovery
C
At 1440, New lead and Reset demo data have visible labels. At 390, creation becomes an icon and the board extends beyond the viewport without a visible navigation cue. Keyboard reach across stages, accessible icon names and reset recovery remain unverified.
Release evidence
Unverified
Local captures and checks establish one primary heading at each width, 58 visible desktop controls, 21 phone controls and one visible Tab target each. They do not establish complete workflows, deployment status or cross-browser behavior.

First action

At 390, add an explicit stage selector above the board so users can reach Proposal, Negotiation, Won and Lost predictably while retaining stage counts and totals.

How to verify At 390 × 844, select Negotiation and confirm Quanta Labs, $18,000 and “Legal review of contract” are fully readable. Repeat by keyboard and verify visible focus. At 1440 × 900, confirm all six columns remain visible. Measure contrast separately; captures do not establish contrast compliance.

/#/leads

Audit Funil’s working Leads interface at /#/leads: find leads, compare sales stages and values, and inspect a lead or the Pipeline view.

Reviewed at 1440 × 900 and 390 × 844.

Task hierarchy
C
1440: Leads, 16 records, descending value order and New lead are clear; filter text is unreadable. 390: company, stage and value remain readable, but owner and created date are absent from the capture, and New lead becomes an unlabeled plus.
Landing message
N/A
This is an internal lead-management screen, not a public product landing page.
Interaction feedback
Unverified
Both checks report reaching a visible Tab-focus target. No lead opening, filtering, sorting, creation or Pipeline navigation outcome was supplied.
Access and recovery
C
At both widths, search and adjacent filter labels cannot be read in the supplied images. At 390, the creation control shows only a plus. A visible focus target was reached at each width; complete keyboard access, accessible names and recovery remain unverified.
Release evidence
Unverified
The local captures establish the route’s appearance at 1440 × 900 and 390 × 844. Checks report one primary heading and 22 desktop/19 mobile visible controls. Functional completion, persistence and deployed behavior were not established.

First action

First determine why search and filter text is obscured at both widths. Restore readable labels if the obstruction is in the interface; otherwise provide an unobscured observation. Then verify that a lead can be opened for inspection.

How to verify At 1440 and 390, confirm readable search/filter labels, filter for an existing company, and open its record using pointer and keyboard. Verify the resulting record matches the selection. Separately check mobile access to owner/date, the plus button’s accessible name, full keyboard reach and measured color contrast.

/#/insights

Audit Funil’s working Insights interface at /#/insights. The task is to find leads and inspect the sales pipeline. No individual lead is shown; the relevant summary is 11 open deals worth $85,500. The next visible step toward a lead record is Leads or Pipeline.

Reviewed at 1440 × 900 and 390 × 844.

Task hierarchy
B
1440: four summary metrics precede readable stage, owner and source breakdowns; all fit in view. 390: metrics remain prominent in a two-column grid, but only the funnel and part of stage value appear above the fold. Leads and Pipeline remain visible; no lead-level drill-down is established.
Landing message
N/A
This is an internal sales analytics screen, not a public product landing page.
Interaction feedback
Unverified
The supplied checks record a visible Tab target at both widths. No activation and resulting state were recorded for Leads, Pipeline, New lead, theme switching or Reset demo data.
Access and recovery
B
1440: New lead has a text label and the browser-only data notice and reset link are visible. 390: New lead becomes a plus-only control; its accessible name is unverified. Both checks reached a visible focus target, but complete keyboard reach and reset recovery were not exercised.
Release evidence
Unverified
The supplied local captures establish rendered content at 1440 and 390, with one primary heading and respectively seven and six visible controls. They do not establish persistence, production deployment, cross-browser behavior or completed lead workflows.

First action

First record the missing lead-navigation outcome: at 390, activate Leads and open one record. Repeat at 1440. Establish whether the person can move from the pipeline summary to the lead they need before prescribing a navigation repair.

How to verify At each width, verify that Leads opens the list, a record opens with its sales stage, and returning preserves a usable Insights view. Record keyboard focus through that path. Separately measure text/control contrast and check accessible names for the mobile plus and theme controls. The captures show narrow-layout reflow; full-page responsiveness and complete keyboard reach remain unverified.

What a repair could look like

Folio is an agent-built client portal demo. Both captures show the same task.

Folio before the rebuild
Before
Folio after the rebuild
After
Compare Folio at both widths →