Spencer Morris
← Project index
ENGINEERING NOTES / 05 3 MIN READ

Staff Jobs

A job-application pipeline combining reusable requirement extraction, profile-based matching, browser form automation, and submission receipts.

Web applicationVisit project ↗
Staff Jobs dashboard showing a queued sample job match and the assistant panelView full size ↗
Running Staff Jobs dashboard after signing into a synthetic account in the isolated PGlite QA environment. The candidate and employer are fixtures. External requests, application submissions, email and payments are disabled.
01 / THE PROBLEM

What needed solving.

Job applications repeat the same facts across incompatible forms, while matching every person to every posting with a model is expensive and hard to inspect.

02 / SYSTEM OUTLINE
  1. 01Profile + posting facts
  2. 02Rules + browser forms
  3. 03Confirmed or uncertain receipt

Simplified from the implementation and project notes.

03 / TECHNICAL DECISIONS

How it fits together.

Reuse posting facts for matching

The ingest and requirements paths extract job facts once; candidate fit combines location, seniority, skills and authorization rules, leaving model judgment for ambiguous cases. This makes role facts reusable and individual match checks cheaper and easier to inspect.

Fill supported application forms

A paced dispatcher claims due applications, opens platform-specific Browserbase sessions and fills fields from saved profile answers. The form layer recognizes required fields and blocked or uncertain states; outcomes are recorded separately so an attempted click is not automatically a confirmed submission.

Verify limits and isolate review data

The repo tests matching rules, pacing and application outcomes. Its disposable PGlite QA runs the real Next routes against an in-memory database while rejecting external requests. This separates onboarding and dashboard checks from payment, email and application-submission side effects.

FEATURE WALKTHROUGH

Inside the software.

Staff Jobs is an application-assistance service: resume and search setup feed an automated job-matching and application workflow, with human-controlled profile answers, inbox replies, and subscription access.

01 / FEATURE

Resume intake and editable profile

Resume upload extracts contact and experience details into an editable profile; users can replace resumes and retain versions, or build a profile through chat if they skip upload.

Resume intake and editable profile in the running staff-jobs interfaceView full size ↗
Editable candidate profile and resume in the running application. Maya Chen and the resume are synthetic QA records.
HOW IT WORKS

Private resume drafts are claimed at account creation; parsing and profile data live in the application backend. Resume-derived fields preserve existing contact values when the file omits them.

UI captured locally. Data and integration limits are noted above.

Implementation references
  • staff-jobs/README.md
  • staff-jobs/components/ResumeStep.tsx
  • staff-jobs/components/ProfileView.tsx
  • staff-jobs/app/api/jobs/resume/route.ts
  • staff-jobs/lib/profile.ts
02 / FEATURE

Guided profile and job-search setup

Three setup stages collect resume, profile basics, and job preferences before creating the account; saved setup has a retry path when campaign startup fails.

HOW IT WORKS

Profile and search preferences are saved to a private draft before account creation. Search includes role, location, pay, and student preferences.

Present in the reviewed source.

Implementation references
  • staff-jobs/README.md
  • staff-jobs/components/Setup.tsx
  • staff-jobs/components/OnboardingSteps.tsx
  • staff-jobs/components/OnboardingProfile.tsx
  • staff-jobs/components/OnboardingSearch.tsx
  • staff-jobs/app/api/jobs/onboarding/route.ts
03 / FEATURE

Job discovery and fit ranking

Staff ingests employer postings, builds embeddings and requirements, then ranks roles against profile and saved search criteria before adding eligible work to queues.

Job discovery and fit ranking in the running staff-jobs interfaceView full size ↗
Search preferences for roles, location, compensation, and employment type. Running UI with a synthetic candidate; no applications were submitted.
HOW IT WORKS

Scheduled ingestion and embedding pipelines support Greenhouse, Lever, Ashby and additional Workday/iCIMS/Oracle pathways; matching combines requirements and fit rules, and excludes closed, stale, or unsupported matches.

UI captured locally. Data and integration limits are noted above.

Implementation references
  • staff-jobs/README.md
  • staff-jobs/lib/match-rules.ts
  • staff-jobs/lib/search-settings.ts
  • staff-jobs/app/api/jobs/cron/ingest/route.ts
  • staff-jobs/app/api/jobs/cron/embed/route.ts
  • staff-jobs/app/api/jobs/onboarding/matches/route.ts
04 / FEATURE

Automated application submission

The dispatcher schedules matching applications and uses browser sessions to fill supported employer forms, while per-person limits and company/platform constraints shape concurrency.

HOW IT WORKS

Minute cron starts due applications with fair account shares; browser automation supports form fill/live modes, defaults to fill, and dispatch uses a per-person cap and one-at-company constraint.

Present in the reviewed source.

Implementation references
  • staff-jobs/README.md
  • staff-jobs/lib/pace.ts
  • staff-jobs/lib/apply/form.ts
  • staff-jobs/app/api/jobs/cron/dispatch/route.ts
  • staff-jobs/app/api/jobs/applications/route.ts
05 / FEATURE

Live application queue and campaign controls

Dashboard separates queued, running, applied, and blocked work; a campaign can be paused and specific queued work can be canceled while unrelated jobs continue.

HOW IT WORKS

Campaign state and per-application status are persisted; dispatcher respects pause, allowance, blocked reasons, and queue refill behavior.

Present in the reviewed source.

Implementation references
  • staff-jobs/components/Dashboard.tsx
  • staff-jobs/components/Applications.tsx
  • staff-jobs/components/LiveStatus.tsx
  • staff-jobs/app/api/jobs/campaign/route.ts
  • staff-jobs/app/api/jobs/applications/[id]/route.ts
  • staff-jobs/lib/pace.ts
06 / FEATURE

Staff chat and application questions

Chat handles profile intake and employer-required application questions; unanswered facts hold only affected jobs, while other eligible matches continue.

Staff chat and application questions in the running staff-jobs interfaceView full size ↗
Employer mail alongside the Staff conversation panel. Local QA data; no model call or outgoing message was made.
HOW IT WORKS

Conversational state and saved answers feed the application worker; unknown personal facts are held for the applicant rather than inferred. Chat and needs-info endpoints persist state.

UI captured locally. Data and integration limits are noted above.

Implementation references
  • staff-jobs/components/Chat.tsx
  • staff-jobs/components/AgentQuestion.tsx
  • staff-jobs/components/NeedsYou.tsx
  • staff-jobs/app/api/jobs/chat/route.ts
  • staff-jobs/app/api/jobs/answers/route.ts
  • staff-jobs/app/api/jobs/needs/route.ts
07 / FEATURE

Employer inbox and reviewed replies

Staff receives employer messages, classifies follow-ups, and drafts answers for review; applicant approval is required before a reply is sent.

Employer inbox and reviewed replies in the running staff-jobs interfaceView full size ↗
Expanded employer message linked to its application, with reply and forward controls. The email is a synthetic fixture; nothing was sent.
HOW IT WORKS

Applicant-address mail is routed into dashboard inbox; reply drafts retain answer provenance, with dashboard and single-use emailed approval paths.

UI captured locally. Data and integration limits are noted above.

Implementation references
  • staff-jobs/components/Inbox.tsx
  • staff-jobs/components/Replies.tsx
  • staff-jobs/components/ReplyComposer.tsx
  • staff-jobs/app/api/jobs/mail/inbound/route.ts
  • staff-jobs/app/api/jobs/inbox/draft/route.ts
  • staff-jobs/app/api/jobs/inbox/approve/route.ts
08 / FEATURE

Trials, billing, and referrals

Billing manages card-backed trial access and paid subscriptions; referral progress and the separate NATHAN offer are represented in account flows.

HOW IT WORKS

Stripe checkout and webhook-backed entitlements govern campaign start/continuation; referral rewards and no-card promo eligibility have distinct rules.

Present in the reviewed source.

Implementation references
  • staff-jobs/README.md
  • staff-jobs/components/WelcomeOffer.tsx
  • staff-jobs/components/PlanPicker.tsx
  • staff-jobs/components/FriendLinks.tsx
  • staff-jobs/app/api/jobs/billing/route.ts
  • staff-jobs/app/api/jobs/checkout/route.ts
  • staff-jobs/lib/referral-rewards.ts
04 / WORKING METHOD

Building and checking it.

The user completes resume, profile, and search steps, then reviews the account and application dashboard. Application pacing and per-company limits constrain dispatch.

The codebase contains platform-specific ATS handlers and checks around application state. JoblessNoMore forked from this project, but the two applications have separate product policies and continue to diverge.

05 / STATUS & LIMITS

The repository includes both active and retired product paths. Tailoring and other optional features can be disabled by current product policy; code presence alone does not establish availability. No placement outcome is claimed.

Source notes

Based on repository code and project records reviewed on October 30, 2026. Historical checks are described as recorded, not rerun for this article. Screenshots, renders, and mockups are labeled individually.

  • staff-jobs/README.md
  • staff-jobs/lib/match-rules.ts
  • staff-jobs/lib/apply/form.ts
  • staff-jobs/lib/pace.ts
  • staff-jobs/scripts/qa-onboarding.mjs
  • staff-jobs/tests/pace.test.ts
← All projectsNEXT PROJECTBootcamp Launcher →