Skip to content

feat: Job Hunt#40

Merged
Theauxm merged 10 commits into
mainfrom
feat/jobhunt
Apr 14, 2026
Merged

feat: Job Hunt#40
Theauxm merged 10 commits into
mainfrom
feat/jobhunt

Conversation

@Theauxm
Copy link
Copy Markdown
Member

@Theauxm Theauxm commented Apr 13, 2026

No description provided.

Theauxm added 10 commits April 10, 2026 13:11
First two trains for the JobHunt sample. AddJob validates input (URL or
pasted fields, not both) and persists a Job entity. ListJobs queries by
user with optional status filter. 41 tests total (26 unit, 15 E2E).
Profile trains (GetProfile, UpdateProfile) store skills, education, and
work history as JSON arrays per user. IJobScraper abstraction with
GenericHtmlScraper extracts job data from JSON-LD, OpenGraph, or plain
HTML. AddJob train now scrapes the URL when no pasted fields are provided.
70 tests (51 unit, 19 E2E).
OllamaLlmProvider calls local Ollama to generate tailored resumes and
cover letters. GenerateApplicationMaterials train chains four junctions:
load job+profile context, generate resume, generate cover letter, persist
artifacts. GetArtifacts query train reads them back. E2E tests inject a
stub LLM provider for determinism. 82 tests (60 unit, 22 E2E).
Scheduler wired with a MonitorAllActiveJobs manifest running every 24h.
The wrapper train fans out via ITrainBus to MonitorJobTrain for each
active job with a URL. MonitorJobTrain refetches, hashes, diffs against
the last snapshot, and closes the job on 404. JobSnapshot entity tracks
change history. 91 tests (67 unit, 24 E2E).
JobHuntLifecycleHook publishes events to HotChocolate subscription topics
when trains complete: User:{userId}:jobs, Job:{jobId}:materials,
Job:{jobId}:monitor, User:{userId}:notifications. Four subscription
endpoints wired via JobHuntSubscriptions. Added userId to AddJobOutput
so the hook can route events per-user. 96 tests (72 unit, 24 E2E).
…ractions

Contact, Application, EmailDraft, EmailSent entities with migration.
IContactEnrichmentProvider (ManualContactProvider) and IEmailSender
(StubEmailSender) provider abstractions. CreateApplication, ListApplications,
and FindContact trains. 101 tests (74 unit, 27 E2E).
WatchedCompany entity, WatchCompany and ListWatchedCompanies trains,
MonitorAllWatchedCompanies scheduled manifest (every 6h) that scrapes
each watched company's careers page and updates the fingerprint.
Second manifest alongside MonitorAllActiveJobs. 105 tests (75 unit, 30 E2E).
Vite + React + TypeScript + Tailwind app with urql GraphQL client
and WebSocket subscription support. Pages: dashboard with stats,
job list + add + detail, profile editor with JSON facets, application
kanban board, and watched companies CRUD. Sidebar layout with user
switcher (fake API key auth) and link to Trax dashboard. Vite proxy
forwards /trax to the Hub backend.
@Theauxm Theauxm merged commit e2899c8 into main Apr 14, 2026
1 check passed
@Theauxm Theauxm deleted the feat/jobhunt branch April 14, 2026 21:08
@traxsharp
Copy link
Copy Markdown

traxsharp Bot commented May 6, 2026

This PR is included in version 1.21.0

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.

1 participant