Skip to main content

AI-Assisted Job Search Automation

Job Pipeline

A job-search assistant that reduces the repetitive work around finding, comparing, drafting for, and tracking roles without applying on the candidate’s behalf.

Job Pipeline repository table listing seven workflow exports with their schedules and responsibilities.
Source: Public repositoryThe checked-in workflow inventory makes each independently scheduled export and its responsibility explicit before activation.

Public evidence

These reviewed public sources support the adjacent build claims; they do not imply adoption or unmeasured outcomes.

Problem

Target user
A job candidate reviewing OnlineJobs.ph at scale who still wants to judge fit and submit every application personally.
Challenge
Finding new listings, removing duplicates, checking fit, drafting from real experience, and tracking outcomes consumes time before an application is even sent.
Why it mattered
A retry can surface the same role twice, a fluent draft can claim unsupported experience, and an automated sender can take away the candidate’s final judgment.

Constraints

  • The seven n8n workflows run independently and must handle retries, moved rows, unfinished work, and older records.
  • Drafts and scoring must stay grounded in one versioned candidate profile and policy set.
  • Live OnlineJobs.ph, Google Sheets, Groq, Slack, and n8n actions are disabled by default while deterministic checks run.

Solution

The pipeline prepares a smaller, better-supported review queue; the candidate decides what is true, worth pursuing, and ready to send.

  1. Twenty-two evidence-linked searches find listings and compare them with active and archived history using a canonical job identity.
  2. Qualification and opportunity scores prioritize roles before Groq prepares experience-grounded application material and Slack alerts.
  3. The candidate performs manual review, submits outside the automation, records outcomes, and receives deduplicated analytics and recommendations.

Engineering Decisions

  1. Generate seven automations from one policy

    Constraint
    Editing exported workflows directly would let runtime behavior drift from profile, ranking, alert, analytics, and application rules.
    Decision
    Treat versioned configuration as the source of truth and generate the seven workflow exports and Sheet setup from it.
    Rationale
    Review and test one set of rules before producing the files n8n and Google Sheets consume.
    Validation
    The validation command checks generated-artifact drift and runs 147 deterministic tests without live service calls.
  2. Give every listing one durable identity

    Constraint
    Independent schedules, retries, legacy rows, and reviewer actions could otherwise duplicate work or overwrite a newer decision.
    Decision
    Use canonical job identities, append-only claims, processing tokens, state guards, idempotent upserts, and archive confirmation before deletion.
    Rationale
    Recognize the same listing across active and archived Sheets even when work overlaps or retries.
    Validation
    Regression fixtures cover duplicate discovery, stale claims, concurrent review, partial archive writes, row shifts, and legacy records.
  3. Automate preparation, never submission

    Constraint
    The pipeline needed better prioritization and feedback without allowing generated output or aggregate analytics to take action for the candidate.
    Decision
    Keep review, Apply Points, submission, and outcomes explicit while limiting analytics and weekly recommendations to versioned, evidence-backed advisory output.
    Rationale
    Use past outcomes to improve the review queue without making the candidate’s decision.
    Trade-off
    The system prepares and prioritizes work but never applies for a job.

Outcomes

Product and delivery

  1. 7 workflows

    Jobs split by responsibility

    Separates discovery, generation, Slack alerts, manual review, archival, analytics, and recommendations into independently scheduled n8n workflows.

  2. 22 queries

    Repeatable search coverage

    Runs a versioned search catalog while reconciling active and archived records around one canonical job identity.

  3. Manual-only

    Candidate keeps control

    Prepares application material while requiring the candidate to review and submit every application.

Implementation evidence

  1. 147 tests

    Checked without live actions

    Covers profile and policy contracts, discovery, ranking, generation, review, alerts, archival, analytics, recommendations, generated artifacts, and a synthetic lifecycle.

Learnings and Next Steps

What I learned

  • The safest way to maintain exported automation is to generate it from checked-in rules instead of editing seven copies by hand.
  • A durable listing identity matters more than row position when schedules overlap, retries happen, and records move to an archive.

What I would improve

  • Enable external services one at a time, inspect real listing, Sheet, model, and alert behavior, then increase the schedule frequency.

What remains unvalidated

  • The 147 deterministic tests prove checked-in behavior, not better application conversion or reliable live provider performance.