Recruiter Copilot · QA Run
💾
Your progress saves as you go. Close the tab, lose your wifi, crash the browser: come back to this page and everything you ticked is still here. Nothing is sent anywhere until you press Submit.
🚦

Before you start

0/6
S0.1 Use a fresh Chrome profile (Chrome menu → Profile → Add). A profile you have used before carries old storage and hides first-run bugs.
S0.2 Load the build: chrome://extensions → Developer mode on → Load unpacked → select chrome_extension/
S0.3 Pin the extension to the toolbar
S0.4 Have a fresh email alias ready: you+rc<today><n>@gmail.com, e.g. you+rc0926a@gmail.com. Never reuse one. A reused address already has an account and skips the whole sign-up path.
S0.5 Open the popup's console: right click the popup → Inspect. Keep it open for the whole run. Any red error is a finding, even if the screen looks fine.
S0.6 Have two LinkedIn profiles open in tabs: one that clearly matches your test JD, one that clearly does not.
⚡

Tier 1 · Smoke

0/14
S1 Extension loads with no errors on the chrome://extensions card
S2 Click the icon — popup opens, roughly 448 wide, nothing cut off at the bottom
S3 The launch screen plays its animation and does not freeze or stutter
S4 Click the main button — you are asked to create an account, not taken straight to JD upload
S5 Sign up with a fresh alias — you land on the dashboard, signed in
S6 The header shows your account, not a "Sign In" link
S7 The welcome email arrives (check inbox and spam)
S8 Upload a JD file — analysis finishes and shows extracted criteria
S9 Activate it — it appears under Watching
S10 Open a matching LinkedIn profile — the sidebar appears with a score
S11 Run AI verification on that profile — a verdict comes back
S12 The credit counts in the popup went down by 1 JD and 1 verification
S13 Close and reopen the popup — you are still signed in, the JD is still there
S14 No red errors in the popup console or the LinkedIn page console
📦

A · Install and first run

0/7
A1 Load unpacked — the icon appears, the card shows no errors
A2 chrome://extensions → "Inspect views: service worker" → console is clean
A3 Click the icon — the popup opens, ~448x600, no scrollbar on first paint
A4 Nothing is cut off at the bottom of the popup
A5 Open any LinkedIn profile — the minimised Copilot button appears
A6 Reload the extension — popup and sidebar both still work
A7 Disable, then re-enable — both recover without a browser restart
🔐

B · The sign-in gate

0/9
B1 The launch screen shows "How it works" and three numbered steps
B2 The demo animation plays a LinkedIn page on the left and the Copilot panel on the right
B3 The animation loops smoothly. No freeze, no jump, no blank frame. Watch it for three full loops.
B4 The three steps underneath light up in time with the animation, one at a time
B5 The main button reads "Create free account"
B6 The free allowance is stated as 5 JD analyses and 10 AI verifications
B7 There is no claim that sign-up is optional anywhere on screen
B8 "Already have an account? Sign in" is present and opens the sign-in form
B9 The setup guide link opens the guide in a new tab
✉️

C · Sign up, and the welcome email

0/16
C1 Click "Create free account" — the sign-up form opens
C2 Submit it empty — you get a clear validation message, not a silent failure
C3 Enter a malformed email — you get a clear message
C4 Enter a 3-character password — you are told the minimum
C5 Sign up with your fresh alias — the button shows a loading state
C6 You land on the dashboard, signed in. No code is requested. (See the note above.)
C7 The header shows your account, not "Sign In"
C8 The header shows your remaining credits
C9 A welcome modal appears and states 5 and 10, matching B6
C10 The welcome email arrives. Check spam too.
C11 It is from copilot@refine-cv.com and the name reads "Recruiter Copilot"
C12 Hit Reply — it addresses founder@recruitaisuite.com, not the sender
C13 The three numbered steps are indented correctly and readable
C14 "Start the walkthrough" opens the guide
C15 "Book a 15-min demo" opens a working cal.com page, not a 404
C16 Open it on a phone — it is readable without sideways scrolling
📄

D · Adding a job description

0/14
D1 Click Add Job Description — the upload screen opens
D2 Upload a PDF — the filename appears
D3 Remove the file — the upload zone resets
D4 Upload a DOCX — accepted
D5 Try a .png — rejected with a clear message, not a crash
D6 Try a file over the size limit — rejected with a clear message
D7 Submit with nothing attached — you are told to add something
D8 Paste JD text instead of a file — accepted
D9 Paste 3 words — rejected as too short, with a reason
D10 Upload a real JD — the analysing screen appears
D11 The analysing screen animates and does not look frozen
D12 It finishes in under 30 seconds
D13 Go offline mid-analysis — you get a readable error, not a blank screen or a stuck spinner
D14 Back online, retry — it succeeds
🧾

E · Review the criteria

0/10
E1 Extracted job titles, must-have skills, nice-to-have skills, domain keywords and certifications all display
E2 The values actually reflect the JD you uploaded. Read them.
E3 Add a skill — it appears as a tag
E4 Remove a skill — it disappears
E5 Clear all role titles and try to activate — you are stopped with a reason
E6 Clear all must-have skills and try to activate — you are stopped with a reason
E7 Restore them, then click Activate once
E8 You land on the dashboard, Watching tab
E9 Double-click Activate on the next JD you add. It must activate once, with no error toast.
E10 Cancel from the review screen — you go back with your JD text preserved
📊

F · Dashboard

0/10
F1 Watching shows the JD you just activated
F2 It shows the correct title and criteria summary
F3 Pause it — it stops being watched, visibly
F4 Resume it — it is watched again
F5 All Jobs lists every JD, active and paused
F6 Toggle a JD active from All Jobs — no error toast appears
F7 Matches is empty, with a message that explains what to do, not a blank panel
F8 Delete a JD — you are asked to confirm first
F9 Confirm — it is gone from every tab
F10 Tab choice survives closing and reopening the popup
🔎

G · The LinkedIn sidebar

0/14
G1 On a non-profile LinkedIn page (feed, search) — the sidebar does not claim a match
G2 Open a matching profile — the sidebar scores it
G3 Scroll to the bottom of the profile first, then check the score. LinkedIn loads Experience lazily and scoring too early is a real past bug.
G4 The score has a percentage and a green/red skill breakdown
G5 The matched skills are genuinely in the profile. Read them.
G6 Open a clearly unsuitable profile — it shows a low match, and does not pretend otherwise
G7 Minimise the sidebar — it collapses to the button
G8 Expand it again — the same result is still there, not re-scored from scratch
G9 Navigate to another profile — it resets and scores the new person
G10 Go back to the first profile — the score returns quickly, without a full re-analysis
G11 Two LinkedIn tabs at once — each shows its own profile's result, not the other's
G12 With two JDs active, a profile matching both shows a multi-match view
G13 LinkedIn Recruiter, if you have a seat — no false matches
G14 Reload a LinkedIn tab that was open before you installed — the sidebar appears
🤖

H · AI verification

0/9
H1 Click Verify on a match — the evaluating screen appears
H2 It animates and does not look frozen
H3 A verdict returns with a rating and written reasoning
H4 The reasoning refers to that actual candidate, not generic filler
H5 Strengths and gaps are both shown
H6 Verify the same candidate again — it returns instantly from cache and does not spend a second credit
H7 The verification count in the header went down by exactly 1
H8 Go offline and verify — readable error, no stuck spinner
H9 The result is still there after closing and reopening the popup
🔻

I · Exhausting the free allowance

0/11
I1 Upload JDs until you have used all 5. Count them.
I2 The header count decreases by exactly 1 each time, never 0, never 2
I3 After the 5th, try a 6th — you land on a dedicated out-of-credits screen, not a JD form with a warning bolted on
I4 That screen offers exactly two things: upgrade, and back to dashboard
I5 "Back to dashboard" works
I6 Reopen the popup — it still says you are out, it has not silently reset
I7 Run verifications until all 10 are used
I8 The 11th shows the out-of-verifications screen
I9 The sidebar also reflects depleted credits rather than failing silently
I10 Close the browser entirely, reopen, sign back in. You are still out of credits. The allowance is one-time and must not refill.
I11 Nothing anywhere promises a monthly reset
💳

J · Upgrading to Pro

0/11
J1 Click Upgrade — the checkout opens
J2 It states $9/month and unlimited
J3 Use the payment provider's test card only. Never a real card.
J4 Complete a test payment
J5 You return to a confirmation page, not a "blocked by Chrome" error
J6 Reopen the popup — you are on Pro
J7 The header shows Pro, and no longer counts down credits
J8 Upload a JD — it works, with no limit screen
J9 Run a verification — it works
J10 Do 3 more of each — still no limit
J11 Cancel the test subscription — you are told what happens and when
💬

K · Feedback

0/5
K1 Open Send Feedback
K2 Submit it empty — you are stopped with a reason
K3 Submit real text — you get a visible confirmation
K4 Confirm it arrived on our side before ticking this
K5 Reopen the form — it is empty again, not holding the last message
🔀

L · Two accounts on one browser

0/9
L1 While signed in as account A, note its JDs and matches
L2 Sign out
L3 Sign up as a new account B with a fresh alias, same browser
L4 Account B's dashboard is empty. It must show none of A's job descriptions.
L5 Matches is empty for B
L6 B has its own full allowance, 5 and 10
L7 Upload a JD as B
L8 Sign out, sign back in as A — A sees its own JDs, and none of B's
L9 A's credit counts are its own, unchanged by B's usage
♻️

M · Lifecycle and resilience

0/8
M1 Reload the extension while the popup is open — no broken state afterwards
M2 Sign out, then reopen the popup — you are at the sign-in gate, no stale data visible
M3 Turn the network off and open the popup — a readable message, not a blank screen
M4 Leave the popup open 5 minutes, then act — no silent sign-out
M5 Open the popup from a non-LinkedIn tab — it still works
M6 Restart Chrome — you are still signed in
M7 Every screen: nothing overflows, no text is clipped, no button is off-screen
M8 Every screen: no placeholder text, no "undefined", no "null", no "[object Object]"
🧹

N · Final sweep

0/5
N1 Popup console: no red errors across the whole run
N2 LinkedIn page console: no red errors
N3 Service worker console: no red errors
N4 No unexpected alert popped in Slack during the run
N5 Re-read anything you ticked while unsure, and re-test it

Submit this run?