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:
- Look at the current
FeedbackPanel behavior in the running app (both full and compact states, and the post-submit thank-you state).
- 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.
- Update this issue with your findings and a proposed plan (what changes, why, and roughly how big). Don't open a PR yet.
- 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.
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 twolocalStorageflags (ocv_feedback_seen,ocv_feedback_submitted) viausePersistentFlag/usePersistentCounter.feedback_submittedPostHog event (src/lib/analytics.ts) — anonymous unless the user opts in with an email.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:
localStorage-only state the right memory model, or should "seen"/"submitted" reset per résumé rather than per browser?Some starting ideas — not a spec, just angles worth checking:
Cardimmediately.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:
FeedbackPanelbehavior in the running app (bothfullandcompactstates, and the post-submit thank-you state).Not in scope (yet)
feedback_submittedevent shape/analytics pipeline.