5 Commits (22a0c6dbdc2facdb9a09e7a7c12b3b9fe74ddbb1)
 

Author SHA1 Message Date
I Luk Kim 22a0c6dbdc Extract employment_type for gilariver, usajobs; fix hrsa company parsing
- gilariver: parse employment type from subtitle "Location | Category | Active - Full Time"
- usajobs: add salary_text and employment_type selectors to YAML
- hrsa: filter <br> elements from td children to fix company/employment_type index offset

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5 months ago
I Luk Kim 72bcffad7f Add HRSA Health Workforce Connector adapter
Form-based keyword search (PrimeNG Angular SPA) with client-side pagination.
Uses JS click to bypass headless visibility issue on the Search button.
Extracts 112 dentist opportunity cards per run.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5 months ago
I Luk Kim 9d5251cead Add 6 new dental job site adapters
- ihs: Indian Health Service Dentistry (table, keyword filter)
- gilariver: Gila River Health Care via Infor CloudSuite (Angular, click pagination)
- nativehealth: NATIVE HEALTH via SmartRecruiters (AJAX Show More, keyword filter)
- srpmic: Salt River Pima-Maricopa via GovernmentJobs company page (URL keyword search)
- bfrench: Consulting BFrench via JazzHR (simple table, keyword filter)
- govtjobs: GovernmentJobs.com main search (URL keyword search, URL pagination)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5 months ago
I Luk Kim 83fb8542a9 Add 8 site adapters, early stop, Telegram notifications, and list command
New site adapters:
- usajobs: multi-keyword sweep (dentist/orthodontics/orthodontist), URL pagination
- docshealth, southernortho: Paylocity platform, keyword in URL
- pdshealth, saltdental: iCIMS Angular platform, URL pagination
- hospitaljobsonline: Load More button, relative URL fix
- aaoinfo: AAO Career Center, click-based AJAX pagination
- aroragroup: Load More + post-scrape keyword filter

Core improvements:
- Early stop pagination: stops when all fingerprints on a page are already in DB
- multi_keyword_mode: separate — one scrape per keyword, cross-sweep dedup
- gimme-job list command to view collected postings
- Stored column in status command
- Telegram notification (replacing KakaoTalk)
- DB repo: count_by_site(), get_existing_fingerprints()

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5 months ago
I Luk Kim 8028d5e566 Initial implementation of gimme-job CLI
Complete Python package implementing all phases from the spec:
- Phase 0-1: Project scaffold, config, Pydantic/SQLAlchemy models, Typer CLI
- Phase 2: Runtime engine (BrowserManager, BaseAdapter/ManifestDrivenAdapter, orchestrator)
- Phase 3: Claude Code CLI integration (learn/repair modes with Jinja2 prompt templates)
- Phase 4: Ollama summarizer, KakaoTalk client, notification dispatcher
- Phase 5: Indeed adapter with manifest (sites/indeed.yaml)
- Phase 6: 36 unit tests (dates, hashing, dedupe, manifests, kakao, adapter)

gimme-job init/run/learn/repair/test/notify/status commands all wired up.
36/36 unit tests passing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5 months ago