Shaheer Sarfaraz
7514aa1b28
Add RxResume v4/v5 dual support ( #230 )
...
* feat(settings): add rxresume mode and v5 api key settings
* feat(server): add mode-aware rxresume adapter with auto v5-first selection
* refactor(server): route settings profile and pdf generation through rxresume adapter
* feat(api): support rxresume v4/v5 in onboarding and settings routes with ok/meta responses
* feat(client): add rxresume mode selector and v5 api key setup flow
* docs: document rxresume auto mode with v5-first self-hosted setup
* test: verify dual-mode rxresume support and ci parity checks
* comments
* services folder
* correct types for v5
* tests and docs fix
* Fix RxResume auto fallback and route API consistency
* warning for both being set
* simpler response
* onboarding component improvements, v5 check still not working
* fix list resume endpoint...
* fix api endpoints to latest v5 docs
* don't show the entire project field on v5
* remove auto entirely
* formatting
* ci green
* v5 has a different resume schema
* remove redundant check
* remove requirement that only one must be specified
* consolidate sections
* base resume can be v4 or v5
* saving now works
* status indicator
* actually render some pills
* reason for failure
* fix apikey verification
* dedupe isValidatingMode
* reefactoor
* simplification?
* refactor?
* ci passing
* remove auto from docs
* tailoring is schema dependent
* skills object tighter
* remove redundant text
* fix lint
* mode
2026-02-25 02:26:15 +00:00
Shaheer Sarfaraz
f3c164d252
feat(pipeline): parallelize discovery/process via evolved asyncPool ( #211 )
...
* feat(pipeline): centralize concurrency hooks and parallelize discovery/process steps
* feat(orchestrator): unify single and bulk job actions API
* job actions de-bulk-ified
* application inbox section debulk
* chore(orchestrator): remove remaining bulk wording from job action flow
* select multiple to skip with shortcut
* comments
* coomeents
* fix progress ordinal and add jobs actions payload examples
2026-02-20 16:49:13 +00:00
Shaheer Sarfaraz
5ed74bb59c
Tracer links ( #174 )
...
* initial commit
* format links right
jobops.dakheera47.com/cv/shaheer-google-de
* don't support legacy
* remove phishing look
* smaller links
* readiness check in settings
* rework UX
* right col
* pop a modal
* modal improvements
* show links
* documentation disclaimer
* fix(tracer-links): preserve descriptive resume link labels
* fix(tracer-links): classify bot user agents before browser families
* fix(tracer-links): reject non-http redirect destinations
* fix(tracer-redirect): disable caching for tracked redirects
* fix(origin): prefer canonical public base url over forwarded headers
* fix(auth): protect tracer analytics routes behind basic auth
* fix(ui): rename misleading tracer drilldown human metric
* style(tests): format tracer-links invalid-destination assertion
* fix(tests): prevent mocked fs from breaking sqlite data-dir resolution
* style(docs): format versioned docs json for biome
* fix(tests): mock tracer-links in pdf skills validation suite
2026-02-18 22:05:15 +00:00
Shaheer Sarfaraz
032626bd7d
Fix #162 : real-time bulk action streaming progress ( #187 )
...
* initial
* refactor: centralize SSE plumbing for client and server
* docs: add centralized SSE usage standards to agents guide
* use sse to stream actions to the client
* ui: align bulk progress toast with default sonner style
* ui: remove hide action from bulk progress toast
* full width progress bar
* fix(stream): track client disconnect and writability
* fix(stream): stop bulk loop when SSE client disconnects
* fix(stream): avoid writing error/end to closed SSE response
* fix(stream): gate started/progress frames on writable SSE socket
* types(api): narrow SSE stream payload input contract
* refactor(ui): share clamp helper for bulk progress
* fix(stream): add heartbeat to bulk action SSE route
* feat(stream): include completed count in bulk completion event
* fix(client-sse): separate parse vs handler errors and cancel reader
2026-02-18 15:54:39 +00:00
DaKheera47
8b8120bf1d
single thread
2026-02-15 22:19:55 +00:00
DaKheera47
00531c83c4
initlal commit
2026-02-15 22:16:50 +00:00
Shaheer Sarfaraz
d0b4091a60
Ghostwriter Introduced ( #166 )
...
* initlal commit
* Ghostwriter always enabled
* rename code
* ghostwriter panel
* separate component
* ui improvements
* single thread
* copy improvement
* dont pop up keyboard shortcuts
* markdown renderer
* ghostwriter button placement
* better UX
* ghostwriter copy
* meta shortcut
* better settings menu
* formatting
* doocumentation
* add tests
* race condition
* race condition 2
* pass title
* more comments
* comments
* formtting
2026-02-15 22:03:37 +00:00
Shaheer Sarfaraz
687fd5e91f
feat(post-application): automatically pull from email ( #145 )
...
* feat(post-application): add schema and shared types for provider ingestion (#136 )
* test(orchestrator): ensure full localStorage shape in vitest setup
* feat(post-application): add provider registry and dispatcher framework (#137 ) (#146 )
* Implement Gmail provider credential persistence (#147 )
* Add unified post-application provider action API (#148 )
* Implement Gmail ingestion sync with 95/60 relevance policy
* Implement Gmail ingestion sync with 95/60 relevance policy (#149 )
* feat(post-application): add job mapping engine with llm rerank fallback
* feat(post-application): add inbox review APIs with transactional approve/deny (#151 )
* feat(post-application): add tracking inbox UI with provider controls (#152 )
* oauth implementation
* UI changes
* see past runs in more detail
* occurred at comes from email
* state mismatch
* better UI representation
* comments
* comments
* comments
* comments
* documentation
* explainer
* set things manually
* scrolling
* any found email can be pending
* searchable download
* Email-to-Job Matching Decision Tree
* email viewer list improvement
* simplification initial commit
* exclude discovered jobs
* show only resady
* dropdown
* mermaid
* syntax
* targets is the same as logging that is done manually
* event label
* duplicate avoidance
* clean up html
* token saving
* print
* send idx not uuid
* remove logging
* formatting
* better documentation
* documentation
* comments
* process all
* comments
2026-02-12 19:48:25 +00:00
Shaheer Sarfaraz
fe0aebe01a
Small bits and bobs, codebase quality ( #129 )
...
* initial change
* nav highlighting
* icon change
* deeeedoooop
* text
* show version number on all pages
* icon
* remove unused code
* add knip
* formatting
* remove unused code
* types fix
* remove notion completely from the codebase.
* update test for new url structure
* clean up the fucking shop boys
* make a "create job" factory and use that
* moar factories
* formatting
2026-02-10 20:01:58 +00:00
Shaheer Sarfaraz
2962e0c2ae
Fix password manager autofill for pipeline auth ( #92 ) ( #127 )
...
* Fix basic auth flow to support password manager autofill
* fix orchestrator CI typecheck in api client
* clear basic auth fields when prompt closes
* update basic auth dialog description copy
2026-02-10 18:05:47 +00:00
Shaheer Sarfaraz
b456ab1951
Job api performance ( #117 )
...
* feat(api): add lightweight jobs list view without pagination
* refactor(client): use lightweight jobs list and on-demand job detail
* refactor(ui): separate job list rows from full job detail
* perf(home): reduce jobs payload to applied lightweight rows
* perf(db): add safe composite index for jobs list queries
* feat(api): default jobs endpoint to lightweight list view
* style: apply biome formatting for jobs list-view changes
* feat(api): add jobs revision endpoint for lightweight change detection
* refactor(client): switch jobs auto-refresh to revision checks
* perf(client): drive pipeline freshness via sse with polling fallback
* refactor(orchestrator): remove pipeline status polling loop from page
* chore(client): add periodic safety refresh and refresh lifecycle hardening
* refactor(types): define JobListItem via Pick<Job> to prevent drift
2026-02-09 20:49:54 +00:00
Copilot
3d7a014891
Remove /ukvisajobs page and related API surface ( #115 )
...
* Initial plan
* Remove ukvisajobs page and API
Co-authored-by: DaKheera47 <53654735+DaKheera47@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: DaKheera47 <53654735+DaKheera47@users.noreply.github.com>
2026-02-09 18:39:33 +00:00
Shaheer Sarfaraz
a409aa5ee0
Live scraping updates in pipeline UI ( #100 )
...
* initial commit
* fix clear script
* cancelling pipelines
* formatting
2026-02-07 22:44:00 +00:00
Shaheer Sarfaraz
cfabee5f45
Select multiple jobs for bulk actions ( #94 )
...
* Initial implementation
* UI
* UI
* floating bar animations
* UI and split up orchestrator page
* remove bulk action hint
* UI
* UI
* formatting
* fix lint
* enforce max actions
2026-02-07 14:39:49 +00:00
Shaheer Sarfaraz
6353a23f6f
Small wins style tickets ( #88 )
...
* wrap text
* version check!
* initial commit for "remove below score" in pipeline, or manually
* comments
2026-02-05 19:17:14 +00:00
Shaheer Sarfaraz
c4749b4211
feat: opinionated public DEMO_MODE with simulated/blocked actions, resets, and demo toasts ( #87 )
...
* feat(demo): add DEMO_MODE runtime helpers and /api/demo/info endpoint
* feat(demo): enforce simulated and blocked API actions under DEMO_MODE
* feat(demo): add deterministic seed dataset and 6-hour auto-reset
* feat(demo-ui): add demo banner and custom sonner toasts for simulated/blocked actions
* test+docs(demo): add demo mode coverage, behavior matrix, and operator docs
* formatting
* tests
* feat(demo): seed resets from typed baseline defaults
* formatting
* feat(demo): enrich baseline seed data and demo project catalog
* feat(demo): expand seeded applications and chart time ranges
* refactor(demo): split demo seed data from generation logic
* feat(demo): cap generated application history to 30 days
* feat(demo): rebalance generated job status distribution
* feat(demo-ui): make demo banner fixed and topmost
* minor fixes
* formatting
* duration revert
* durations
* feat(demo): share demo info hook, brighten demo toasts, and enforce webhook auth
* comment explaning
* formatting
* comments
* deadline builder comment
2026-02-05 16:04:04 +00:00
Shaheer Sarfaraz
16a8f1d15a
Use logger! add shim to convert backend responses to same format ( #84 )
...
* chore(orchestrator): add @infra import alias
* feat(server): add error/http/context/logger/sanitize infrastructure
* refactor(core): propagate request context, structured logs, and sanitization
* test/docs: update API contract assertions and contributor standards
* all pages working
* normalizing
2026-02-04 23:07:24 +00:00
Shaheer Sarfaraz
b94f85b149
Reduce low risk duplication ( #79 )
...
* clean up helpers
* shared in it's own top level folder
* workspaces setup
* build fix
* disable workspaces?
* run ci
* rename job-flow to gradcracker
* optional dependencies
* formatting?
* more optional modules
* allow post install runs
* node bump
* remove post install
* add optionals
* add more
* formatting
* comments, but im unsure
* run typescript DIRECTLY
* better build
* camoufox simplification
* lint
* build process doesn't exist
* build fix
* lockfile
* type check everything, build only for client
* rename steps correctly
* import from package!
* fix formatting
* don't fetch twice
* fix concern
2026-02-02 21:30:14 +00:00
Shaheer Sarfaraz
179deffe13
Database backups ( #75 )
...
* initial commit
* test fix
* manual test
* copilot comments
* code quality skill
* comments
* fix types problem
* formatting
* tests now correct for new backup method
* UTC dates
2026-02-02 00:07:39 +00:00
Shaheer Sarfaraz
b4641ad9cb
Customise llm base url ( #68 )
...
* backend initial commit
* frontend initial commit
* better copy
* make lmstudio work
* enum of providers
* better error messages
* llm model settings stay in one place
* llm settings should be under the model accordion
* skip llm key step in onboarding if provider is set to local
* onboarding now factors in new llm provider flow
* fix tests
* fix typecheck
2026-01-29 16:20:12 +00:00
Shaheer Sarfaraz
6e771ce728
Timeline introduced ( #38 )
...
* initial implementation
* onboarding doesn't pop until invalid values are present
* link to job page
* proactive inputs working slightly
* onboarding gate reinstated
* better proactive buttons
* fully manual tracking for now.
* edit and delete timeline events
* status showing correctly
* tests update
* tests
* Update orchestrator/src/server/services/applicationTracking.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update orchestrator/src/server/services/applicationTracking.test.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update orchestrator/src/server/services/applicationTracking.test.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update orchestrator/src/client/pages/job/Timeline.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update orchestrator/src/client/pages/JobPage.tsx
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* add tests for application tracking routes and remove unused actionId from client API
* remove unnecessary await from synchronous transitionStage calls and improve test isolation
* relax externalUrl validation to allow non-URL metadata
* add toast notifications for data loading and event logging in JobPage
* comments
* fix: resolve type error in sponsor-matching.test.ts
* fix ci
* tests fix for github
* lint
* github comments
* build fix
* dedupe
* format
* types fix
* Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* formatting
* title and group id are discrete fields
* backfill
* hide view button on page
* show relevant dropdown options
* confetti!
* remove redundant
* confirm delete is a custom element now
* formatting
* fix styling
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-27 23:49:11 +00:00
DaKheera47
5c2eef2fc8
ran check:fix in orchestrator
2026-01-25 12:41:44 +00:00
DaKheera47
35365b5fca
initial commit
2026-01-25 11:50:04 +00:00
Shaheer Sarfaraz
a2114cc454
Merge pull request #30 from anasyd/main
...
feat: add option to fetch from a link
2026-01-24 13:47:32 +00:00
Anas Syed
867a13cf22
feat: add option to fetch from a link
...
Clean raw HTML to JSON to pass to an LLM
2026-01-23 18:22:37 +00:00
DaKheera47
3f37029dfd
address comments
2026-01-23 12:08:17 +00:00
DaKheera47
a268bfdd59
onboarding UI ensures that we have a resume base id when we're in the app
2026-01-23 11:59:02 +00:00
DaKheera47
9dfb862649
ready panel now works with external resume json instead of local
2026-01-23 11:40:34 +00:00
DaKheera47
7a358db317
settings page can pull and save resume details from v4 api template
2026-01-23 11:06:25 +00:00
DaKheera47
44779c96fa
Merge branch 'main' into reactive-resume-v5
2026-01-22 22:57:37 +00:00
DaKheera47
9c1252c7fd
onboarding validation for each field
2026-01-22 21:29:05 +00:00
DaKheera47
7f7e76dc3f
Initial commit for UI
2026-01-22 18:57:11 +00:00
DaKheera47
a81b1f0e58
use settings input component
2026-01-22 12:24:14 +00:00
DaKheera47
7e1f9454d4
Initial commit for env in UI
2026-01-22 11:45:17 +00:00
DaKheera47
3e32b6c8c4
no anys
2026-01-21 16:42:57 +00:00
DaKheera47
7c524f5d63
revert to get to not break readonly mode
2026-01-21 15:26:25 +00:00
DaKheera47
6a3a25578a
use person name from base.json for file downloads
2026-01-21 14:48:17 +00:00
DaKheera47
1fd6a4b4c2
initial commit
2026-01-20 22:11:09 +00:00
DaKheera47
47fd4a0959
api implemented
2026-01-20 12:02:58 +00:00
DaKheera47
d506966d4c
try and consolidate duplicate helpers
2026-01-20 07:58:49 +00:00
DaKheera47
4f4f00e42c
manual import initial comit
2026-01-19 18:39:14 +00:00
DaKheera47
e56aa1aa03
umami tracking
2026-01-16 15:00:46 +00:00
DaKheera47
32bf09551b
removing unused code
2026-01-15 23:25:43 +00:00
DaKheera47
2cf9249159
gradcracker limits
2026-01-15 19:17:23 +00:00
DaKheera47
717987c5cc
"rejected" isn't a thing. it's "skipped"
2026-01-15 14:06:14 +00:00
DaKheera47
383403f0ac
visa sponsors page
2026-01-15 12:35:44 +00:00
DaKheera47
e54b5f2178
more jobspy settings
2026-01-11 18:15:17 +00:00
DaKheera47
5d7c394650
diff models for diff work
2026-01-11 15:30:23 +00:00
DaKheera47
0ec38773b5
job pagination
2026-01-10 23:52:36 +00:00
DaKheera47
cd5ec25c3b
allowing tailoring of resume before being manually built
2026-01-06 23:06:19 +00:00