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.1Use a fresh Chrome profile (Chrome menu → Profile → Add). A profile you have used before carries old storage and hides first-run bugs.
S0.2Load the build: chrome://extensions → Developer mode on → Load unpacked → select chrome_extension/
S0.3Pin the extension to the toolbar
S0.4Have 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.5Open 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.6Have two LinkedIn profiles open in tabs: one that clearly matches your test JD, one that clearly does not.
⚡
Tier 1 · Smoke
0/14
S1Extension loads with no errors on the chrome://extensions card
S2Click the icon — popup opens, roughly 448 wide, nothing cut off at the bottom
S3The launch screen plays its animation and does not freeze or stutter
S4Click the main button — you are asked to create an account, not taken straight to JD upload
S5Sign up with a fresh alias — you land on the dashboard, signed in
S6The header shows your account, not a "Sign In" link
S7The welcome email arrives (check inbox and spam)
S8Upload a JD file — analysis finishes and shows extracted criteria
S9Activate it — it appears under Watching
S10Open a matching LinkedIn profile — the sidebar appears with a score
S11Run AI verification on that profile — a verdict comes back
S12The credit counts in the popup went down by 1 JD and 1 verification
S13Close and reopen the popup — you are still signed in, the JD is still there
S14No red errors in the popup console or the LinkedIn page console
📦
A · Install and first run
0/7
A1Load unpacked — the icon appears, the card shows no errors
A2chrome://extensions → "Inspect views: service worker" → console is clean
A3Click the icon — the popup opens, ~448x600, no scrollbar on first paint
A4Nothing is cut off at the bottom of the popup
A5Open any LinkedIn profile — the minimised Copilot button appears
A6Reload the extension — popup and sidebar both still work
A7Disable, then re-enable — both recover without a browser restart
🔐
B · The sign-in gate
0/9
B1The launch screen shows "How it works" and three numbered steps
B2The demo animation plays a LinkedIn page on the left and the Copilot panel on the right
B3The animation loops smoothly. No freeze, no jump, no blank frame. Watch it for three full loops.
B4The three steps underneath light up in time with the animation, one at a time
B5The main button reads "Create free account"
B6The free allowance is stated as 5 JD analyses and 10 AI verifications
B7There 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
B9The setup guide link opens the guide in a new tab
✉️
C · Sign up, and the welcome email
0/16
C1Click "Create free account" — the sign-up form opens
C2Submit it empty — you get a clear validation message, not a silent failure
C3Enter a malformed email — you get a clear message
C4Enter a 3-character password — you are told the minimum
C5Sign up with your fresh alias — the button shows a loading state
C6You land on the dashboard, signed in. No code is requested. (See the note above.)
C7The header shows your account, not "Sign In"
C8The header shows your remaining credits
C9A welcome modal appears and states 5 and 10, matching B6
C10The welcome email arrives. Check spam too.
C11It is from copilot@refine-cv.com and the name reads "Recruiter Copilot"
C12Hit Reply — it addresses founder@recruitaisuite.com, not the sender
C13The 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
C16Open it on a phone — it is readable without sideways scrolling
📄
D · Adding a job description
0/14
D1Click Add Job Description — the upload screen opens
D2Upload a PDF — the filename appears
D3Remove the file — the upload zone resets
D4Upload a DOCX — accepted
D5Try a .png — rejected with a clear message, not a crash
D6Try a file over the size limit — rejected with a clear message
D7Submit with nothing attached — you are told to add something
D8Paste JD text instead of a file — accepted
D9Paste 3 words — rejected as too short, with a reason
D10Upload a real JD — the analysing screen appears
D11The analysing screen animates and does not look frozen
D12It finishes in under 30 seconds
D13Go offline mid-analysis — you get a readable error, not a blank screen or a stuck spinner
D14Back online, retry — it succeeds
🧾
E · Review the criteria
0/10
E1Extracted job titles, must-have skills, nice-to-have skills, domain keywords and certifications all display
E2The values actually reflect the JD you uploaded. Read them.
E3Add a skill — it appears as a tag
E4Remove a skill — it disappears
E5Clear all role titles and try to activate — you are stopped with a reason
E6Clear all must-have skills and try to activate — you are stopped with a reason
E7Restore them, then click Activate once
E8You land on the dashboard, Watching tab
E9Double-click Activate on the next JD you add. It must activate once, with no error toast.
E10Cancel from the review screen — you go back with your JD text preserved
📊
F · Dashboard
0/10
F1Watching shows the JD you just activated
F2It shows the correct title and criteria summary
F3Pause it — it stops being watched, visibly
F4Resume it — it is watched again
F5All Jobs lists every JD, active and paused
F6Toggle a JD active from All Jobs — no error toast appears
F7Matches is empty, with a message that explains what to do, not a blank panel
F8Delete a JD — you are asked to confirm first
F9Confirm — it is gone from every tab
F10Tab choice survives closing and reopening the popup
🔎
G · The LinkedIn sidebar
0/14
G1On a non-profile LinkedIn page (feed, search) — the sidebar does not claim a match
G2Open a matching profile — the sidebar scores it
G3Scroll to the bottom of the profile first, then check the score. LinkedIn loads Experience lazily and scoring too early is a real past bug.
G4The score has a percentage and a green/red skill breakdown
G5The matched skills are genuinely in the profile. Read them.
G6Open a clearly unsuitable profile — it shows a low match, and does not pretend otherwise
G7Minimise the sidebar — it collapses to the button
G8Expand it again — the same result is still there, not re-scored from scratch
G9Navigate to another profile — it resets and scores the new person
G10Go back to the first profile — the score returns quickly, without a full re-analysis
G11Two LinkedIn tabs at once — each shows its own profile's result, not the other's
G12With two JDs active, a profile matching both shows a multi-match view
G13LinkedIn Recruiter, if you have a seat — no false matches
G14Reload a LinkedIn tab that was open before you installed — the sidebar appears
🤖
H · AI verification
0/9
H1Click Verify on a match — the evaluating screen appears
H2It animates and does not look frozen
H3A verdict returns with a rating and written reasoning
H4The reasoning refers to that actual candidate, not generic filler
H5Strengths and gaps are both shown
H6Verify the same candidate again — it returns instantly from cache and does not spend a second credit
H7The verification count in the header went down by exactly 1
H8Go offline and verify — readable error, no stuck spinner
H9The result is still there after closing and reopening the popup
🔻
I · Exhausting the free allowance
0/11
I1Upload JDs until you have used all 5. Count them.
I2The header count decreases by exactly 1 each time, never 0, never 2
I3After the 5th, try a 6th — you land on a dedicated out-of-credits screen, not a JD form with a warning bolted on
I4That screen offers exactly two things: upgrade, and back to dashboard
I5"Back to dashboard" works
I6Reopen the popup — it still says you are out, it has not silently reset
I7Run verifications until all 10 are used
I8The 11th shows the out-of-verifications screen
I9The sidebar also reflects depleted credits rather than failing silently
I10Close the browser entirely, reopen, sign back in. You are still out of credits. The allowance is one-time and must not refill.
I11Nothing anywhere promises a monthly reset
💳
J · Upgrading to Pro
0/11
J1Click Upgrade — the checkout opens
J2It states $9/month and unlimited
J3Use the payment provider's test card only. Never a real card.
J4Complete a test payment
J5You return to a confirmation page, not a "blocked by Chrome" error
J6Reopen the popup — you are on Pro
J7The header shows Pro, and no longer counts down credits
J8Upload a JD — it works, with no limit screen
J9Run a verification — it works
J10Do 3 more of each — still no limit
J11Cancel the test subscription — you are told what happens and when
💬
K · Feedback
0/5
K1Open Send Feedback
K2Submit it empty — you are stopped with a reason
K3Submit real text — you get a visible confirmation
K4Confirm it arrived on our side before ticking this
K5Reopen the form — it is empty again, not holding the last message
🔀
L · Two accounts on one browser
0/9
L1While signed in as account A, note its JDs and matches
L2Sign out
L3Sign up as a new account B with a fresh alias, same browser
L4Account B's dashboard is empty. It must show none of A's job descriptions.
L5Matches is empty for B
L6B has its own full allowance, 5 and 10
L7Upload a JD as B
L8Sign out, sign back in as A — A sees its own JDs, and none of B's
L9A's credit counts are its own, unchanged by B's usage
♻️
M · Lifecycle and resilience
0/8
M1Reload the extension while the popup is open — no broken state afterwards
M2Sign out, then reopen the popup — you are at the sign-in gate, no stale data visible
M3Turn the network off and open the popup — a readable message, not a blank screen
M4Leave the popup open 5 minutes, then act — no silent sign-out
M5Open the popup from a non-LinkedIn tab — it still works
M6Restart Chrome — you are still signed in
M7Every screen: nothing overflows, no text is clipped, no button is off-screen
M8Every screen: no placeholder text, no "undefined", no "null", no "[object Object]"
🧹
N · Final sweep
0/5
N1Popup console: no red errors across the whole run
N2LinkedIn page console: no red errors
N3Service worker console: no red errors
N4No unexpected alert popped in Slack during the run
N5Re-read anything you ticked while unsure, and re-test it