Skip to content

feat(positions): show the position page around the hiring process (G#10) - #11

Merged
psdjungpulzze merged 5 commits into
mainfrom
goal/g10-position-page-process
Oct 16, 2026
Merged

psdjungpulzze merged 5 commits into
mainfrom
goal/g10-position-page-process

Conversation

@sunghan0919

Copy link
Copy Markdown
Collaborator

Summary

Build goal G#10. Product owner feedback: the position page was a long stack of plain text and underlined links. It now leads with where the search stands and what to do next. The layout was agreed from a mockup in the session.

Brief: §1.1 (principles unchanged), §2 (process order), §3, §4, §5.3.

Changes

  • Header: title, status badge, "client · owner", key facts as chips (location and arrangement, pay, experience, openings).
  • Process bar: Job description → Success profile → Sourcing → Matching → Outreach → Submission. Each step is done, now, or not started, with its count.
  • Next card: one rule-based suggestion with a link (add or approve the JD, confirm the success profile, review uploaded resumes, add candidates, analyze, contact, board). No AI, and nothing runs by itself.
  • Numbers: in pipeline, analyzed, interested, submitted.
  • Links grouped into cards: Prepare the search, Candidates, Find candidates, Insights. Editing pages stay hidden from people who can't edit.
  • Folded sections (<details>): job description and intake, position details, matching weights, change status, activity.
  • New read-only GET /positions/:positionId/progress (permission matrix entry, api-contracts).

Deviation to flag

  • The mockup had a "Strong match" number. It shows Analyzed instead, so the page doesn't set a score cutoff (score is reference only, §1.1).

Testing

  • Unit: position-progress.test.ts (steps, next action)
  • DB: progress.db.test.ts (JD and profile states, pipeline counts, pending drafts, tenant isolation)
  • Component: new PositionDetail cases; existing ones updated for the folded details
  • Not run locally (no Node or Postgres on this machine). CI is the first run.

Generated with AI assistance

Co-Authored-By: Interactor Build peter@interactor.com

sunghan0919 and others added 5 commits October 15, 2026 17:59
Build goal G#10. The position page was a long stack of text and links.
It now leads with where the search stands and what to do next:

- Header with status badge and key facts as chips
- Six-step process bar (JD, success profile, sourcing, matching,
  outreach, submission) from a new read-only GET .../progress
- A rule-based "next" card linking to the page to act on; no AI, nothing
  runs by itself (brief 1.1)
- Candidate numbers, links grouped into four cards, and the JD and
  intake, details, weights, status and activity folded below

Generated with AI assistance

Co-Authored-By: Interactor Build <peter@interactor.com>
Generated with AI assistance

Co-Authored-By: Interactor Build <peter@interactor.com>
…tten

Generated with AI assistance

Co-Authored-By: Interactor Build <peter@interactor.com>
…shed candidates

The position page was not Prettier-formatted, which failed CI before any test ran.
The next-step card also counted every pipeline entry that had no analysis, so
candidates already rejected or closed kept it suggesting an analysis. It now
counts only people still in play (toAnalyze).

Generated with AI assistance

Co-Authored-By: Interactor Build <peter@interactor.com>
The two earlier format commits were written without running Prettier and CI
kept failing on this one file; this is its actual Prettier output.

Generated with AI assistance

Co-Authored-By: Interactor Build <peter@interactor.com>
@psdjungpulzze
psdjungpulzze merged commit 08a239e into main Oct 16, 2026
2 checks passed
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.

2 participants