Amanda Hanson / Product & Systems
← All projects

PROJECT / JOB SEARCH TRACKER

Job Search Tracker.

Using structured data and AI-assisted review to focus my job search.

THE PROJECT AT A GLANCE

A clearer next decision.

The problem

More collected opportunities meant more review work. I needed a way to compare evidence and focus limited application time.

What I built

A PostgreSQL tracker and ChatGPT-assisted workflow, with separate source facts, AI assessments, human decisions, and specified review-queue rules.

What testing revealed

The local automation experiment produced unsupported fit claims and exposed a retrieval-order problem. It did not reproduce the quality of the existing review process.

What changed

Keep ChatGPT-assisted search and PostgreSQL records. Next, test reproducible code-based ranking and a Notion action board for selected openings. Current searches surface up to three priorities and two optional backups.

Current status: Working single-user SQL/ChatGPT tracker. Existing jobs and job_analysis tables remain in use. Deterministic ranking and the Notion opportunity handoff are proposed, not shipped. Queue SQL verification and time savings remain unconfirmed.

My contribution: Requirements, prioritization, data modeling, SQL implementation, and validation design.

OPTIONAL DEEPER READING

Workflow, prioritization, and automation lessons.

Open a topic to explore the decisions, examples, and implementation evidence.

Next steps: ranked jobs and an application task board

PRODUCT DECISION / OCTOBER 15, 2026

Keep what works. Make the next action explicit.

ChatGPT-assisted discovery and human evidence review are useful, and entering openings through SQL is manageable. I am retaining PostgreSQL for persistent job history and duplicate detection, including the existing job_analysis records. This iteration does not migrate or remove either table.

The next bottleneck is the handoff from a ranked opportunity to application work. The proposed change focuses on actionable priorities rather than rebuilding discovery as an autonomous agent.

Existing workflowProposed increment
ChatGPT-assisted search, posting checks, SQL records, AI assessment, and human review.Retain discovery and records. Pass the current priority shortlist plus new openings to a versioned ranking function.
AI priorities and stored review ranks help organize analysis.Use deterministic JavaScript or Python rules for numeric ranking, with rule contributions, source facts, and unknowns visible.
Reviewed opportunities still need a handoff into application tasks.Create or update selected open opportunities in a Notion action board with posting links, next steps, and application materials.

Rules before automation

  • Separate hard eligibility checks from weighted preferences. Full-time work, the USD70,000 gross-base floor, geography/commute, weekday schedule, and role scope inform screening; unknown facts remain unknown and require clarification.
  • Check availability before ranking active openings. Reassess the current shortlist alongside new candidates rather than ranking new finds in isolation.
  • Make scores reproducible and explainable. Exact weights and treatment of incomplete evidence still need calibration against prior human decisions.
  • Use stable posting identity or Job ID for Notion updates. Preserve user-owned decisions, notes, application records, and material links; repeated runs must not duplicate tasks or reset statuses.
  • Keep up to three priorities and two optional backups as an attention limit. Fewer eligible opportunities is acceptable; reserves do not automatically become new work.
  • Human actions remain explicit: review, tailor, apply, and follow up. No automatic application submission or outreach.

Smallest next test

Run one fixed batch through a standalone ranking function, compare its ordering and explanations with existing human judgments, and manually review the Notion handoff. Test repeat runs and preserved decisions before adding programmatic sync. n8n transport or notifications can follow only if useful.

Status: This is the next design direction. The ranking function, opportunity-board sync, and n8n handoff are not implemented or verified by this portfolio update. Existing SQL analysis remains useful and intact; any future retirement would require a separate backup and dependency review.

Success still needs evidence: useful priorities, clear next actions, fewer repeated handoffs, and measured application effort. No time saving or hiring result is claimed. The earlier model, queue specification, and local-agent findings below document how this direction evolved.

How job information and assessments are organized
01 / THE PROBLEM

Tracking applications wasn’t the whole problem.

Searching across adjacent career paths meant comparing roles with inconsistent titles, buried qualifications, and different expectations. I needed to understand which opportunities were aligned with my experience and which were realistic transition targets.

A record of applications captures what happened. I also needed to preserve the evidence and reasoning behind what to do next.

Which opportunities deserve my limited application time—and how should I position my experience?
02 / REQUIREMENTS

Design around the decisions.

  • Capture useful evidence.
    Preserve responsibilities, required qualifications, preferred skills, salary, and location when available.
  • Make reasoning reviewable.
    Separate posting information from fit assessments, gaps, and review notes.
  • Support a deliberate handoff.
    Move from opportunity review to application strategy, then to résumé tailoring.
  • Keep human choice central.
    Use AI recommendations to inform review rather than treating them as final decisions.

03 / SOLUTION DESIGN

Analyze first. Review a bounded queue.

Posting evidence feeds AI assessment before the consequential human decision. Availability and career fit remain separate signals.

  1. 01Discovery & evidence

    Capture responsibilities, qualifications and source links.

  2. 02Store & check availability

    Store records; exclude closed or likely removed listings.

  3. 03AI fit analysis

    Assess alignment, gaps and uncertainty.

  4. 04Ranked review queue

    Surface up to three; retain inspectable reserves.

  5. 05 / HUMAN DECISIONHuman decision

    Review evidence, question recommendations, and record a decision.

  6. 06Application preparation

    Develop positioning and tailor materials with further review.

Personally operated: AI produces SQL, I execute it in DBeaver, and exported records feed the next prompt. Queue SQL is prepared; working-database verification is pending. This site does not connect to the job database.

04 / DATA MODEL

Separate the opportunity from the opinion.

Posting information and analysis change for different reasons. Keeping them in separate tables allows an opportunity to be reassessed without conflating the source record with its interpretation.

jobs

Title · Company · Location
Salary · Posting evidence
Application link · Application status
Listing availability · Checked date

job_analysis

job_id · Human fit stage
AI fit stage · AI priority
Decline reason · Review notes
Analysis basis · Analyzed at
Review batch · AI review rank

job_id relates the tables; job_review_queue derives labels from availability, AI fit, rank, and human decisions. Batch/rank fields are part of the prepared migration.

05 / DESIGN DECISIONS

The thinking behind the system.

Select a perspective to explore the same project through different hiring lenses.

BUSINESS ANALYSIS

Better inputs make the assessment more useful.

The discovery prompt was revised to capture responsibilities and qualifications rather than relying on introductory snippets or company marketing. The requirement was driven by a downstream need: fit analysis must have relevant posting evidence.

Evidence → requirements → a more reviewable recommendation.

Why fit review comes before résumé tailoring

Fit review answers whether an opportunity is worth pursuing. Application strategy determines positioning and extracts keywords from the full description. Résumé tailoring then uses that strategy and an existing résumé as inputs. Each component has a narrower job and a clearer handoff.

Recognizing transferable experience and career fit

Stages including “Not a Fit” and “Transition Target” give the workflow vocabulary beyond a simple match score. They help distinguish misalignment from an opportunity that could support a career transition.

Separating closed listings from poor-fit roles

A closed opening is not evidence that the candidate is a poor fit. Availability lives with the job record. Unavailable jobs skip new analysis and the active queue; historical assessments remain.

Prioritizing jobs: review limits, examples, and testing
06 / THE WORKFLOW IN PRACTICE

AI assessment.
Human judgment.
A recorded decision.

Explore the project source

I used the workflow to evaluate 17 opportunities, storing structured fit assessments and adding my own classifications and review notes. AI recommendations inform the review; the decision to pursue an opportunity remains mine. Some opportunities are still awaiting human review.

This is a personally operated, single-user prototype. Separate AI prompts and database records support the workflow; I review the analysis and record my judgment.

WORKED EXAMPLE / AI ENABLEMENT OPPORTUNITY

Assess the gap alongside the transferable experience.

  1. AI assessment

    High-priority “Transition Target,” based on responsibilities spanning workflow analysis, internal tools, automation, training, and adoption.

  2. Human review

    I identified a possible seniority gap while recognizing strong overlap with my previous tools-engineering experience.

  3. Recorded judgment

    Retained “Transition Target” and noted that the opportunity was worth applying for.

The review checkpoint preserves nuance: a possible experience gap can warrant further consideration when the underlying responsibilities align with demonstrated capabilities.

An anonymized example from an actual tracker record. This shows a review decision, not a completed application or hiring outcome.

Observed iteration: strengthen the posting evidence.

I revised discovery to preserve responsibilities and required and preferred qualifications, then reran the fit analysis using the enriched posting excerpts. The stored analysis basis records the changed evidence and identifies the profile and prompt versions used.

Reassessment replaced the previous AI analysis. The current export documents the revision and rerun; a retained before-and-after comparison is still needed to evaluate whether the recommendations improved.

Next product decision: clarify what each field means.

Reviewing the prototype revealed two opportunities to reduce ambiguity in the data model:

  • Separate review status from fit classification. “Pending review” describes completion; “Transition Target” describes alignment.
  • Separate concerns from final declines. A qualification or work-style concern can inform a review without meaning the opportunity has been rejected.

Evidence: October 12, 2026 export containing 17 opportunity analyses. Proposed field refinements are next iterations, not implemented features.

07 / PRODUCT ITERATION

More opportunities created more work.

After a six-job discovery run, I found that reviewing every listing and updating the table was too much work. I defined a queue that surfaces three eligible candidates while preserving the rest for later.

USER NEED

A clear stopping point.

SCOPE DECISION

Three now. Inspectable reserves.

IMPLEMENTATION STATUS

SQL prepared; database verification pending.

Rules before interface.

  • Ranks 1–3 are Review now; later ranks are Reserve.
  • Closed or likely removed listings are Unavailable, independently of fit.
  • AI screening and human decisions remain separate.
  • No automatic promotion; fewer than three is allowed.
  • Equal candidates receive a job-ID tie-break; new batches keep separate queues.

The tradeoff.

I retained reserves so recommendations can be inspected and overridden. I deferred automatic replenishment because it would turn a bounded session into a moving target.

The joined view derives labels. Human decisions stay in the original tables and survive AI reassessment.

The cap applies to a selected batch, not all historical batches combined. The current search presents three review priorities plus up to two optional backups; the original six-item example below illustrates the underlying reserve rules.

INTERACTIVE EXAMPLE / SYNTHETIC DATA

A decision changes the label, not the backlog.

Change availability or mark a candidate reviewed. Reserves stay in place. These controls illustrate the rules and do not update the database.

Six sample opportunities in a fixed batch
CandidateRankAvailabilityHuman reviewQueue

Nine reference checks passed for queue labels, uniqueness, missing evidence, human decisions, and batch separation. PostgreSQL fixtures, working-database verification, and user evaluation remain pending. This example is illustrative, not live output.

08 / EVALUATION

Show the work. Measure the effect.

Implemented and used

Structured opportunity assessments, AI priority and fit classifications, and recorded human review notes support an active job-search workflow. The worked example above demonstrates how I review an assessment before deciding whether to pursue a role.

What I’ll evaluate next

  • Actual review minutes and whether the three-item stopping point feels manageable.
  • Useful top-three candidates and promising opportunities in reserves.
  • Where AI recommendations and human judgment differ, and why.
  • Promising roles incorrectly classified as poor fits.
  • Whether the strategy output is usable in résumé tailoring.

Six records becoming three default review items describes presentation scope. It does not establish a 50% reduction in time. Review-time savings, ranking quality, and hiring impact remain to be measured.

Automation experiment: findings and a smaller scope
09 / TECHNOLOGY & AUTOMATION

Connect the tools.
Keep the decisions clear.

I built and tested a local n8n workflow to reproduce my ChatGPT-assisted search process. The experiment exposed quality gaps and implementation overhead, leading me to narrow automation toward clerical handoffs. Source evidence, AI assessments, and human decisions remain separate.

CURRENT PROJECT TOOLKIT

Data, configuration & evidence

PostgreSQL & SQL
Relational opportunity records, separate assessments, joined review queries, and prepared queue logic.
DBeaver
Database inspection, query execution, and exports for the current workflow.
GitHub & Git
Versioned prompts, search configuration, feature requirements, SQL, and verification examples.
YAML & Markdown
Explicit search preferences, reusable AI instructions, and readable decision records.
AI-assisted analysis
Posting interpretation and evidence-grounded fit reasoning, followed by human judgment.

LOCAL AUTOMATION EXPERIMENT

n8n, Docker & JavaScript

n8n
Built a search and preliminary-analysis workflow; the broader database and review integration remains incomplete.
Docker
Ran the experiment locally in a container-based environment.
JavaScript
Implemented workflow logic and data handling for the local automation experiment.
Ollama & Qwen
Tested local model inference for posting interpretation and preliminary fit analysis.
Search APIs & structured JSON
Used web-search results and structured model responses; validation surfaced unsupported claims and contradictions.
Run & assessment history
Planned: retain configuration versions, evidence timestamps, errors, and reassessments so ranking changes can be explained.

Revised scope: support the application process.

Prioritize collecting posting text, recording links and deadlines, tracking status, and organizing documents. Keep selection, fit assessment, and résumé tailoring in the ChatGPT-assisted process until an automated alternative demonstrates useful quality and time savings.

The local experiment is not an end-to-end autonomous service. Database integration, versioned assessments, and measured time savings remain unverified or planned. Human decisions and the bounded review queue remain core requirements.

10 / EXPERIMENT & SCOPE REVISION

When automation
became extra work.

Local prototype evaluation · October 2026

The goal was to spend less time processing opportunities and more time applying. I explored whether a local agent could reproduce the job-search workflow I had been using in ChatGPT. Testing showed that the implementation was not yet meeting that goal.

What I tried

I combined n8n, JavaScript, Docker, and Ollama/Qwen models on my machine to search for openings, interpret posting evidence, and assess preliminary fit against my YAML profile. In a separate experiment, I used ChatGPT to discover ATS keywords and tailor a résumé without first supplying Jobscan’s keyword list.

What the evidence showed

EXAMPLE 01 / LOCAL FIT ASSESSMENT

A Product Manager result was marked as a preliminary pass, but its summary said compensation was acceptable while its salary check said unknown. It also treated general engineering and coordination experience as evidence for independent SQL proficiency and product seniority. The validator rejected the assessment.

The workflow then blocked full-posting retrieval because the preliminary assessment was invalid. This exposed a sequencing problem: it required a supported fit decision before collecting the evidence needed to make one.

EXAMPLE 02 / ATS KEYWORD EXPERIMENT

The closest result I reached without providing Jobscan’s keyword list was a 63% Jobscan score. That test did not reproduce the tool’s grading result; it did not establish that my résumé was only a 63% fit or predict an employer’s decision.

Self-reported experiment result. No controlled comparison or hiring outcome is claimed.

The product decision

In the outputs I tested, the local workflow did not reproduce the match quality of my ChatGPT-assisted process. Continuing to engineer the search also competed with the time available to submit applications. I revised the scope around the actual user outcome: qualified applications completed, with useful evidence and accurate positioning.

  • Retain the working process. Use ChatGPT and human review for job selection, fit assessment, and résumé tailoring.
  • Automate clerical work first. Collect descriptions, record links and deadlines, track application status, and organize documents.
  • Defer score replication. Use relevant posting terminology where supported by actual experience; stop optimizing the workflow around reproducing Jobscan’s score.
  • Cap experimentation. Prioritize application work. The current employment plan caps skill refresh at 90 minutes weekly; do not let tracker engineering become a prerequisite to applying.
Will this change save time on my next five applications?

If the benefit is uncertain, the feature goes into the backlog. The next evaluation will track qualified applications completed, responses received, actual time spent, and whether the automation reduces repetitive work.

These findings describe this implementation and the outputs tested, not a general benchmark of local models. The scope revision is documented; its effect on application volume, review time, and hiring outcomes remains to be measured.