468 Commits

Author SHA1 Message Date
Shaheer Sarfaraz
f5aef7af24
Add RxResume URL setting to dashboard (#258)
* Add RxResume URL setting to dashboard

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-14 20:39:15 +00:00
Saad
f92b80dfe2
Add language settings for AI-generated resume output (#252)
* Add language settings for AI-generated resume output

* Resolve merge conflicts for language settings PR

* Fix language settings review feedback and CI lint

* Tighten language setting precedence and onboarding validation

---------

Co-authored-by: saad <Saad>
2026-03-11 18:24:01 +00:00
Shaheer Sarfaraz
faea61a249
Add support for generic OpenAI-compatible endpoint LLM provider (#253)
* initial

* fix regressions

* Fix OpenAI-compatible provider aliases

* Normalize OpenAI-compatible settings aliases

* Update shared/src/settings-registry.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-11 02:33:20 +00:00
DaKheera47
6454efd9a2 try.jobops.app 2026-03-10 16:37:27 +00:00
DaKheera47
daca4d2bd4 try.jobops.app 2026-03-10 16:35:46 +00:00
DaKheera47
11d1e9820b Update license 2026-03-10 15:46:57 +00:00
DaKheera47
579ab79010 don't fail if already bumped 2026-03-10 15:28:02 +00:00
DaKheera47
caf2b917c0 version bump test 2026-03-10 15:21:20 +00:00
DaKheera47
14085a977e initial commit 2026-03-10 15:16:00 +00:00
Shaheer Sarfaraz
ee6f889094
Improve ghostwriter output language guidance (#248) 2026-03-10 14:52:19 +00:00
Shaheer Sarfaraz
8c952a4011
Registry Architecture for Visa Sponsor sources (#246)
* initial

* lint fix

* docs!

* fix CI

* ci and runner fix

* fix + docs!

* make CI pass

* country specific search

* remove country specific language

* fix UI

* address comments

* Address visa sponsor PR feedback

* Address remaining visa sponsor review feedback

* Harden visa sponsor provider validation
2026-03-10 02:02:30 +00:00
Shaheer Sarfaraz
d70619e156
Update README.md to remove redundant image
Removed an unnecessary image and cleaned up the README content.
2026-03-09 19:22:52 +00:00
Shaheer Sarfaraz
2cb8185b3e
Update README to enhance job application explanation
Clarified the role of JobOps in the job application process.
2026-03-09 10:11:43 +00:00
Shaheer Sarfaraz
eea05b235d
Revise README description for clarity and detail
Updated project description to include additional features and emphasize human involvement.
2026-03-09 10:09:09 +00:00
Shaheer Sarfaraz
3fee6e0bef
Add shared writing style preferences (#240)
* Add shared writing style preferences

* Address PR review feedback

* Add scoring instructions settings

* Polish writing style inputs

* Clarify do-not-use terms guidance

* Normalize blank writing style overrides

* Refactor writing style resolution to use effective values and enhance blank value handling
2026-03-06 17:31:11 +00:00
github-actions[bot]
2214e6d2cb docs: cut version 0.1.29 2026-03-06 12:22:43 +00:00
Shaheer Sarfaraz
6a19fff436
google dork links (#239)
* Add ready tab Google dork links

* ui changes

* docs

* ci fix
2026-02-28 22:23:50 +00:00
Copilot
432529b581
docs: add all supported extractors to README (#238)
* Initial plan

* docs: add Hiring Café to README supported extractors

Co-authored-by: DaKheera47 <53654735+DaKheera47@users.noreply.github.com>

* docs: list all supported extractors explicitly in README feature bullet

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-28 22:12:04 +00:00
github-actions[bot]
65c558ffe4 docs: cut version 0.1.28 2026-02-25 21:39:35 +00:00
Shaheer Sarfaraz
f234f8005c
chore(analytics): format analytics metadata changes for ci (#235) 2026-02-25 21:37:12 +00:00
DaKheera47
1c348298ba app version 2026-02-25 21:30:53 +00:00
DaKheera47
02aefb3dc1 ids 2026-02-25 21:27:28 +00:00
DaKheera47
cbc52cbac0 more analytics 2026-02-25 21:25:33 +00:00
Shaheer Sarfaraz
26dbed15b9
Custom welcome message (#234)
* json

* connect

* useWelcomMessage

* Update shared/src/messages/jobs-welcome.json

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-25 02:59:38 +00:00
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
hussainweb
70f8afd294
Add RXRESUME_URL to .env.example (fixes #224) (#229) 2026-02-23 07:10:29 +00:00
DaKheera47
56276b2b29 chore: branch from origin/main for rxresume v4/v5 rollout 2026-02-22 21:33:07 +00:00
DaKheera47
b00fb4fba1 contributing.md 2026-02-22 21:16:20 +00:00
Shaheer Sarfaraz
3da5ea35b4
Deduplicate shared helpers and enforce aliased imports (#228)
* Deduplicate string cleanup helpers and not-found responses

* Enforce aliased imports for infra and shared modules

* Enforce @client/@server aliases for deep relative imports

* Deduplicate visa sponsor and location filter definitions

* Use shared city filter export in extractor location checks
2026-02-22 16:13:52 +00:00
Shaheer Sarfaraz
16acdf2b5e
Set automatic extractor defaults from user location (#227)
* Set automatic extractor defaults from user location

* Rename detected country helper
2026-02-22 14:41:06 +00:00
Shaheer Sarfaraz
39ef177953
Fix generated docs sitemap URLs (#226)
* Fix docs sitemap canonical URLs

* Tighten sitemap callback typing
2026-02-22 13:55:23 +00:00
github-actions[bot]
0de10c3302 docs: cut version 0.1.27 2026-02-22 13:34:01 +00:00
Shaheer Sarfaraz
82e142a8a8
Auto-Registering Extractor System (#223)
* initial commit?

* Address PR feedback on extractor discovery and startup resilience

* Address latest PR review comments

* fix city resolution fallback when input parses empty

* address PR feedback on extractor registry and pipeline validation

* address copilot comments on manifests and registry startup

* fix extractor discovery export handling and env isolation in tests

* enforce duplicate manifest id failures in strict mode

* Fix remaining extractor registry and runtime review comments

* docs

* docs

* test all, logic remains in extractors

* Address PR review feedback on extractor registry and validation

* Revert extractor moduleResolution to bundler

* Enforce shared city filtering across all discovery sources

* Deduplicate extractor strict city post-filtering
2026-02-21 17:44:07 +00:00
Shaheer Sarfaraz
cc7cacd7f5
Feat/company blacklist tokenized input (#219)
* initial commit

* docs mention!

* Update orchestrator/src/server/pipeline/steps/discover-jobs.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* normalizeStringArray

* poppier orange

* comments

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-21 04:07:06 +00:00
Shaheer Sarfaraz
60ca350da8
Enhance README with image and formatting updates
Added an image and improved formatting in the README.
2026-02-21 03:56:17 +00:00
Shaheer Sarfaraz
b18c2eccbb
Code cleanup (#218)
* chore: move @types/canvas-confetti to devDependencies, remove unused get-tsconfig direct dep

* chore: configure knip with workspace entry points for all packages

* refactor(shared): split 1119-line types.ts into domain modules under types/

* refactor: remove llm-service.ts shim, migrate all import sites to llm/service directly

* refactor(settings): migrate 4 manually-resolved settings into conversion registry

* refactor: split gmail-sync.ts into gmail-api, email-router, and thin orchestrator

* refactor(orchestrator): extract useKeyboardShortcuts and usePipelineControls from OrchestratorPage

Splits the 840-line OrchestratorPage into a thin orchestration shell (~480 lines) by
extracting keyboard shortcut handling into useKeyboardShortcuts.ts and pipeline
control logic into usePipelineControls.ts. Net negative line count across all files.

* feat: create settings registry (Step 1)

Introduces a single source of truth for all settings, combining schema definitions, default logic, parsing, and serialization into a single configuration object.

* feat: derive schema, keys, and types from settings registry (Step 2)

Derives AppSettings nested shape, SettingKey DB union, and updateSettingsSchema Zod shape automatically from the settings registry.

* refactor: gut envSettings and remove settings-conversion (Step 3)

Replaces manual env arrays with registry-driven maps in envSettings.ts.
Deletes settings-conversion.ts since all parsing/defaults now live in the registry.

* refactor: simplify getEffectiveSettings with generic loop (Step 4)

Replaces ~334 lines of manual key-by-key unpacking with a generic registry-driven iteration loop (~40 lines). Models, typed, string, and virtual kinds are automatically derived.

* refactor: simplify settingsUpdateRegistry (Step 5)

Replaces ~350 lines of explicit per-key update handlers with a dynamic generic loop over the settings registry, properly routing persistence and side effects.

* refactor(settings): implement nested settings registry and clean up tests

- Migrate settings system to use a centralized nested registry (`settings-schema.ts`, `registry.ts`)
- Remove obsolete flat-to-nested conversion logic (`settings-conversion.ts`)
- Address Biome warnings by explicitly ignoring intentional `any` usage in generic runtime schema builder and registry logic
- Clean up unused variables in test files (`SettingsPage.test.tsx`) to achieve a 100% green CI pipeline

* refactor(settings): address PR comments on env data and registry parsing

- Narrow `getEnvSettingsData` return type to `Partial<AppSettings>` to satisfy strict typing and omit 'typed' registry entries
- Introduce `parseNonEmptyStringOrNull` for typed string settings so empty-string overrides cleanly fall back to defaults (matching original `||` logic)
- Add missing unit tests for registry parse/serialize helpers (JSON, bools, numeric clamping)
2026-02-21 03:07:51 +00:00
Shaheer Sarfaraz
19266fe5eb
City search (#217)
* wave 1, jobspy only

* combine usa/ca to united states

* strict city location filter

* hide and show based on focus

* UI changes

* allow clicking cross!

* pill animate in

* animate out, uggo fix

* animate out

* framer motion

* animate component height

* adzuna

* hiring cafe implementation

* refactor: centralize shared search-city parsing and matching

* feat: migrate city setting to searchCities with legacy fallback

* docs: update pipeline and extractor city-search wording

* fix(orchestrator): normalize tokenized paste behavior

* fix(shared): tighten city matching semantics

* docs(extractors): document city-location knobs and geocoding note
2026-02-21 00:42:09 +00:00
DaKheera47
5ed9069813 Use optimistic skip mutation across Jobs page actions 2026-02-20 21:58:42 +00:00
DaKheera47
096ac21b19 Use optimistic mark-as-applied mutation across client entry points 2026-02-20 21:15:22 +00:00
github-actions[bot]
89ff770416 docs: cut version 0.1.26 2026-02-20 18:24:16 +00:00
Shaheer Sarfaraz
483e5f49e0
fix(orchestrator): keep search term chips when backspacing empty input (#215) 2026-02-20 18:22:05 +00:00
Shaheer Sarfaraz
1e0767a4ed
Avoid reprocessing previously ingested Gmail messages (#213)
* Avoid reprocessing previously ingested Gmail messages

* Avoid duplicate message lookup in Gmail sync upsert path
2026-02-20 17:20:06 +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
github-actions[bot]
2cb116340a docs: cut version 0.1.25 2026-02-20 12:10:24 +00:00
Shaheer Sarfaraz
952e4e6db9
fix(ci): include biome linux binary for docs version workflow (#209) 2026-02-20 12:08:26 +00:00
Shaheer Sarfaraz
eb61d90e92
Add release badge to README
Added a release badge to the README file.
2026-02-20 12:05:45 +00:00
Shaheer Sarfaraz
1573d8dfbc
response rate by source chart (#207)
* response rate by source

* docs

* add gpt improvements

* mobile resp

* UX

* chartkpi
2026-02-20 01:39:54 +00:00
Shaheer Sarfaraz
eed5c2adba
Gemini api key issue (#204)
* uggo ternary fix

* fix ai studio url

* service returns a 403 if unauthed

* pass validation correctly

* fix response format

* Update orchestrator/src/client/pages/settings/utils.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix nested ternaries client

* server fix

* Address PR #204 review feedback and stabilize CI

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-20 00:01:34 +00:00
Shaheer Sarfaraz
3640abef2d
Migration to tanstack query (#199)
* commit at some point in the middle, WIP

* formatting

* ci passing

* comments

* handle no jobid case

* better error handling

* comments

* Update orchestrator/src/client/hooks/queries/useJobMutations.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update orchestrator/src/client/hooks/queries/useSettingsMutation.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* better types

* formatter

* tracking inbox page

* in progress page

* tracer links page

* invalidate harder

* ensure tracer links docs show

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-19 23:04:47 +00:00
Shaheer Sarfaraz
8b71bef5cf
Feat/job page relevant actions (#197)
* initial commit

* ui better-ish

* ci fix
2026-02-19 18:59:47 +00:00