Skip to content

Feedback session UX: research + propose flow for the always-visible feedback widget #912

Description

@s-annam

Context

From the 2026-08-27 Intern Weekly sync: the feedback widget (FeedbackPanel.tsx) was recently changed to render at all times post-parse instead of only in specific situations. The star rating → email/comment/refinement flow works, but we haven't done real UX thinking on the session itself — when it shows, how intrusive it feels across a visit, and whether the flow after a 5-star vs. a 1-star rating should diverge.

Current implementation for reference:

  • src/components/features/FeedbackPanel.tsx — the panel itself. Render-state machine: full (first two mounts) → compact (quiet inline star strip after that) → done (once submitted). Driven by two localStorage flags (ocv_feedback_seen, ocv_feedback_submitted) via usePersistentFlag/usePersistentCounter.
  • Fires a single feedback_submitted PostHog event (src/lib/analytics.ts) — anonymous unless the user opts in with an email.
  • Rendered inside Result.tsx, directly under the score card.

Problem

We don't have a strong opinion yet on whether the current visible-always behavior is actually the right session design — it was a quick change, not a researched one. Things worth interrogating:

  • Does showing it on every single mount (even before "compact" kicks in) feel naggy on a repeat visit in the same session?
  • Should the flow branch by rating — e.g. a low rating should probably route toward "what went wrong" free text before anything else, where a high rating could skip straight to the GitHub-star CTA?
  • Is localStorage-only state the right memory model, or should "seen"/"submitted" reset per résumé rather than per browser?
  • Any accessibility/focus concerns with a panel that appears unprompted post-parse.

Some starting ideas — not a spec, just angles worth checking:

  • A lighter first touch (e.g. just the star row, no card chrome) that only expands into the full form once a rating is picked, rather than showing the full amber Card immediately.
  • Branching copy/flow by rating value instead of one static form for every rating.
  • Consider whether "session" should mean per-résumé-parse rather than the current seen-count-across-mounts model.

What to do

This is intentionally open-ended — we don't have enough detail yet to hand over a fixed spec. First task is not implementation:

  1. Look at the current FeedbackPanel behavior in the running app (both full and compact states, and the post-submit thank-you state).
  2. Do a short pass of UI/UX research — comparable feedback-widget patterns elsewhere are fair game — and form your own opinion on what should change and why.
  3. Update this issue with your findings and a proposed plan (what changes, why, and roughly how big). Don't open a PR yet.
  4. Tag @s-annam for review once the plan is written up — we'll discuss and finalize scope together before any code gets written.

Not in scope (yet)

  • Changing the feedback_submitted event shape/analytics pipeline.
  • Anything about the "further refinement flow" downstream of a submission — flag it in your writeup if you think it needs its own issue, but don't fold it into this one.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestux:flowUX program: top-level journey, orientation, and cross-surface navigation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions