Commit graph

32 commits

Author SHA1 Message Date
JobsBoard Deployer
50b8524775 feat(email): route outbound mail through Proton Mail Bridge SMTP; feat(apply): route one-click apply to employer site
Email:
- Add nodemailer; rewrite lib/email.ts to send via configured SMTP (Proton
  Mail Bridge) first, Resend fallback, then dev simulation.
- Forward SMTP_* env to web and add protonmail-bridge service in compose.
- Document Proton Bridge SMTP vars in .env.example files; add test-smtp.mjs.

Apply:
- OneClickApplyModal now opens the job's real posting URL (company/ATS site)
  in a new tab as the primary action when jobUrl is present, and records the
  external application so the card shows 'Applied'.
- Internal one-click snapshot flow retained for jobs without an external URL.
- POST /api/applications accepts external:true (skips profile completeness)
  and records an external application.
2026-09-07 14:46:57 -04:00
JobsBoard Deployer
bb4c93b11c fix(db): derive DATABASE_URL from POSTGRES_PASSWORD and harden credential sync
Stop web/scraper containers from using a stray literal DATABASE_URL in the
root .env (which desynced the postgres role password and caused persistent
'password authentication failed' errors). DATABASE_URL is now always computed
from POSTGRES_USER/POSTGRES_PASSWORD.

Also harden postgres-entrypoint.sh: log to stderr, retry on failure, and run
ALTER ROLE unconditionally so the stored password always matches the env.
2026-09-07 13:06:42 -04:00
JobsBoard Deployer
c7259411ae fix(db): add postgres auto-sync entrypoint wrapper to ensure role login and credentials persist across rebuilds 2026-09-06 13:54:36 -04:00
JobsBoard Deployer
0aba1993f8 Enhance remote categorization and prevent false remote classifications across all scrapers 2026-09-05 15:53:28 -04:00
JobsBoard Deployer
c7031643ce Allow configurable PostgreSQL credentials and synchronize DATABASE_URL across containers 2026-09-05 15:42:09 -04:00
JobsBoard Deployer
95238d0c31 Comprehensive scraper overhaul across all sectors and seniority levels 2026-09-05 14:58:16 -04:00
JobsBoard Deployer
0f1b58d293 Fix IT department categorization and expand entry-level remote IT positions 2026-09-05 14:54:31 -04:00
JobsBoard Deployer
e0ae08e023 Auto-populate companies from job scrapers and broaden multi-industry coverage across nationwide hubs 2026-09-05 14:43:44 -04:00
JobsBoard Deployer
16efc58a5c Fix entry-level job filtering and perform pre-launch verification 2026-09-05 14:35:50 -04:00
JobsBoard Deployer
a8dddccbdb Introduce modern, editorial, and minimal visual themes for live preview and ATS-compliant PDF exports 2026-09-05 14:25:19 -04:00
JobsBoard Deployer
d9e108ba1c Inject strict ATS sub-score criteria into resume optimizer prompt and align action verb and metric algorithms 2026-09-05 14:20:18 -04:00
JobsBoard Deployer
9e5742307b Switch default model to google/gemini-2.5-flash, add max_tokens: 3500, and safeguard JSON truncation on parse 2026-09-05 14:12:42 -04:00
JobsBoard Deployer
62b07080ed Wire master resume improver prompt to OpenRouter optimizer and add explicit server logs and UI feedback 2026-09-05 14:07:45 -04:00
JobsBoard Deployer
e84871926b Enable high-precision OpenRouter LLM extraction for resume parsing to prevent scrambled titles and organization names 2026-09-05 14:02:58 -04:00
JobsBoard Deployer
9205b88458 Eliminate all synthetic resume hallucinations, integrate OpenRouter small-model support, and strip all emojis site-wide 2026-09-05 13:39:53 -04:00
JobsBoard Deployer
7f0ae931d5 Remove extraneous navbar mark to unify branding typography and add ADA WCAG skip-link navigation 2026-09-05 13:32:56 -04:00
JobsBoard Deployer
b11256c8ae Rebrand platform to DirectWire, add high-resolution and SVG favicons, update metadata and accessibility tags 2026-09-05 13:21:29 -04:00
JobsBoard Deployer
de5fe3315a Add mediaserver_default external network to docker-compose 2026-09-05 13:13:43 -04:00
JobsBoard Deployer
2356a68411 Comprehensive scraper overhaul: concurrent domain crawler, Workday CXS integration, parallel ATS ingestion, and word-boundary location filtering 2026-09-05 13:11:23 -04:00
JobsBoard Deployer
73ceb260d5 Enhance proxy resilience with socks5h remote DNS and automatic direct fallback 2026-09-05 12:53:18 -04:00
JobsBoard Deployer
1a914df12c fix(scraper): align probe_domain_for_careers return tuple unpacking 2026-09-05 12:49:45 -04:00
JobsBoard Deployer
bfec42601a feat(quality): add anti-ghost quality gate and verified direct badges without emojis 2026-09-05 12:46:01 -04:00
JobsBoard Deployer
8ecd99ea9f feat(scraper): integrate PrivadoVPN rotating SOCKS5 proxy pool across US and EU endpoints 2026-09-05 12:42:22 -04:00
JobsBoard Deployer
f22b826193 feat(scraper): universal web scraping with Schema.org JobPosting and HTML card extraction across domains 2026-09-05 12:38:22 -04:00
JobsBoard Deployer
2d2aab2999 fix(scraper): add greenhouse/lever board fetching to crawler, proxy support for datacenter IPs, and ziprecruiter fallback 2026-09-05 12:33:57 -04:00
JobsBoard Deployer
fb3d886527 fix(scraper): correct quotation escape in smart_careers_crawler regex 2026-09-05 12:26:54 -04:00
JobsBoard Deployer
5792a79377 feat(scraper,web): nationwide multi-source scaling, smart careers crawler, and resume location matching 2026-09-05 12:22:04 -04:00
JobsBoard Deployer
83ee7378da fix(scraper): deduplicate job_hash in Python before PostgreSQL batch upsert 2026-09-05 11:49:16 -04:00
JobsBoard Deployer
3aad6705d0 fix(docker): install openssl in alpine and refine scraper readiness loop 2026-09-05 11:39:47 -04:00
JobsBoard Deployer
00775c48ed fix(docker): make host ports configurable via WEB_PORT and DB_PORT 2026-09-05 11:34:36 -04:00
JobsBoard Deployer
86ea1c83d6 fix(docker): ensure public directory exists for Docker build 2026-09-05 11:31:29 -04:00
JobsBoard Deployer
9b8184d345 feat: complete production-ready JobsBoard stack with multi-source acquisition and ATS optimizer 2026-09-05 10:41:18 -04:00