Skip to content

Prajwal fix(job-application): keep Apply Now deep links off retired forms and… - #5667

Merged
one-community merged 2 commits into
developmentfrom
Prajwal_jobs_catalog_parity_deeplink_e2e
Oct 21, 2026
Merged

one-community merged 2 commits into
developmentfrom
Prajwal_jobs_catalog_parity_deeplink_e2e

Conversation

@PrajwalpGM256

@PrajwalpGM256 PrajwalpGM256 commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

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.com uses apidev.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 POSITION has 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:

  1. Title/slug matching searched all forms, including [RETIRED] ones — ?jobTitle=Applied through site loaded the nnn/pandy questionnaire.
  2. An ambiguous partial title (?jobTitle=T.A.S.T) silently picked one of three T.A.S.T. forms.
  3. A bare /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.
  4. If /jobs/positions failed, the dropdown fell back to raw form titles including [RETIRED] forms.
  5. Picking a dropdown role with no form fell back to the default form without any warning.

Related PRS (if any):

None, frontend only. No backend or data changes.

Main changes explained:

  • Update JobApplicationForm.jsx:
    • findFormForJobTitle only 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.
    • Slug lookups skip retired forms (findApplicantFormBySlug); a bare /apply/<slug> resolves to the canonical position title.
    • Near-miss titles select the real position instead of adding a fake dropdown option.
    • Positions-API fallback options exclude retired forms.
    • Default-form fallback warning shared via warnDefaultFormFallback and now also shown on dropdown changes.
    • Exported the matching helpers used by the tests.
  • Update jobApplicationPublicApi.js: add findPositionBySlug.
  • Create __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:

  1. check into current branch
  2. do yarn install and yarn start to run this PR locally (backend: npm run dev on development)
  3. Clear site data/cache
  4. no login needed
  5. /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
  6. /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
  7. /apply/t-a-s-t-hgn → banner and dropdown show "T.A.S.T. - HGN" (no lowercase duplicate)
  8. /job-application?jobTitle=APPLIED%20THROUGH%20SITE%20-%20SEEKING%20SOFTWARE%20POSITION → SEEKING SOFTWARE POSITION selected, no fake dropdown option
  9. /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
  10. /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
  11. DevTools → Network request blocking *jobs/positions* → reload /job-application → no [RETIRED] entries in the dropdown
  12. npx vitest run src/components/Collaboration → all tests pass
  13. verify this new feature works in dark mode

Screenshots or videos of changes:

1. Partial title loaded the retired junk form

/job-application?jobTitle=Applied%20through%20site

Before (dev) After (this PR)
Loads [RETIRED] APPLIED THROUGH SITE… with questions "nnn Edited / pandy / 666 / QA TEST QUESTION - DELETE ME" Loads SEEKING SOFTWARE POSITION questions and shows the "No form is linked to…" warning
image image

2. Ambiguous partial title silently picked a form

/job-application?jobTitle=T.A.S.T

Before (dev) After (this PR)
Silently loads "T.A.S.T. - ENGINEER/ARCHITECT OFFERING POSITION" (one of three T.A.S.T. roles), no warning Shows the warning toast so the applicant picks the right T.A.S.T. role
image image

3. Bare /apply/<slug> link showed a lowercase fake title

/apply/t-a-s-t-hgn

Before (dev) After (this PR)
Banner, search box and dropdown show t a s t hgn Banner, search box and dropdown show T.A.S.T. - HGN
image image

4. Old title added a fake dropdown option

/job-application?jobTitle=APPLIED%20THROUGH%20SITE%20-%20SEEKING%20SOFTWARE%20POSITION

Before (dev) After (this PR)
"APPLIED THROUGH SITE - SEEKING SOFTWARE POSITION" added at the top of the dropdown Dropdown selects the real SEEKING SOFTWARE POSITION, no fake option
image image

5. Retired forms in the dropdown when /jobs/positions fails

DevTools → Network request blocking *jobs/positions* → reload /job-application

Before (dev) After (this PR)
Dropdown lists [RETIRED] APPLIED THROUGH SITE… and [RETIRED] T.A.S.T No [RETIRED] entries
image image

Note:

  • Parity check to re-run after any data change on shared dev (read-only):
    $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 forms are identified by title ([RETIRED], APPLIED THROUGH SITE, TEST CREATE FORM) because all 46 forms have isActive: true and the API can't change that flag. A proper job → form link (formId on Job) would be a separate backend change.
  • devJobCatalog.json is a snapshot of dev titles; if the catalog changes, regenerate it so the tests reflect the live roles.

… 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.
Copilot AI balanced review requested due to automatic review settings October 17, 2026 02:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@PrajwalpGM256 PrajwalpGM256 added the High Priority - Please Review First This is an important PR we'd like to get merged as soon as possible label Oct 17, 2026
@netlify

netlify Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for highestgoodnetwork-dev ready!

Name Link
🔨 Latest commit 0ba4b51
🔍 Latest deploy log https://app.netlify.com/projects/highestgoodnetwork-dev/deploys/6ad7d43fc3010c9ce088bfd1
😎 Deploy Preview https://deploy-preview-5667--highestgoodnetwork-dev.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

AlekyaJogini
AlekyaJogini previously approved these changes Oct 17, 2026

@AlekyaJogini AlekyaJogini left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Image Image
  • /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".
Image
  • /job-application?jobTitle=APPLIED%20THROUGH%20SITE%20-%20SEEKING%20SOFTWARE%20POSITION selects SEEKING SOFTWARE POSITION, with no fake option at the top of the dropdown.
Image
  • /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.
Image

Issues found
none

Not tested

  • Blocking /jobs/positions to check the fallback dropdown
  • Clicking job cards on /collaboration
  • Dark mode

snehitakandula
snehitakandula previously approved these changes Oct 17, 2026

@snehitakandula snehitakandula left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:

  1. 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.
  2. Ambiguous link in dark mode: /job-application?jobTitle=T.A.S.T shows 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.
  3. Positions-API fallback: with jobs/positions blocked in DevTools (request shows as blocked), the position dropdown shows no [RETIRED] entries.
  4. 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:
Image

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

Architecture category shows no jobs:

Image

Approving.

@iAbhi001
iAbhi001 self-requested a review October 18, 2026 04:55
iAbhi001
iAbhi001 previously approved these changes Oct 18, 2026

@iAbhi001 iAbhi001 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
AaditTrivedi previously approved these changes Oct 19, 2026

@AaditTrivedi AaditTrivedi left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 pixelpix13 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 dehllo as 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

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.

@sonarqubecloud

Copy link
Copy Markdown

@PrajwalpGM256

Copy link
Copy Markdown
Contributor Author

Requesting changes

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 dehllo as 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

@pixelpix13 Thanks for catching this. and fixed in 0ba4b51.

What changed: when a jobTitle or slug doesn't match a real position or form, the dropdown, banner and search box now show the default form's title (SEEKING SOFTWARE POSITION) instead of the raw input. The warning toast still names what was requested, so the applicant knows why. ?jobTitle=T.A.S.T had the same bug and is fixed too. Exact deep links are unchanged, e.g. /apply/t-a-s-t-hgn still selects T.A.S.T. - HGN with no toast.

Case After
/job-application?jobTitle=Applied%20through%20site image
/apply/dehllo image
/job-application?jobTitle=T.A.S.T image
/apply/t-a-s-t-hgn (unchanged) image

Tests: added buildInitialSelection cases to jobFormMatching.test.js for all three URLs, plus an unknown slug while /jobs/positions is down. They fail on the old code and pass now (117/117 Collaboration tests).

@AaditTrivedi @iAbhi001 @snehitakandula @AlekyaJogini your approvals were dismissed by the new push, so could you re-check when you get a chance?

@one-community

Copy link
Copy Markdown
Member

Thank you all, merging!

@one-community
one-community merged commit f8ba8a1 into development Oct 21, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

High Priority - Please Review First This is an important PR we'd like to get merged as soon as possible

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants