Skip to main content

QA Report โ€” 2026-05-02

Branch: dev
Tester: Claude (automated browser QA)
Target: https://humanwork-dev.vercel.app
Tested: 2026-05-02
Screenshots: /tmp/qa-screenshots/ (01โ€“36)


Executive Summaryโ€‹

FlowResultBlocker
Flow 1: AM Setup โ†’ Client OnboardingPARTIALStep 2 (Assign Specialists) completely blocked โ€” all seed specialists already assigned
Flow 2: Client Portal โ€” Chat ExperiencePASSMinor issues: accent color wrong, billing page empty, thread not renamed
Flow 3: Expert QueuePARTIALAnalytics broken, resolved items missing from Resolved tab, queue polluted with error items

FLOW 1: AM Setup โ†’ Client Onboardingโ€‹

Overall: PARTIAL

Step-by-Stepโ€‹

Step 1 โ€” Login as AM

  • PASS: Clicked "Login as Account Manager" in debug panel โ†’ redirected to /am/orgs
  • PASS: Sidebar shows "h.work / Account Manager", footer shows am@seed.humanwork.ai
  • Note: Seed email is am@seed.humanwork.ai, not am1@humanwork.dev as documented

Step 2 โ€” AM Orgs List

  • PASS: Shows 3 existing orgs (Apex S, Apex R, Apex Q), all "Setup in progress"
  • PASS: "+ New client" button navigates to /am/orgs/new
  • Note: Trial ends date only populated for Apex S (8/1/2026); Apex R and Q show "โ€”"

Step 3 โ€” New Org Form (Step 1: Company Info)

  • PASS: Form loads with all required fields: Company Legal Name, Workspace Slug, Industry, Primary Corporate Email Domain(s), Invite Email Address, Timezone
  • PASS: Slug availability check works in real-time โ€” shows green "Available!" with preview URL
  • PASS: Domain field accepts Enter-key to create tag pill
  • PASS: Email domain validation enforced โ€” "Invite email must use an approved corporate domain." shown correctly when email doesn't match added domain
  • PASS: "Continue to Assign Specialist โ†’" button enables when all required fields are filled
  • PASS: Org created successfully โ†’ redirected to /am/orgs/[uuid]/setup/step2
  • ISSUE (P2): border: "1px solid var(--sand)" visible in domain input pill โ€” old token still rendering (tag background is blue-ish, not neutral)

Step 4 โ€” Assign Specialists (Step 2)

  • FAIL โ€” P0 BLOCKER: Every specialist assignment attempt returns HTTP 400: {"message":"This Specialist is already assigned to an active Org","error":"Bad Request","statusCode":400}
  • Tested: Bob Smith, Ellis Test, Alex Dev, Atlas Rivera, Finn A (finn49828) โ€” ALL fail with same error
  • ISSUE (P0): "Available" badge shown in green on ALL specialists regardless of assignment status โ€” completely misleading
  • ISSUE (P1): Error displayed as raw JSON string in page DOM, not a toast or styled error message: {"message":"This Specialist is already assigned to an active Org","error":"Bad Request","statusCode":400}
  • ISSUE (P0): No specialists in the seed pool are assignable to a new org. Flow is completely blocked.
  • Direct navigation to /am/orgs/[uuid]/setup/step3 returns 404 (no bypass possible)

Steps 5โ€“10 (Your Profile, Send Invite): NOT REACHED โ€” blocked by step 2

Top 3 Critical Issues (Flow 1)โ€‹

  1. P0 โ€” ALL seed specialists already assigned to an active org; Step 2 of setup wizard is completely uncompletable with current seed data
  2. P0 โ€” "Available" badge displayed on specialists who are not available โ€” no visual distinction between assignable and non-assignable experts
  3. P1 โ€” Assignment failure displays raw JSON error, not a human-readable message

FLOW 2: Client Portal โ€” Chat Experienceโ€‹

Overall: PASS

Step-by-Stepโ€‹

Step 1 โ€” Login as Client

  • PASS: Clicked "Login as Client" โ†’ redirected to /portal/chat
  • Note: Debug client is ceo@techcorp.io (techcorp org), not amy@acmefinancial.com as documented in seed credentials

Step 2 โ€” Portal Landing

  • PASS: URL is /portal/chat โœ“
  • PASS: Sidebar shows org slug "techcorp.h.work" with icon
  • PASS: "YOUR SPECIALISTS" section present with Nova Jones as "Primary specialist"
  • PASS: "YOUR THREADS" section with "+ New Thread" button
  • ISSUE (P1): All interactive buttons ("+New Thread", "Message", specialist avatar) render in blue (#3B82F6 approx), not Claret (#7E1D1D). Root cause: --accent CSS variable not resolving to Claret on the deployed instance. This affects every accent-colored element site-wide.

Step 3 โ€” Thread Creation

  • PASS: "+ New Thread" creates a new conversation
  • PASS: URL updates to /portal/chat/[uuid]
  • PASS: Chat view opens with "Nova is ready โ€” what can they help with?" empty state
  • PASS: Header shows "Nova ยท Online ยท Support Specialist ยท Active ยท Web" correctly
  • ISSUE (P2): Thread name remains "New thread" in sidebar โ€” not auto-renamed from first message content

Step 4 โ€” Sending a Message

  • PASS: Input field accepts text; send button activates (stops being disabled)
  • PASS: Message sent: "Hi Nova, I need help with a shipping delay for order #MLD-8821"
  • PASS: User message bubble appears immediately on the right side
  • ISSUE (P1): User message bubble is blue, not Claret โ€” confirms --accent token broken site-wide

Step 5 โ€” AI Auto-Response

  • PASS: AI response arrived within ~5 seconds
  • PASS: Response shows "Nova ยท AI ยท just now" label
  • PASS: Agent bubble renders correctly (dark card, left-aligned)
  • Response text: "Hi! I'm the support assistant. I've received your message and will help you shortly. Could you tell me more about your issue?"

Step 6 โ€” UserFooter Links

  • PASS: "Account Settings" link navigates to /portal/admin/settings
  • PASS: "Billing" link navigates to /portal/admin/billing
  • ISSUE (P2): Account Settings and Billing use a completely different layout (old-style admin panel with top nav + left sidebar) vs the portal chat (full-screen with sidebar). Jarring UX context switch.
  • ISSUE (P2): Settings page shows "Organization Name: Acme Corp" but the portal shows slug "techcorp.h.work" โ€” org name and slug are inconsistent
  • ISSUE (P2): Default Agent Name in settings is "Alex" but the actual AI responder was called "Nova" โ€” mismatch
  • ISSUE (P1): Billing page โ€” "PLAN & USAGE", "RATE LIMITS", and "MESSAGE VOLUME (LAST 24H)" sections all render completely empty. No data, no loading state, no error message. Only "Plan Features" checklist renders.
  • ISSUE (P2): "Log out" button on /portal/admin/* pages does not redirect to /login โ€” stays on the billing page URL

Top 3 Critical Issues (Flow 2)โ€‹

  1. P1 โ€” --accent CSS variable resolves to blue everywhere instead of Claret; affects user message bubbles, all CTAs, logos, badges platform-wide
  2. P1 โ€” Billing page three data sections (Plan & Usage, Rate Limits, Message Volume) are completely blank with no feedback
  3. P2 โ€” Account Settings/Billing use old layout (jarring switch), org name/agent name inconsistencies, Log out doesn't work on admin pages

FLOW 3: Expert Queueโ€‹

Overall: PARTIAL

Step-by-Stepโ€‹

Step 1 โ€” Login as Expert

  • PASS: Clicked "Login as Expert" โ†’ redirected to /workspace/queue
  • Note: Debug expert is expert1@humanwork.dev โ†’ "David Kim" (per Settings)

Step 2 โ€” Queue Landing

  • PASS: URL is /workspace/queue โœ“
  • PASS: Queue loads with pending items and badge count
  • ISSUE (P1): ALL 6 queue items show title "Agent service error: fetch failed" and are tagged CRITICAL. These are not real user conversations โ€” they appear to be webhook/API errors that got escalated as support tickets. No normal-priority or human-initiated queue items in seed data.
  • PASS: Filter tabs (Pending / In Review / Resolved) visible
  • PASS: Priority filters (All / Critical / High / Medium) functional

Step 3 โ€” Ticket Detail View

  • PASS: Clicking a queue item loads the detail panel on the right
  • PASS: "CUSTOMER CONVERSATION" section shows conversation messages
  • PASS: "AI SUGGESTION" section shows: confidence bar (72%), risk label (MEDIUM), draft text, action buttons
  • PASS: "INTERNAL COLLAB (HIDDEN FROM CUSTOMER)" section visible with note textarea
  • PASS: Bottom composer shows "Write response as [Agent Name]..." with Send/Resolve/Defer/Reassign buttons
  • Note: Different tickets show different agent personas (Max, Mei) โ€” persona assignment per ticket, not per expert user

Step 4 โ€” Accept & Send

  • PASS: Button clicked โ†’ shows "Sending..." loading state
  • PASS: After completion, item removed from pending queue (count 6 โ†’ 5)
  • ISSUE (P1): No success toast or confirmation message after Accept & Send
  • ISSUE (P2): View does not auto-advance to next pending ticket after action

Step 5 โ€” Internal Note

  • PASS: Typed note in "Add internal note..." field โ†’ "+ Note" button enabled
  • PASS: Note submitted โ†’ appears as "You ยท 0s ago" with note text in INTERNAL COLLAB section
  • PASS: Note appears with distinct styling (yellow "Y" avatar, dark card)
  • PASS: Cross-session data working: client message from Flow 2 appeared in expert ticket view

Step 6 โ€” Resolve

  • PASS: "Resolve" button clicked โ†’ ticket removed from Pending queue (count 5 โ†’ 4)
  • ISSUE (P1): Resolved items do NOT appear in the "Resolved" tab โ€” tab shows "Queue is clear / Nothing pending right now"
  • ISSUE (P2): "RESOLVED 0" counter in queue sidebar does not update after resolving items

Step 7 โ€” Workspace Settings

  • PASS: Navigates to /workspace/settings
  • PASS: "Profile Settings" page loads with full name, display name, email (read-only), title, bio, avatar URL, phone fields
  • PASS: Correct user info (David Kim / expert1@humanwork.dev)
  • PASS: "Save changes" button present

Step 8 โ€” Workspace Analytics

  • PARTIAL: Page loads at /workspace/analytics
  • ISSUE (P1): Red error banner: "Analytics data unavailable. Contact your administrator if this persists."
  • ISSUE (P1): All stat cards show 0: Conversations This Week (0), Queue Depth (0), Avg Resolution Time (โ€”), Total This Month (0) โ€” even though 4 items are in the queue
  • ISSUE (P1): All chart sections show "No data available": Queue Status (Pending vs Resolved), Top Request Types, Pool Resolution Performance

Top 3 Critical Issues (Flow 3)โ€‹

  1. P1 โ€” Analytics endpoint broken; all data 0 or unavailable
  2. P1 โ€” Resolved items disappear instead of appearing in Resolved tab; resolved counter never increments
  3. P1 โ€” Queue polluted with "Agent service error: fetch failed" CRITICAL items โ€” no real-world conversations in seed data for expert testing

GLOBAL / CROSS-CUTTING ISSUESโ€‹

Design System (from iteration/autorun-20260501-07)โ€‹

  • P1 โ€” --accent CSS variable resolves to browser-default blue (#3B82F6 approx) everywhere instead of Claret (#7E1D1D). Likely the deployed build is not picking up the new globals.css or the Tailwind/CSS var isn't being overridden correctly. Affects:
    • Login "Send Code" button, "H" logo icon
    • Portal "+ New Thread" button, user message bubbles, "Message" button
    • Workspace nav active indicators, avatar backgrounds, "Accept & Send" button
    • AM sidebar "H" logo, "+ New client" button, "Continue setup" links
  • P2 โ€” Dark mode active by default (browser system preference = dark). ThemeProvider + flash prevention script appear to work correctly (no flash observed). Theme toggle not tested due to test flow focus.
  • P2 โ€” Some legacy tokens (--sand, --bg-canvas) still referenced in deployed components. The domain tag pill in AM new-org form appears to use residual old styling.

Seed Data Qualityโ€‹

  • P0 โ€” All experts already assigned to an org; Assign Specialists step is universally blocked
  • P1 โ€” Expert queue contains only error-generated "Agent service error: fetch failed" tickets; no normal conversations
  • P2 โ€” Duplicate test entries in specialist pool (Finn A ร— 6+, Jordan Test ร— 8+) โ€” noise in specialist search
  • P2 โ€” Credential docs say amy@acmefinancial.com for client but debug login delivers ceo@techcorp.io; am1@humanwork.dev for AM but actual is am@seed.humanwork.ai

PRIORITY LISTโ€‹

P0 โ€” Blockers (flow completely broken)โ€‹

  1. Assign Specialists: all seed specialists already assigned โ€” Step 2 of AM onboarding wizard is 100% blocked. Either the seed data needs to be reset (unassign all specialists from Apex orgs) or the one-org-per-specialist business rule needs to be relaxed for seed data. The setup wizard cannot be completed by any new org.
  2. "Available" badge shown on assigned specialists โ€” The pool list shows Available on every card even when the assignment call returns 400. The badge must reflect actual assignability, not presence in the pool.

P1 โ€” Major Issues (flow works but with significant friction)โ€‹

  1. --accent token resolves to blue site-wide โ€” All accent-colored UI (buttons, bubbles, logos, highlights) is blue instead of Claret. Investigate: is globals.css being correctly loaded on Vercel? Does the deployed bundle have the --accent: #7E1D1D definition? Check with browser DevTools on prod.
  2. Raw JSON error on specialist assignment failure โ€” The DOM renders {"message":"...","statusCode":400} as visible text. This needs to be caught and displayed as a toast or inline error in human-readable form.
  3. Analytics broken โ€” /workspace/analytics shows "Analytics data unavailable" and all-zero stats. The analytics API endpoint is failing. Queue depth shows 0 even though 4 items are pending.
  4. Resolved items disappear, not archived โ€” After resolving a ticket via the Resolve button, it is removed from Pending but does not appear in the Resolved tab. The Resolved counter stays at 0. Items are being lost rather than archived.
  5. No Accept & Send feedback โ€” Action succeeds silently. User has no confirmation that the message was sent. Add a success toast: "Response sent."
  6. Billing page data sections blank โ€” Plan & Usage, Rate Limits, Message Volume all render empty with no loading state or error. The billing API calls are failing silently.

P2 โ€” Polish (works but feels rough)โ€‹

  1. Thread not auto-renamed from first message โ€” New threads stay named "New thread" after client sends a message. Auto-name from message content or allow rename prompt.
  2. No auto-advance after queue action โ€” After Accept & Send or Resolve, the view drops to an empty "Select a ticket" state rather than advancing to the next pending item.
  3. Account Settings / Billing use old layout โ€” Navigating from the portal chat to settings/billing causes a jarring full-page layout change (old admin panel with top nav vs full-screen chat UI). These should share the same visual shell.
  4. Org name / Agent name inconsistency โ€” Settings shows "Org Name: Acme Corp" but portal slug is "techcorp.h.work". Default Agent Name "Alex" doesn't match the actual AI persona "Nova". Seed data coherence issue.
  5. Log out broken on /portal/admin/ pages* โ€” Clicking "Log out" on the admin panel pages doesn't redirect to /login.
  6. "RESOLVED 0" counter never updates โ€” Stats widget in the queue sidebar shows static 0 even after resolving items in the session.
  7. Duplicate test experts in specialist pool โ€” 6+ "Finn A" accounts, 8+ "Jordan Test" accounts pollute the Assign Specialists step 2 list, making it hard to find real specialists.

P3 โ€” Nice to Haveโ€‹

  1. Seed credential docs should match actual debug login users (acmefinancial โ†’ techcorp, am1 โ†’ am@seed)
  2. Queue badge on "Expert Queue" heading always shows pending count regardless of which tab is active (Resolved tab shows badge "4" which is the pending count)
  3. Portal UserFooter theme toggle could be visible without scrolling in shorter viewports
  4. Consider adding a "Deselect" or "Clear" option on the Assign Specialists step so AM can start fresh without refreshing

Screenshots Indexโ€‹

FileDescription
01-login.pngLogin page dark mode
02-am-landing.pngAM /am/orgs list
03-new-client.pngNew org step 1 form
04-new-client-filled.pngForm filled, domain input
05-domain-added.pngDomain tag added, email validation error
06-invite-valid.pngValid form, continue button enabled
07-step2-specialists.pngStep 2 loading spinner
08-after-step1-submit.pngStep 2 loaded
08b-step2-specialists.pngStep 2 full viewport
09-step2-full.pngSpecialist pool 1440px view
10-bob-selected.pngBob Smith selected
11b-step2-error.pngRaw JSON error visible
12-step3-profile.pngEllis also fails
13-step3-or-error.pngFinn A also fails
17-client-landing.pngClient portal initial
18-portal-chat.pngPortal chat /portal/chat
19-new-thread.png"Starting..." state
20-thread-created.pngThread created, chat open
21-message-typed.pngMessage in input
22-message-sent.pngUser bubble sent
23-waiting-response.pngAI response received
24-account-settings.png/portal/admin/settings
25-billing.png/portal/admin/billing empty sections
26b-expert.pngExpert queue with error items
27-accept-send.png"Sending..." state
28-after-accept-send.pngAfter send (no toast)
30-ticket-detail.pngTicket with internal note area
31-internal-note-sent.pngNote submitted successfully
34-resolved-tab.pngResolved tab empty ("Queue is clear")
35-workspace-settings.pngExpert profile settings
36-analytics.pngAnalytics broken (all zeros)