Duplicate postings, unreliable source checks, changed resumes, and uncertain submissions can create incorrect records or repeated work. I customized a Python-based workflow to make the next action depend on the evidence available.
An independent customization and maintenance project based on Mads Lorentzen's AI Job Search, which supplied the original framework and commands.
Independent workflow customization and maintenance
Tools
Python, Git, JSON/CSV records, PDF checks, dot · AI assistant coordination, and Hermes reports and audits
On this page
A workflow diagram, three customizations, four review points, one synthetic walkthrough, and focused validation
My contribution
Three additions to the existing workflow.
Make resume verification depend on current inputs
Problem
A previous check may no longer cover an edited resume or changed supporting evidence.
My change
I added saved verification records tied to the document and evidence inputs, with invalidation when those inputs change.
How I checked it
A regression test changes the resume source, PDF, verification contract, and claim text in turn, then checks that the earlier verification is no longer valid.
Preserve uncertainty after a submission attempt
Problem
An interrupted portal session can leave it unclear whether the application went through.
My change
I added submission-state recovery rules that require a status check before another attempt and evidence before recording confirmation.
How I checked it
Regression tests check that an uncertain attempt cannot be reset without evidence and that a confirmed state requires success evidence.
Separate planned follow-ups from actual contact
Problem
A draft or promise to send can be mistaken for completed outreach, making follow-up counts and reminder dates unreliable.
My change
I separated planned messages from confirmed sends, based reminders on actual contact dates, and kept ambiguous historical entries flagged for review.
How I checked it
Focused tests use synthetic records to verify that drafts do not consume follow-up attempts, duplicate records of the same sent message count once, and administrative edits do not reset the contact date.
Workflow diagram · Human review at consequential steps
From a request to a verified record.
dot is the AI assistant coordinating my requests and local project work. The local workflow handles checks and records; I review decisions and authorize submissions. Hermes reads the existing state for reports and audits.
Requested work and application decisions
Jonathan: request and scope
Set the task, preferences, and constraints.
↓
dot · AI assistant: coordinate local work
Clarify missing details, pass constraints and evidence to local tasks, and bring results back for review.
↓
Local workflow: discover and check jobs
Normalize and deduplicate postings, retain snapshots, and verify employer or ATS availability and hard-gate evidence before ranking.
↓
Prepare and verify materials
Evaluate, draft, review, revise, and verify against supported candidate evidence. Prepared materials do not authorize submission.
↓
Jonathan: review and authorize
Review the materials and answers. Approve consequential consent, certification, and the final submission.
↓
Browser or Jonathan: complete portal steps
Complete authorized actions and any manual or account gates. Pause when a portal requires my action.
↓
Verify the outcome
Retain success evidence for the same job and account. An uncertain result stays unresolved and requires a status check before retry.
↓
Preview and record the result
Match the exact job, tracker row, and retained archive. Preview the update, then save only the supported status and artifacts.
These checks connect job identity, posting evidence, resume versions, and application status. Each determines what can proceed and what needs review.
01 · Job identity
Identify duplicate jobs
Compare job identities and combine matching discovery records, retaining source references and conflicting details.
Next action: Review conflicts before treating the links as one opening; keep ambiguous roles separate.
02 · Posting evidence
Verify the posting
Keep the posting snapshot, source, and check time together. A blocked or malformed response leaves the check unresolved; it does not establish that the job is closed.
Next action: Inspect an authoritative source before treating the posting as verified.
03 · Application materials
Check the resume
Check PDF page count and extracted text, then review layout and factual claims. A changed resume or relevant evidence input invalidates the affected prior verification.
Next action: Repeat the affected checks and human review before using that version.
04 · Application status
Confirm application status
Prepared materials and submission attempts are not confirmed applications. Require success evidence before marking a role applied.
Next action: If the outcome is uncertain, check portal status before deciding whether to submit again. Preview tracker changes before saving.
Synthetic illustration · Control 04
The portal stops responding after Submit.
This invented scenario illustrates the application-status control. It is not an execution log or a real application record.
Situation
The resume is prepared and checked. After an authorized submission attempt, the portal times out before showing a result.
Available evidence
The job, account, and attempted submission are known. No success confirmation has been observed.
Decision
Check the status for the same job and account. Do not repeat the submission while its outcome is unknown.
Resulting status
Keep the submission uncertain and the materials recorded as prepared. Do not mark the application confirmed.
What the status check permits next
If the portal confirms receipt
Retain the success evidence, record confirmation, and review the tracker update. Do not submit again.
If the result is still unclear
Keep the submission uncertain. Pause for human review and obtain an authoritative status check before considering another attempt.
If the portal establishes no submission
Record that evidence before resetting the submission state. Resume preparation and obtain approval for any new submission.
When maintaining resume verification, a key question is whether an earlier result still applies after an edit. The check compares the current inputs with those recorded during verification. Changed inputs reopen the affected checks, so an old result cannot silently cover a new version.
Executed validation: On September 19, 2026, three existing regression tests passed using temporary synthetic records: verification invalidation after input changes, recovery from an uncertain submission, and rejection of confirmation without success evidence.
On September 28, 2026, focused follow-up tests also passed using synthetic records, including planned-versus-sent handling, duplicate message records, and contact-date validation.
These are focused checks of the local implementation, not live portal submissions or a full-workflow test. Local change history and current code support the customizations described above.
Related work
Reporting and business-system projects.
See the Excel and Tableau reporting project and academic ServiceNow portal for different examples of organizing information and checking its quality.