Repository navigation
Prajwal fix(job-application): keep Apply Now deep links off retired forms and… - #5667
Conversation
… show canonical titles Implements #57 Fix: title and slug matching skip [RETIRED]/internal forms, so a partial or old link can no longer load the junk ATS questionnaire. Ambiguous partial titles (e.g. 'T.A.S.T') now warn instead of silently picking a form. Bare /apply/<slug> links and near-miss titles select the real position title instead of adding a lowercase or fake dropdown option. The positions-API fallback no longer lists retired forms, and dropdown fallbacks to the default form now show the warning toast. Tests: added unit tests over the real shared-dev catalog (35 positions, 46 forms) covering title-to-form and slug round-trips for every role, plus retired-form, ambiguous-title, default-form and initial-selection cases.
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
✅ Deploy Preview for highestgoodnetwork-dev ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
AlekyaJogini
left a comment
There was a problem hiding this comment.
Reviewed by Alekya.
How I tested
Checked out the PR branch (commit [fff6b02]) on Node 20.19.4 with the backend on development. Ran npx vitest run src/components/Collaboration . Opened the deep links from the test steps in an Incognito window in light mode. I did not submit any application.
Verified working
- /job-application?jobTitle=Applied%20through%20site shows the "No form is linked to…" warning and loads the SEEKING SOFTWARE POSITION questions not the nnn / pandy / 666 / QA TEST questions.
- /apply/t-a-s-t-hgn shows "T.A.S.T. - HGN" in the search box dropdown and heading instead of the lowercase "t a s t hgn".
- /job-application?jobTitle=APPLIED%20THROUGH%20SITE%20-%20SEEKING%20SOFTWARE%20POSITION selects SEEKING SOFTWARE POSITION, with no fake option at the top of the dropdown.
- /job-application?jobTitle=T.A.S.T shows the warning toast and the default form instead of silently picking one T.A.S.T. role.
Issues found
none
Not tested
- Blocking /jobs/positions to check the fallback dropdown
- Clicking job cards on /collaboration
- Dark mode
snehitakandula
left a comment
There was a problem hiding this comment.
Reviewed on this PR's branch (pr-5667) at commit fff6b02, frontend only, with backend on development. Tested as Admin, focusing on the items listed as not tested in the earlier review. I didn't submit any application.
Verified:
- Job cards on
/collaboration: clicking SEEKING ADMINISTRATIVE ASSISTANT opens/apply/seeking-administrative-assistant?jobTitle=SEEKING%20ADMINISTRATIVE%20ASSISTANT, with the exact title selected in the dropdown and in the heading, and no warning toast. - Ambiguous link in dark mode:
/job-application?jobTitle=T.A.S.Tshows the warning toast ("No form is linked to "T.A.S.T". Showing the default software engineer application…"), and it's readable in dark mode. - Positions-API fallback: with
jobs/positionsblocked in DevTools (request shows as blocked), the position dropdown shows no[RETIRED]entries. - No merge conflicts with
development.
Observations (non-blocking, likely outside this PR):
- On
/collaboration, the "Architecture, Landscape & Environment" category shows "No matching jobs found," although architecture roles (e.g. "ARCHITECT OR LANDSCAPE ARCHITECT FOR CITY CENTER…") exist in the position dropdown. - For SEEKING ADMINISTRATIVE ASSISTANT, the Requirements Status panel lists ReactJS and JavaScript experience. If that panel is generic, it may be worth making it role-specific.
Screenshots:
Job card opens the exact role:

Dark mode warning toast for T.A.S.T:

Architecture category shows no jobs:
Approving.
iAbhi001
left a comment
There was a problem hiding this comment.
Tested locally on branch Prajwal_jobs_catalog_parity_deeplink_e2e at commit fff6b02 with backend on development, and all Collaboration unit tests pass. Deep-link handling is substantially improved: queries matching retired titles (like Applied through site) safely redirect to the default form with a warning toast rather than loading junk questions, bare slug paths like /apply/t-a-s-t-hgn cleanly resolve to canonical titles without creating lowercase dropdown duplicates, and ambiguous queries (like T.A.S.T) trigger the fallback warning instead of guessing. Blocking /jobs/positions network calls confirmed the fallback options strictly exclude retired forms, and near-miss titles map to real positions without injecting fake entries into the dropdown. Everything works cleanly with zero merge conflicts, approving!
AaditTrivedi
left a comment
There was a problem hiding this comment.
Reviewed by Aadit Trivedi.
Checked out the PR (no conflicts with development), ran jobFormMatching.test.js (15/15 passing), and tested the deep link locally against the staging backend as Admin, without submitting.
Verified
- From /collaboration, Apply Now on the software position opens the application form with the real interview questions, not the test questions ("nnn", "pandy", "666") that exist only on the "[RETIRED] APPLIED THROUGH SITE - SEEKING SOFTWARE POSITION" form.
- The matching position is pre-selected in the dropdown.
- The description's parity check is useful context: /api/jobs and /api/jobs/positions return the same 35 titles on dev, and each has a form with the exact same title.
Pointer, not blocking
- #5651, #5653, and #5660 also change
JobApplicationForm.jsx, so whichever of them merges after this one will need to resolve conflicts.
Approving.
pixelpix13
left a comment
There was a problem hiding this comment.
Requesting changes
Thanks for the deep-link hardening — the important parts work well.
What’s working
- Unknown / retired / partial titles correctly avoid the junk ATS questionnaire (nnn / pandy / 666).
- Fallback loads SEEKING SOFTWARE POSITION (React/JS requirements).
- Warning toast explains that no form is linked and the default software form is shown.
Issues
1. Partial / old ATS title still creates a fake dropdown option
- URL:
/job-application?jobTitle=Applied%20through%20site - Dropdown selected value: “Applied through site”
- Expected: select canonical
SEEKING SOFTWARE POSITION, with no fake “Applied through site” row in the dropdown.
2. Unknown /apply/<slug> also creates a fake dropdown option
- URL:
/apply/dehllo - Banner / title / search / dropdown all show “dehllo”
- Warning correctly says no form is linked and shows SEEKING SOFTWARE POSITION
- Expected: same as above — keep the warning + default software form, but do not treat
dehlloas a real position:- Dropdown should select
SEEKING SOFTWARE POSITION(or stay on “Select a position”) - Banner / “Job Application – …” should not use the raw invalid slug as if it were a role title
- No fake dropdown option for unknown slugs
- Dropdown should select
Both cases are the same class of bug: when matching falls back to the default form, the UI still promotes the raw query/slug into the selected position instead of using the canonical matched title.
Expected after fix
| Case | Form | Toast | Dropdown / banner |
|---|---|---|---|
?jobTitle=Applied through site |
SEEKING SOFTWARE POSITION | keep | SEEKING SOFTWARE POSITION, no fake option |
/apply/dehllo |
SEEKING SOFTWARE POSITION | keep | SEEKING SOFTWARE POSITION (or empty select), no “dehllo” fake option/title |
Suggested direction
When a jobTitle / slug only resolves via default-software fallback (no exact applicant-facing form/position match), set the selected position to the canonical default form title (SEEKING SOFTWARE POSITION), not the raw query string / slug.
Happy to re-test once this is updated.
0ba4b51
|
@pixelpix13 Thanks for catching this. and fixed in 0ba4b51. What changed: when a
Tests: added @AaditTrivedi @iAbhi001 @snehitakandula @AlekyaJogini your approvals were dismissed by the new push, so could you re-check when you get a chance? |
|
Thank you all, merging! |







Description
Implements # 57 (bug list priority high) — Jobs Component: Keep /collaboration ↔ /job-application Catalog Parity on Shared Dev + Apply Now Deep-Link E2E
Link to the issue : https://docs.google.com/document/d/1zifX1otZPl-VJLQk0sZqZbQFginRytlQ2vKHeQAh_Lo/edit?tab=t.0#bookmark=id.lp6ig1izgyql
Original #57 parity bug closed; this covers shared-env + deep-link E2E.
Shared dev parity (verified, no data change needed):
dev.highestgood.comusesapidev.highestgood.com. Unique titles from/api/jobs(collab) = 35,/api/jobs/positions(apply dropdown) = 35, identical sets (diff 0). Every one of the 35 positions has a job form with the exact same title.SEEKING SOFTWARE POSITIONhas the real interview questions; the junk questions (nnn / pandy / 666 / QA TEST) live only in[RETIRED] APPLIED THROUGH SITE - SEEKING SOFTWARE POSITION.Deep-link bugs found and fixed: jobs and forms are linked only by title text, and the apply page's matching still let applicants reach the wrong form:
[RETIRED]ones —?jobTitle=Applied through siteloaded the nnn/pandy questionnaire.?jobTitle=T.A.S.T) silently picked one of three T.A.S.T. forms./apply/<slug>link (no?jobTitle=) showed a lowercase title (t a s t hgn) and added it to the dropdown as a fake option; an old title (APPLIED THROUGH SITE - SEEKING SOFTWARE POSITION) was also added as a fake option./jobs/positionsfailed, the dropdown fell back to raw form titles including[RETIRED]forms.Related PRS (if any):
None, frontend only. No backend or data changes.
Main changes explained:
JobApplicationForm.jsx:findFormForJobTitleonly matches applicant-facing forms (skips[RETIRED]/ internal), and a fuzzy match that hits more than one form is treated as no match → default form + warning toast.findApplicantFormBySlug); a bare/apply/<slug>resolves to the canonical position title.warnDefaultFormFallbackand now also shown on dropdown changes.jobApplicationPublicApi.js: addfindPositionBySlug.__tests__/jobFormMatching.test.js+__tests__/fixtures/devJobCatalog.json(real dev catalog: 35 positions, 46 forms). Checks every role's title → form and/apply/<slug>round-trip (failures list the exact failing link), retired forms never matched, ambiguous titles, default form, and initial-selection priority.How to test:
yarn installandyarn startto run this PR locally (backend:npm run devondevelopment)/collaboration→ click several cards (e.g. SEEKING SOFTWARE POSITION, MECHANICAL ENGINEER FOR FEA…, T.A.S.T. - NEED RESUME & WORK SAMPLES, PHOTOSHOP/GRAPHIC DESIGNER, DATA ANALYST APPLICATION) → exact title preselected, that role's questions load, no warning toast/job-application?jobTitle=Applied%20through%20site→ SEEKING SOFTWARE POSITION questions + warning toast (not nnn/pandy); dropdown, banner and search box show SEEKING SOFTWARE POSITION, no "Applied through site" option at the top of the dropdown/apply/t-a-s-t-hgn→ banner and dropdown show "T.A.S.T. - HGN" (no lowercase duplicate)/job-application?jobTitle=APPLIED%20THROUGH%20SITE%20-%20SEEKING%20SOFTWARE%20POSITION→ SEEKING SOFTWARE POSITION selected, no fake dropdown option/job-application?jobTitle=T.A.S.T→ default form + warning toast; dropdown, banner and search box show SEEKING SOFTWARE POSITION, no "T.A.S.T" option at the top of the dropdown/apply/dehllo(unknown slug) → default form + warning toast naming "dehllo"; dropdown, banner and search box show SEEKING SOFTWARE POSITION, "dehllo" appears nowhere else on the page*jobs/positions*→ reload/job-application→ no[RETIRED]entries in the dropdownnpx vitest run src/components/Collaboration→ all tests passScreenshots or videos of changes:
1. Partial title loaded the retired junk form
/job-application?jobTitle=Applied%20through%20site[RETIRED] APPLIED THROUGH SITE…with questions "nnn Edited / pandy / 666 / QA TEST QUESTION - DELETE ME"2. Ambiguous partial title silently picked a form
/job-application?jobTitle=T.A.S.T3. Bare
/apply/<slug>link showed a lowercase fake title/apply/t-a-s-t-hgnt a s t hgn4. Old title added a fake dropdown option
/job-application?jobTitle=APPLIED%20THROUGH%20SITE%20-%20SEEKING%20SOFTWARE%20POSITION5. Retired forms in the dropdown when
/jobs/positionsfailsDevTools → Network request blocking
*jobs/positions*→ reload/job-application[RETIRED] APPLIED THROUGH SITE…and[RETIRED] T.A.S.T[RETIRED]entriesNote:
$p=(irm https://apidev.highestgood.com/api/jobs/positions).positions; $t=(irm https://apidev.highestgood.com/api/jobs/summaries).jobs.title | sort -u; "collab: $($t.Count) dropdown: $($p.Count) diff: $((compare $t $p).Count)"[RETIRED],APPLIED THROUGH SITE,TEST CREATE FORM) because all 46 forms haveisActive: trueand the API can't change that flag. A proper job → form link (formIdon Job) would be a separate backend change.devJobCatalog.jsonis a snapshot of dev titles; if the catalog changes, regenerate it so the tests reflect the live roles.