site_id: tribalhealth enabled: true repair_needed: false identity: label: Tribal Health Job Board category: staffing_agency base_url: https://tribalhealth.com start_url_template: "https://tribalhealth.com/job-board/" browser: profile_mode: persistent_chrome_profile profile_name: JobAgent headed_on_learn: true headless_on_run: true # The board is NOT keyword-searchable — it renders an Elementor loop of ALL open # jobs (PT/OT/RN-heavy clinician staffing). We collect every card and keyword-filter # to dental/ortho roles in the adapter + post_filters. Do NOT set # multi_keyword_mode: separate (there is no per-keyword search to sweep). search: keyword_mode: none location_mode: none sort_mode: none date_mode: none result_list_wait_selector: ".e-loop-item" pagination: mode: url_increment # /job-board/{N}/ — walked inside TribalHealthAdapter.collect_cards max_pages: 10 # board is ~3 pages today; headroom so page-4+ roles aren't silently dropped. # collect_cards stops at the first empty page (dedup-by-URL guard prevents loops). # NOTE: extraction is fully handled by TribalHealthAdapter.collect_cards (JS over .e-loop-item); # this block is documentary only — the registry always returns the custom adapter, so these # selectors are never executed by the manifest-driven path. extract: container_selectors: - ".e-loop-item" fields: title: text: - ".elementor-heading-title" url: attr: selector: "a[href*='/jobs/']" name: "href" location: text: - ".elementor-post-info__terms-list-item" # adapter picks the term containing a comma ("City, State") post_filters: include_title_keywords: - orthodontist - orthodontic healthcheck: min_items_expected: 0 required_fields: - title fail_if_zero_when_known_active: false learn: last_learned_at: 2026-06-12T00:00:00 source_url: "https://tribalhealth.com/job-board/"