Skip to content

feat(careers): careers page backed by the Ashby job board#5316

Merged
waleedlatif1 merged 3 commits into
stagingfrom
worktree-careers-page
Jul 1, 2026
Merged

feat(careers): careers page backed by the Ashby job board#5316
waleedlatif1 merged 3 commits into
stagingfrom
worktree-careers-page

Conversation

@waleedlatif1

Copy link
Copy Markdown
Collaborator

Summary

  • New /careers landing page listing open roles pulled live from Sim's public Ashby job board (jobs.ashbyhq.com/sim), grouped by department with Team/Location filters.
  • Roles are fetched server-side at build/revalidate time (getAshbyJobs, mirrors the GitHub-stars pattern — cached, never throws) so every posting is in the crawlable HTML; the interactive board hydrates on top.
  • Filter state lives in the URL via nuqs (?team=/?location=), shareable and deep-linkable; the roles list stays server-rendered via a <Suspense> fallback.
  • Styled with landing tokens/patterns only (shared max-w-[1446px]/px-12 gutter, ChipSelect filters, TrustedBy reuse, single <h1> + sr-only GEO summary).
  • Footer "Careers" link now points to the internal /careers page; added /careers to the sitemap.

Type of Change

  • New feature

Testing

Tested manually against the live Ashby board; typecheck and biome clean.

Checklist

  • Code follows project style guidelines
  • Self-reviewed my changes
  • Tests added/updated and passing
  • No new warnings introduced
  • I confirm that I have read and agree to the terms outlined in the Contributor License Agreement (CLA)

@vercel

vercel Bot commented Jul 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
docs Skipped Skipped Jul 1, 2026 8:20am

Request Review

@cursor

cursor Bot commented Jul 1, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Marketing/landing surface with defensive third-party fetch and URL validation; no auth, billing, or core app logic changes.

Overview
Adds a first-party /careers landing page with a mission hero and live open roles from Ashby’s public API via getAshbyJobs (hourly revalidate, Zod validation, http(s)-only apply URLs, graceful empty board on failure).

Roles are server-rendered for SEO; a client JobBoard adds Team/Location ChipSelect filters with shareable ?team= / ?location= state (nuqs). The server parses the same query for the Suspense fallback so deep links don’t flash an unfiltered list. Apply links still go to Ashby.

Footer Careers now points to /careers instead of the external Ashby board; /careers is included in the sitemap.

Reviewed by Cursor Bugbot for commit 575d9f9. Configure here.

Comment thread apps/sim/app/(landing)/careers/components/job-board/job-groups.tsx
@greptile-apps

greptile-apps Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds an internal careers page backed by Ashby's job board. The main changes are:

  • New /careers landing page with open roles grouped by department.
  • Server-side Ashby job fetching with validation and hourly revalidation.
  • URL-backed team and location filters for the job board.
  • Footer and sitemap updates for the new careers route.

Confidence Score: 5/5

This looks safe to merge.

  • No blocking issues found in the changed code.

Important Files Changed

Filename Overview
apps/sim/lib/ashby/jobs.ts Adds the Ashby fetcher, response validation, per-posting skipping, URL validation, and normalized job shape.
apps/sim/app/(landing)/careers/careers.tsx Adds the careers page layout and server-rendered job board fallback.
apps/sim/app/(landing)/careers/components/job-board/job-board.tsx Adds client-side team and location filters backed by URL state.
apps/sim/app/(landing)/careers/components/job-board/job-groups.tsx Adds grouped job rendering and de-duplicated metadata display.
apps/sim/app/(landing)/careers/search-params.ts Defines shared careers filter query parsers and inactive-filter defaults.

Reviews (3): Last reviewed commit: "fix(careers): filter-aware empty state; ..." | Re-trigger Greptile

Comment thread apps/sim/lib/ashby/jobs.ts
Comment thread apps/sim/lib/ashby/jobs.ts
Comment thread apps/sim/app/(landing)/careers/search-params.ts Outdated
Comment thread apps/sim/app/(landing)/careers/components/job-board/job-groups.tsx
Comment thread apps/sim/app/(landing)/careers/careers.tsx
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

Comment thread apps/sim/app/(landing)/careers/components/job-board/job-board.tsx Outdated
Comment thread apps/sim/app/(landing)/careers/careers.tsx Outdated
- validate jobUrl as http(s) only; drop postings with unsafe URLs
- validate postings individually so one bad row can't empty the board
- namespace the all-filter sentinel to avoid colliding with real values
- dedupe the job metadata line (fixes duplicate React keys / Remote·Remote)
- parse filters server-side so deep-linked views don't flash unfiltered
- JobGroups owns its empty copy via a filtersActive flag, so the server
  fallback and client board render identical, correct empty messaging
  (no-open-roles vs no-matching-filters)
- convert remaining inline comments to TSDoc
@waleedlatif1 waleedlatif1 force-pushed the worktree-careers-page branch from 4903dd3 to 575d9f9 Compare July 1, 2026 08:20
@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@greptile

@waleedlatif1

Copy link
Copy Markdown
Collaborator Author

@cursor review

@cursor cursor Bot 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.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 575d9f9. Configure here.

@waleedlatif1 waleedlatif1 merged commit 2393b72 into staging Jul 1, 2026
12 checks passed
@waleedlatif1 waleedlatif1 deleted the worktree-careers-page branch July 1, 2026 08:25
waleedlatif1 added a commit that referenced this pull request Jul 1, 2026
#5320)

A pre-existing permanent redirect /careers -> jobs.ashbyhq.com/sim shadowed the
new first-party careers page (#5316), sending visitors straight to the Ashby
board. Drop it so /careers serves the in-app page (which itself pulls the Ashby
roles).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant