GOODFIT Engineering Priorities← all reports

Goodfit — Engineering Priorities (from the competitive teardown)

Derived from the two teardowns of Goodfit vs Homerun / Workable / Wrangle: Feature parity 74% · UX parity 50%. This doc turns the *behind* rows into a build order, ranked by impact ÷ effort — quick wins first, then the big competitive holes, then parity/polish.

Live evidence: https://teardown.atharwise.me/

Effort: S ≈ days · M ≈ 1–2 wks · L ≈ 3+ wks. Codebase: apps/admin (recruiter), apps/app (candidate), packages/db/src/schema.

`` IMPACT → high │ TIER 1 (do now) │ TIER 2 (critical builds) │ apply-form/pipeline, │ scheduling, outbound │ email inbox, a11y, │ sourcing, careers │ score surfacing │ templates ─────┼─────────────────────────┼────────────────────────── low │ TIER 3 (typeahead, │ (skip / later) │ polish, smart lists) │ └─ low EFFORT ────────────┴── high EFFORT ── ``


TIER 1 — Quick wins (low effort × high impact). Ship these first.

1.1 — Accessibility labeling sweep + one H1/page S–M 🔴

What: Attach visible/aria labels to the ~66% unlabeled form controls (start with candidates + job-list filters), add one <h1> per page, then run a proper axe + contrast pass. Why now: Measured: 34% form-label rate. Mostly mechanical, no design risk; unblocks enterprise/compliance buyers. P1 even though it's "n/a" head-to-head (competitors not measurable from screenshots). Where: shared inputs in packages/ui; filter bars in apps/admin/.../candidates + .../jobs. Evidence: /ux.html"Accessibility" + data/ux/goodfit-audit.json.

1.2 — Make every published job render a working apply form + seed a default pipeline S–M 🔴

What: A brand-new job currently dead-ends — the apply preview shows *"No hiring stages configured / Submissions disabled"* and the pipeline opens empty. Pre-seed a recommended default pipeline (e.g. Applied → Screen → Interview → Offer → Hired) on job creation, and guarantee a published job always has a working candidate apply form. Why now: Highest-impact UX gap. All three competitors ship default stages; Homerun bundles them with scorecards/events. A new customer's *first* action produces a broken applicant experience today. Where: job create apps/admin/.../dashboard/jobs/new; pipeline pipelineVersionId / pipeline stages (packages/db/src/schema); candidate apply apps/app/.../jobs/[company]/[role]/apply. Evidence: /ux.html → row "Onboarding & empty states" (P1) — shows flow-job-preview dead-end.

1.3 — Two-way candidate email inbox (threaded) S–M

What: Render inbound replies inline on the application record (inbound/outbound styling) with an in-context reply composer. Why now: Mostly UI/aggregation — the parse-and-match backend (inboundEmails) already exists. Workable has a full two-way inbox; we capture replies but don't surface them. Cheap parity on a daily-use surface. Where: apps/admin/.../communications + inboundEmails (schema/queries already present). Evidence: /teardown.html"Inbound email / two-way candidate inbox" (Comms, behind).

1.4 — Surface assessment scores in the candidate list + @mention notifications S

What: (a) Make assessment scores first-class sort/badge columns in the candidates/talent view. (b) Add @mention notifications (individuals + @team/@everyone) to notes. Why now: (a) leverages Goodfit's unique scoring data — turns the pool into a ranked shortlist (differentiator competitors can't match), low effort. (b) closes the one collaboration-parity gap vs Workable; small. Where: apps/admin/.../candidates (list/columns); notes/comments + notifications. Evidence: /teardown.html"Talent pool" and "Team notes, discussion & sharing".

1.5 — Kill the polish-killing defects S

What: Fix the broken prescreening builder layout; remove the spurious voice-builder "1 Issue" error toast; make Save-gating consistent across all assessment types; add inline auto-save confirmation in editors (careers settings). Why now: These undercut brand on screens prospects actually see in demos. Trivial fixes, outsized perception lift. Where: apps/admin/.../prescreening/_builder/*; apps/app/.../assessment/*; apps/admin/.../settings/careers. Evidence: /ux.html"Interaction & feedback" + "Delight / polish".

1.6 — Integrations directory (surface what already exists) S

What: Ship a thin first-party integrations directory (uncomment the nav) listing existing capabilities as one-click cards: Slack/WhatsApp, calendar OAuth, webhooks, Razorpay. Why now: The API/webhook plumbing is already built — this closes a pure *perception* gap cheaply (buyers check the integrations page). Where: apps/admin/.../integrations (nav currently commented). Evidence: /teardown.html"Integrations marketplace & API".


TIER 2 — Critical builds (high impact, larger effort). The real competitive holes.

2.1 — Interview scheduling + calendar L 🔴 (single biggest workflow gap)

What: Interviewer calendar sync (Google/MS) with availability lookup → candidate self-scheduling booking link → panel/multi-attendee conflict checks. Why now: GF 1/3, behind all three competitors. Scheduling is core ATS workflow; its absence forces teams out to Calendly/email. We already have exit-call scheduling infra to build on. Where: extend apps/admin/.../dashboard/exitcalls scheduling; new candidate self-booking in apps/app; calendar OAuth (Google client already in @goodfit/utils). Evidence: /teardown.html"Interview scheduling & calendar" (High, P1, far behind).

2.2 — Outbound AI sourcing & candidate discovery L 🔴 (we have zero)

What: At minimum a Chrome clip-in extension + enrichment + outbound-sequence layer (or integrate a People-Search provider / Wrangle-style discovery). Differentiate by chaining Goodfit's voice/assessment engine — "screen the sourced lead instantly" — rather than competing on raw discovery volume. Why now: GF 0/3 — totally lacking. Real strategic gap for an *AI-native* ATS; Wrangle's entire wedge is sourcing (91 sourcing screens). Don't out-volume them — out-*convert* them with instant AI screening. Where: new surface in apps/admin; reuse assessment/voice pipeline in apps/app/.../assessment. Evidence: /teardown.html"Outbound AI sourcing"; /gallery.html → filter Sourcing/talent pool (see Wrangle's depth).

2.3 — Careers design templates + live device preview M 🔴

What: Starter gallery of 4–6 visual careers/job-page themes + an inline live desktop+mobile preview that re-renders on edit (mirror Homerun's instant theme-swap). Why now: GF 1/3, far behind. Big "wow" gap in demos and a real time-to-publish blocker for non-designers; our careers builder has the content model but no theming/preview. Where: apps/admin/.../dashboard/settings/careers (careers_pages model exists); candidate render in apps/web/.../careers/[slug]. Evidence: /teardown.html"Design templates + live device preview"; /gallery.html → Homerun Careers page & branding.


TIER 3 — Parity & polish (after Tiers 1–2)


Suggested sequencing

Caveats for tech