stage-cli 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- stage/__init__.py +1 -0
- stage/__main__.py +8 -0
- stage/banner.py +32 -0
- stage/bootstrap/__init__.py +0 -0
- stage/bootstrap/openjobs.py +392 -0
- stage/classify/__init__.py +29 -0
- stage/classify/eligibility.py +115 -0
- stage/classify/internship.py +64 -0
- stage/classify/role.py +91 -0
- stage/classify/scope.py +47 -0
- stage/cli/__init__.py +0 -0
- stage/cli/app.py +4 -0
- stage/cli/commands/__init__.py +8 -0
- stage/cli/commands/discovery.py +294 -0
- stage/cli/commands/insight.py +494 -0
- stage/cli/commands/pipeline.py +337 -0
- stage/cli/commands/postings.py +473 -0
- stage/cli/commands/schedule.py +171 -0
- stage/cli/housekeeping.py +64 -0
- stage/cli/logfile.py +56 -0
- stage/cli/notify.py +170 -0
- stage/cli/options.py +678 -0
- stage/cli/render.py +1398 -0
- stage/cli/runlock.py +74 -0
- stage/cli/schedule.py +702 -0
- stage/cli/schedule_state.py +363 -0
- stage/cli/selection.py +83 -0
- stage/cli/serialize.py +196 -0
- stage/companies.py +542 -0
- stage/data/companies/a.yaml +1289 -0
- stage/data/companies/b.yaml +900 -0
- stage/data/companies/c.yaml +1377 -0
- stage/data/companies/d.yaml +497 -0
- stage/data/companies/e.yaml +519 -0
- stage/data/companies/f.yaml +454 -0
- stage/data/companies/g.yaml +601 -0
- stage/data/companies/h.yaml +446 -0
- stage/data/companies/i.yaml +503 -0
- stage/data/companies/j.yaml +138 -0
- stage/data/companies/k.yaml +278 -0
- stage/data/companies/l.yaml +402 -0
- stage/data/companies/m.yaml +937 -0
- stage/data/companies/n.yaml +549 -0
- stage/data/companies/o.yaml +371 -0
- stage/data/companies/other.yaml +58 -0
- stage/data/companies/p.yaml +825 -0
- stage/data/companies/q.yaml +121 -0
- stage/data/companies/r.yaml +583 -0
- stage/data/companies/s.yaml +1140 -0
- stage/data/companies/t.yaml +817 -0
- stage/data/companies/u.yaml +196 -0
- stage/data/companies/v.yaml +325 -0
- stage/data/companies/w.yaml +353 -0
- stage/data/companies/x.yaml +67 -0
- stage/data/companies/y.yaml +36 -0
- stage/data/companies/z.yaml +146 -0
- stage/data/fonts/DejaVuSans.LICENSE.txt +99 -0
- stage/data/fonts/DejaVuSans.ttf +0 -0
- stage/data/lexicon/company_tokens.yaml +228 -0
- stage/data/lexicon/eligibility.yaml +455 -0
- stage/data/lexicon/inclusive_suffixes.yaml +37 -0
- stage/data/lexicon/internship.yaml +187 -0
- stage/data/lexicon/language.yaml +226 -0
- stage/data/lexicon/locations.yaml +1159 -0
- stage/data/lexicon/roles.yaml +2012 -0
- stage/data/lexicon/terms.yaml +76 -0
- stage/data/lexicon/workday_facets.yaml +27 -0
- stage/data/seed_companies.yaml +198 -0
- stage/dedup/__init__.py +19 -0
- stage/dedup/identity.py +113 -0
- stage/dedup/resolve.py +97 -0
- stage/domain/__init__.py +244 -0
- stage/domain/company.py +49 -0
- stage/domain/coverage.py +86 -0
- stage/domain/custom_board.py +92 -0
- stage/domain/discovery.py +94 -0
- stage/domain/enums.py +114 -0
- stage/domain/events.py +204 -0
- stage/domain/filters.py +27 -0
- stage/domain/health.py +169 -0
- stage/domain/ids.py +48 -0
- stage/domain/job.py +47 -0
- stage/domain/matching.py +15 -0
- stage/domain/priority.py +34 -0
- stage/domain/quarantine.py +39 -0
- stage/domain/rate_state.py +78 -0
- stage/domain/retention.py +20 -0
- stage/domain/rotation.py +46 -0
- stage/domain/signals.py +12 -0
- stage/domain/sync_run.py +35 -0
- stage/domain/text.py +113 -0
- stage/domain/validator.py +14 -0
- stage/domain/visits.py +60 -0
- stage/domain/workday.py +38 -0
- stage/http/__init__.py +58 -0
- stage/http/breaker.py +53 -0
- stage/http/cache.py +44 -0
- stage/http/client.py +725 -0
- stage/http/profiles.py +101 -0
- stage/lexicon.py +370 -0
- stage/normalize/__init__.py +16 -0
- stage/normalize/language.py +47 -0
- stage/normalize/location.py +271 -0
- stage/normalize/terms.py +153 -0
- stage/normalize/urls.py +122 -0
- stage/paths.py +86 -0
- stage/py.typed +0 -0
- stage/services/__init__.py +0 -0
- stage/services/canary.py +120 -0
- stage/services/coverage.py +231 -0
- stage/services/discover.py +747 -0
- stage/services/export.py +274 -0
- stage/services/health.py +237 -0
- stage/services/maintenance.py +225 -0
- stage/services/quarantine.py +20 -0
- stage/services/query.py +86 -0
- stage/services/sync.py +1257 -0
- stage/sources/__init__.py +82 -0
- stage/sources/_text.py +79 -0
- stage/sources/ashby.py +93 -0
- stage/sources/bamboohr.py +80 -0
- stage/sources/base.py +225 -0
- stage/sources/breezy.py +90 -0
- stage/sources/collage.py +60 -0
- stage/sources/community_feeds.py +142 -0
- stage/sources/curated_markdown.py +289 -0
- stage/sources/custom_json.py +610 -0
- stage/sources/espresso.py +154 -0
- stage/sources/feed.py +44 -0
- stage/sources/greenhouse.py +104 -0
- stage/sources/jobbank.py +147 -0
- stage/sources/jobvite.py +133 -0
- stage/sources/lever.py +76 -0
- stage/sources/oracle_cloud.py +187 -0
- stage/sources/platforms.py +609 -0
- stage/sources/quebec_emploi.py +146 -0
- stage/sources/recruitee.py +96 -0
- stage/sources/simplify.py +110 -0
- stage/sources/smartrecruiters.py +216 -0
- stage/sources/speedyapply.py +200 -0
- stage/sources/themuse.py +157 -0
- stage/sources/workable.py +83 -0
- stage/sources/workday.py +524 -0
- stage/sources/zshah.py +99 -0
- stage/storage/__init__.py +29 -0
- stage/storage/migrations/0001_initial.sql +239 -0
- stage/storage/migrations/__init__.py +135 -0
- stage/storage/repository.py +213 -0
- stage/storage/search.py +28 -0
- stage/storage/sqlite_repo.py +1586 -0
- stage/storage/writer.py +249 -0
- stage/tui/__init__.py +0 -0
- stage/tui/app.py +82 -0
- stage/tui/help.py +26 -0
- stage/tui/safe.py +21 -0
- stage/tui/screens/__init__.py +0 -0
- stage/tui/screens/boards.py +186 -0
- stage/tui/screens/postings.py +509 -0
- stage/tui/screens/review.py +209 -0
- stage/tui/screens/splash.py +37 -0
- stage/tui/screens/stats.py +124 -0
- stage/tui/screens/sync.py +194 -0
- stage/tui/state.py +160 -0
- stage/tui/theme.tcss +205 -0
- stage/tui/widgets/__init__.py +0 -0
- stage_cli-1.0.0.dist-info/METADATA +379 -0
- stage_cli-1.0.0.dist-info/RECORD +170 -0
- stage_cli-1.0.0.dist-info/WHEEL +4 -0
- stage_cli-1.0.0.dist-info/entry_points.txt +2 -0
- stage_cli-1.0.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,519 @@
|
|
|
1
|
+
- name: e-Careers
|
|
2
|
+
platform: workable
|
|
3
|
+
slug: ecareers
|
|
4
|
+
source_of_record: discover
|
|
5
|
+
last_verified: &id003 2026-08-16
|
|
6
|
+
notes: '2026-08-16: adopted from this employer''s own apply URL, then paused to
|
|
7
|
+
match the rest of the workable platform, which is parked until 2026-08-18 after
|
|
8
|
+
two 429s in one day.'
|
|
9
|
+
- name: East Penn Manufacturing Company
|
|
10
|
+
platform: custom_json
|
|
11
|
+
slug: eastpennmanufacturing
|
|
12
|
+
source_of_record: discover
|
|
13
|
+
last_verified: 2026-09-01
|
|
14
|
+
notes: '2026-09-01: iCIMS serves no JSON, so this reads the search page.
|
|
15
|
+
Verified an IT Cybersecurity internship.'
|
|
16
|
+
custom:
|
|
17
|
+
url: https://careers-eastpennmanufacturing.icims.com/jobs/search?ss=1&in_iframe=1
|
|
18
|
+
format: html
|
|
19
|
+
row_selector: div.row:has(a.iCIMS_Anchor)
|
|
20
|
+
fields:
|
|
21
|
+
title: a.iCIMS_Anchor h3
|
|
22
|
+
url: a.iCIMS_Anchor::attr(href)
|
|
23
|
+
location: .header.left span + span
|
|
24
|
+
- name: Eaton
|
|
25
|
+
platform: custom_json
|
|
26
|
+
slug: eaton
|
|
27
|
+
source_of_record: discover
|
|
28
|
+
last_verified: 2026-08-16
|
|
29
|
+
notes: Eightfold tenant honouring filter_career_level; the location filter is stripped
|
|
30
|
+
because it hid the one Canadian posting.
|
|
31
|
+
custom:
|
|
32
|
+
url: https://eaton.eightfold.ai/api/pcsx/search?domain=eaton.com&query=&start=0&sort_by=relevance&filter_career_level=Intern
|
|
33
|
+
jobs_path: data.positions
|
|
34
|
+
fields:
|
|
35
|
+
title: name
|
|
36
|
+
id: id
|
|
37
|
+
location: standardizedLocations
|
|
38
|
+
department: department
|
|
39
|
+
url_template: https://eaton.eightfold.ai/careers/job/{id}
|
|
40
|
+
page_param: start
|
|
41
|
+
page_size: 10
|
|
42
|
+
max_pages: 20
|
|
43
|
+
- name: eBay
|
|
44
|
+
platform: workday
|
|
45
|
+
slug: ebay
|
|
46
|
+
source_of_record: openjobs
|
|
47
|
+
last_verified: 2026-08-14
|
|
48
|
+
recheck_after: &id007 2026-10-01
|
|
49
|
+
workday_tenant: ebay
|
|
50
|
+
workday_site: apply
|
|
51
|
+
workday_dc: wd5
|
|
52
|
+
notes: '2026-08-14: verified by a real sync — this board returned postings'
|
|
53
|
+
- name: Eclipse Automation
|
|
54
|
+
platform: greenhouse
|
|
55
|
+
slug: eclipse
|
|
56
|
+
source_of_record: discover
|
|
57
|
+
last_verified: &id002 2026-08-14
|
|
58
|
+
- name: Egra
|
|
59
|
+
platform: ashby
|
|
60
|
+
slug: egra
|
|
61
|
+
source_of_record: manual
|
|
62
|
+
last_verified: 2026-08-13
|
|
63
|
+
notes: '2026-08-13: official active AI research internship application verifies
|
|
64
|
+
the public Ashby board.'
|
|
65
|
+
- name: Eidos-Montreal
|
|
66
|
+
platform: custom_json
|
|
67
|
+
slug: dayforce-eic
|
|
68
|
+
source_of_record: discover
|
|
69
|
+
last_verified: 2026-08-18
|
|
70
|
+
rate_profile: conservative
|
|
71
|
+
notes: 'Dayforce, reached by sending the /api/auth/csrf token as x-csrf-token. 2026-08-21:
|
|
72
|
+
two boards on this host answered 403 in one run, so the row is pinned conservative.'
|
|
73
|
+
custom:
|
|
74
|
+
url: https://jobs.dayforcehcm.com/api/geo/eic/jobposting/search
|
|
75
|
+
method: POST
|
|
76
|
+
body:
|
|
77
|
+
clientNamespace: eic
|
|
78
|
+
jobBoardCode: CANDIDATEPORTAL
|
|
79
|
+
cultureCode: en-CA
|
|
80
|
+
distanceUnit: 1
|
|
81
|
+
handshake_url: https://jobs.dayforcehcm.com/api/auth/csrf
|
|
82
|
+
token_pattern: '"csrfToken":"([a-f0-9]+)"'
|
|
83
|
+
token_header: x-csrf-token
|
|
84
|
+
jobs_path: jobPostings
|
|
85
|
+
fields:
|
|
86
|
+
title: jobTitle
|
|
87
|
+
id: jobPostingId
|
|
88
|
+
description: jobDescription
|
|
89
|
+
location: postingLocations.0.formattedAddress
|
|
90
|
+
url_template: https://jobs.dayforcehcm.com/en-CA/eic/CANDIDATEPORTAL/jobs/{id}
|
|
91
|
+
page_param: paginationStart
|
|
92
|
+
page_size: 25
|
|
93
|
+
page_step: 25
|
|
94
|
+
max_pages: 20
|
|
95
|
+
- name: Electric Hydrogen
|
|
96
|
+
platform: greenhouse
|
|
97
|
+
slug: eh2internship
|
|
98
|
+
source_of_record: discover
|
|
99
|
+
last_verified: 2026-08-20
|
|
100
|
+
notes: The employer's internships-only greenhouse board; it answered 200 with an
|
|
101
|
+
empty roster on 2026-08-20.
|
|
102
|
+
- name: Electronic Arts
|
|
103
|
+
platform: custom_json
|
|
104
|
+
slug: ea
|
|
105
|
+
source_of_record: discover
|
|
106
|
+
last_verified: 2026-08-20
|
|
107
|
+
notes: '2026-08-20: reopened — the 2026-08-14 note said custom_json was the route
|
|
108
|
+
once a contract existed, and jobs.ea.com is the same Avature listFilterMode markup
|
|
109
|
+
the Two Sigma row pins.'
|
|
110
|
+
custom:
|
|
111
|
+
url: https://jobs.ea.com/en_US/careers/SearchJobs/?listFilterMode=1&jobRecordsPerPage=20
|
|
112
|
+
format: html
|
|
113
|
+
row_selector: article.article--result
|
|
114
|
+
fields:
|
|
115
|
+
title: h3.article__header__text__title a
|
|
116
|
+
id: h3.article__header__text__title a::slugid(href)
|
|
117
|
+
url: h3.article__header__text__title a::attr(href)
|
|
118
|
+
location: span.list-item-location
|
|
119
|
+
department: span.list-item-department
|
|
120
|
+
employment_type: span.list-item-workerType
|
|
121
|
+
page_param: jobOffset
|
|
122
|
+
page_size: 20
|
|
123
|
+
max_pages: 20
|
|
124
|
+
- name: ElevenLabs
|
|
125
|
+
platform: ashby
|
|
126
|
+
slug: elevenlabs
|
|
127
|
+
source_of_record: openjobs
|
|
128
|
+
last_verified: 2026-08-11
|
|
129
|
+
notes: '2026-08-11: enabled on slug evidence - ashby publishes no board name, but
|
|
130
|
+
the slug folds to the caption and the board returned 238 job(s)'
|
|
131
|
+
- name: Ellipsis Labs
|
|
132
|
+
platform: ashby
|
|
133
|
+
slug: ellipsislabs
|
|
134
|
+
source_of_record: discover
|
|
135
|
+
last_verified: &id004 2026-08-14
|
|
136
|
+
name_gate_exempt: true
|
|
137
|
+
notes: '2026-08-14: board token taken from this employer''s own application URL
|
|
138
|
+
in a feed posting, not from slug guessing; ashby publishes no board name, so the
|
|
139
|
+
name gate cannot confirm it and provenance is the evidence (11 job(s))'
|
|
140
|
+
- name: EllisDon
|
|
141
|
+
platform: workday
|
|
142
|
+
slug: ellisdon
|
|
143
|
+
source_of_record: discover
|
|
144
|
+
last_verified: 2026-08-17
|
|
145
|
+
workday_tenant: ellisdon
|
|
146
|
+
workday_site: Ellis-Don
|
|
147
|
+
workday_dc: wd3
|
|
148
|
+
notes: '2026-08-17: verified by scratch sync, 120 postings returned. Canadian construction;
|
|
149
|
+
0 internships on the day of adoption, kept for its seasonal IT and co-op intake'
|
|
150
|
+
- name: Eluvio
|
|
151
|
+
platform: workable
|
|
152
|
+
slug: eluvio
|
|
153
|
+
source_of_record: discover
|
|
154
|
+
last_verified: 2026-08-17
|
|
155
|
+
notes: '2026-08-14: paused after two 429s in one day, the second after 7 requests;
|
|
156
|
+
paused_until resumed it.'
|
|
157
|
+
- name: Enbridge
|
|
158
|
+
platform: workday
|
|
159
|
+
slug: enbridge
|
|
160
|
+
source_of_record: discover
|
|
161
|
+
last_verified: &id001 2026-08-17
|
|
162
|
+
workday_tenant: enbridge
|
|
163
|
+
workday_site: enbridge_careers
|
|
164
|
+
workday_dc: wd3
|
|
165
|
+
notes: '2026-08-17: found by a plain-HTTP scan of the employer''s own careers page
|
|
166
|
+
for a known ATS hostname, no browser and one request per host.'
|
|
167
|
+
- name: Encephalo Investments
|
|
168
|
+
platform: smartrecruiters
|
|
169
|
+
slug: encephaloinvestments
|
|
170
|
+
source_of_record: discover
|
|
171
|
+
last_verified: 2026-08-18
|
|
172
|
+
notes: '2026-08-18: seen in feed postings but absent from the registry; discover
|
|
173
|
+
matched smartrecruiters/encephaloinvestments with 3 job(s) and the board named
|
|
174
|
+
itself, so it is polled directly instead of secondhand'
|
|
175
|
+
- name: Endava
|
|
176
|
+
platform: smartrecruiters
|
|
177
|
+
slug: endava
|
|
178
|
+
source_of_record: openjobs
|
|
179
|
+
last_verified: &id005 2026-08-14
|
|
180
|
+
- name: Enghouse Systems
|
|
181
|
+
platform: bamboohr
|
|
182
|
+
slug: enghouse
|
|
183
|
+
source_of_record: discover
|
|
184
|
+
last_verified: *id001
|
|
185
|
+
notes: '2026-08-17: found by careers-page ATS scan, one plain GET. verify returned
|
|
186
|
+
17 jobs and needs-a-manual-check, the expected verdict where the platform publishes
|
|
187
|
+
no board name; token equals the company name'
|
|
188
|
+
- name: Engineers Gate
|
|
189
|
+
platform: greenhouse
|
|
190
|
+
slug: engineersgate
|
|
191
|
+
source_of_record: discover
|
|
192
|
+
last_verified: *id002
|
|
193
|
+
- name: Enova International
|
|
194
|
+
platform: greenhouse
|
|
195
|
+
slug: enova
|
|
196
|
+
source_of_record: discover
|
|
197
|
+
last_verified: *id002
|
|
198
|
+
- name: Enpal
|
|
199
|
+
platform: ashby
|
|
200
|
+
slug: enpal
|
|
201
|
+
source_of_record: manual
|
|
202
|
+
last_verified: 2026-08-13
|
|
203
|
+
notes: '2026-08-13: official active automation and software-development internship
|
|
204
|
+
application verifies the public Ashby board.'
|
|
205
|
+
- name: Ensemble Health Partners
|
|
206
|
+
platform: greenhouse
|
|
207
|
+
slug: ensemble
|
|
208
|
+
source_of_record: discover
|
|
209
|
+
last_verified: *id002
|
|
210
|
+
- name: Enverus
|
|
211
|
+
platform: jobvite
|
|
212
|
+
slug: drillinginfo
|
|
213
|
+
source_of_record: openjobs
|
|
214
|
+
enabled: false
|
|
215
|
+
notes: '2026-08-21: re-checked on the server-rendered board as well; the tenant
|
|
216
|
+
answers but renders no jv-job-list table, so it is an empty or retired board'
|
|
217
|
+
- name: Epia Neuro
|
|
218
|
+
platform: ashby
|
|
219
|
+
slug: epianeuro
|
|
220
|
+
source_of_record: discover
|
|
221
|
+
last_verified: *id003
|
|
222
|
+
name_gate_exempt: true
|
|
223
|
+
notes: '2026-08-16: token from this employer''s own apply URL, not slug guessing;
|
|
224
|
+
ashby publishes no board name, so provenance is the evidence (16 job(s))'
|
|
225
|
+
- name: Epic Games
|
|
226
|
+
platform: greenhouse
|
|
227
|
+
slug: epicgames
|
|
228
|
+
source_of_record: openjobs
|
|
229
|
+
last_verified: *id002
|
|
230
|
+
- name: Epic Systems
|
|
231
|
+
platform: custom_json
|
|
232
|
+
slug: epic-systems
|
|
233
|
+
source_of_record: discover
|
|
234
|
+
last_verified: 2026-08-20
|
|
235
|
+
enabled: false
|
|
236
|
+
notes: '2026-08-20: closed for good — an Avature tenant that does not serve the
|
|
237
|
+
listFilterMode markup, and the owner confirmed a DevTools capture finds no reusable
|
|
238
|
+
listing request.'
|
|
239
|
+
custom:
|
|
240
|
+
url: https://careers.epic.com/jobs/
|
|
241
|
+
fields:
|
|
242
|
+
title: title
|
|
243
|
+
id: id
|
|
244
|
+
- name: Epicor
|
|
245
|
+
platform: workday
|
|
246
|
+
slug: epicorsoftware
|
|
247
|
+
source_of_record: discover
|
|
248
|
+
last_verified: &id006 2026-08-14
|
|
249
|
+
workday_tenant: epicorsoftware
|
|
250
|
+
workday_site: epicorjobs
|
|
251
|
+
workday_dc: wd5
|
|
252
|
+
notes: '2026-08-14: verified by a real sync — this board returned postings, which
|
|
253
|
+
is the only verification a Workday tenant can have without an offline probe'
|
|
254
|
+
- name: EPRI
|
|
255
|
+
platform: workday
|
|
256
|
+
slug: vhr-epri
|
|
257
|
+
source_of_record: discover
|
|
258
|
+
workday_tenant: vhr-epri
|
|
259
|
+
workday_site: epricareers
|
|
260
|
+
workday_dc: wd1
|
|
261
|
+
enabled: false
|
|
262
|
+
notes: '2026-08-20: re-checked tenant-wide; the CXS jobs endpoint still answers
|
|
263
|
+
422 for this site, so the closed-contract verdict stands on a fresh measurement.'
|
|
264
|
+
- name: Equativ
|
|
265
|
+
platform: lever
|
|
266
|
+
slug: equativ
|
|
267
|
+
source_of_record: discover
|
|
268
|
+
last_verified: *id004
|
|
269
|
+
name_gate_exempt: true
|
|
270
|
+
notes: '2026-08-14: board token taken from this employer''s own application URL
|
|
271
|
+
in a feed posting, not from slug guessing; lever publishes no board name, so the
|
|
272
|
+
name gate cannot confirm it and provenance is the evidence (22 job(s))'
|
|
273
|
+
- name: Equifax
|
|
274
|
+
platform: workday
|
|
275
|
+
slug: equifax
|
|
276
|
+
source_of_record: manual
|
|
277
|
+
last_verified: 2026-08-13
|
|
278
|
+
workday_tenant: equifax
|
|
279
|
+
workday_site: UR_External
|
|
280
|
+
workday_dc: wd5
|
|
281
|
+
workday_facet: jobFamilyGroup:ef45ca2670b010249197ce07f79d9cf0
|
|
282
|
+
notes: '2026-08-13: official Workday endpoint verified; its Internships job-family
|
|
283
|
+
group has two listings.'
|
|
284
|
+
- name: Eragon
|
|
285
|
+
platform: ashby
|
|
286
|
+
slug: eragon
|
|
287
|
+
source_of_record: discover
|
|
288
|
+
last_verified: *id004
|
|
289
|
+
name_gate_exempt: true
|
|
290
|
+
notes: '2026-08-14: board token taken from this employer''s own application URL
|
|
291
|
+
in a feed posting, not from slug guessing; ashby publishes no board name, so the
|
|
292
|
+
name gate cannot confirm it and provenance is the evidence (4 job(s))'
|
|
293
|
+
- name: Ericsson
|
|
294
|
+
platform: custom_json
|
|
295
|
+
slug: ericsson
|
|
296
|
+
source_of_record: discover
|
|
297
|
+
last_verified: 2026-08-20
|
|
298
|
+
notes: Its Phenom-shaped widgets answer 401, but the site is Eightfold; /api/pcsx/search
|
|
299
|
+
returns all 491 positions.
|
|
300
|
+
custom:
|
|
301
|
+
url: https://jobs.ericsson.com/api/pcsx/search?domain=ericsson.com&query=&start=0&sort_by=relevance
|
|
302
|
+
jobs_path: data.positions
|
|
303
|
+
fields:
|
|
304
|
+
title: name
|
|
305
|
+
id: id
|
|
306
|
+
location: standardizedLocations
|
|
307
|
+
department: department
|
|
308
|
+
url_template: https://jobs.ericsson.com/careers/job/{id}
|
|
309
|
+
page_param: start
|
|
310
|
+
page_size: 10
|
|
311
|
+
max_pages: 20
|
|
312
|
+
- name: Escape Velocity Entertainment
|
|
313
|
+
platform: workable
|
|
314
|
+
slug: escape-velocity-entertainment-inc
|
|
315
|
+
source_of_record: openjobs
|
|
316
|
+
last_verified: 2026-08-17
|
|
317
|
+
notes: '2026-08-14: paused after two 429s in one day, the second after 7 requests;
|
|
318
|
+
paused_until resumed it.'
|
|
319
|
+
- name: eSentire
|
|
320
|
+
platform: custom_json
|
|
321
|
+
slug: esentire
|
|
322
|
+
source_of_record: discover
|
|
323
|
+
last_verified: 2026-08-21
|
|
324
|
+
rate_profile: conservative
|
|
325
|
+
notes: 'Dayforce, reached by sending the /api/auth/csrf token as x-csrf-token. 2026-08-21:
|
|
326
|
+
two boards on this host answered 403 in one run, so the row is pinned conservative.'
|
|
327
|
+
custom:
|
|
328
|
+
url: https://jobs.dayforcehcm.com/api/geo/esentire/jobposting/search
|
|
329
|
+
method: POST
|
|
330
|
+
body:
|
|
331
|
+
clientNamespace: esentire
|
|
332
|
+
jobBoardCode: CANDIDATEPORTAL
|
|
333
|
+
cultureCode: en-CA
|
|
334
|
+
distanceUnit: 1
|
|
335
|
+
handshake_url: https://jobs.dayforcehcm.com/api/auth/csrf
|
|
336
|
+
token_pattern: '"csrfToken":"([a-f0-9]+)"'
|
|
337
|
+
token_header: x-csrf-token
|
|
338
|
+
jobs_path: jobPostings
|
|
339
|
+
fields:
|
|
340
|
+
title: jobTitle
|
|
341
|
+
id: jobPostingId
|
|
342
|
+
description: jobDescription
|
|
343
|
+
location: postingLocations.0.formattedAddress
|
|
344
|
+
url_template: https://jobs.dayforcehcm.com/en-CA/esentire/CANDIDATEPORTAL/jobs/{id}
|
|
345
|
+
page_param: paginationStart
|
|
346
|
+
page_size: 25
|
|
347
|
+
page_step: 25
|
|
348
|
+
- name: Espa AI
|
|
349
|
+
platform: ashby
|
|
350
|
+
slug: espa
|
|
351
|
+
source_of_record: discover
|
|
352
|
+
last_verified: *id004
|
|
353
|
+
name_gate_exempt: true
|
|
354
|
+
notes: '2026-08-14: board token taken from this employer''s own application URL
|
|
355
|
+
in a feed posting, not from slug guessing; ashby publishes no board name, so the
|
|
356
|
+
name gate cannot confirm it and provenance is the evidence (2 job(s))'
|
|
357
|
+
- name: Esri
|
|
358
|
+
platform: greenhouse
|
|
359
|
+
slug: esri
|
|
360
|
+
source_of_record: discover
|
|
361
|
+
last_verified: *id002
|
|
362
|
+
- name: Etched.ai
|
|
363
|
+
platform: greenhouse
|
|
364
|
+
slug: etchedai
|
|
365
|
+
source_of_record: discover
|
|
366
|
+
last_verified: *id002
|
|
367
|
+
- name: Ether.fi
|
|
368
|
+
platform: ashby
|
|
369
|
+
slug: ether.fi
|
|
370
|
+
source_of_record: discover
|
|
371
|
+
last_verified: *id003
|
|
372
|
+
name_gate_exempt: true
|
|
373
|
+
notes: '2026-08-16: token from this employer''s own apply URL, not slug guessing;
|
|
374
|
+
ashby publishes no board name, so provenance is the evidence (10 job(s))'
|
|
375
|
+
- name: Ethernovia
|
|
376
|
+
platform: greenhouse
|
|
377
|
+
slug: ethernovia
|
|
378
|
+
source_of_record: openjobs
|
|
379
|
+
last_verified: 2026-08-14
|
|
380
|
+
- name: ETHGlobal
|
|
381
|
+
platform: ashby
|
|
382
|
+
slug: ethglobal
|
|
383
|
+
source_of_record: discover
|
|
384
|
+
last_verified: 2026-08-16
|
|
385
|
+
name_gate_exempt: true
|
|
386
|
+
notes: '2026-08-16: token from this employer''s own apply URL, not slug guessing;
|
|
387
|
+
ashby publishes no board name, so provenance is the evidence (1 job(s))'
|
|
388
|
+
- name: Etsy
|
|
389
|
+
platform: custom_json
|
|
390
|
+
slug: etsy
|
|
391
|
+
source_of_record: discover
|
|
392
|
+
last_verified: 2026-08-21
|
|
393
|
+
notes: '2026-08-21: the official Etsy careers search server-renders 30 job cards
|
|
394
|
+
per page; the existing HTML adapter returned 30 authoritative postings with stable
|
|
395
|
+
detail URLs.'
|
|
396
|
+
custom:
|
|
397
|
+
url: https://careers.etsy.com/jobs/search?page=1&query=
|
|
398
|
+
format: html
|
|
399
|
+
row_selector: article.job-search-results-card-col
|
|
400
|
+
fields:
|
|
401
|
+
title: h3.job-search-results-card-title a
|
|
402
|
+
id: h3.job-search-results-card-title a::attr(href)
|
|
403
|
+
url: h3.job-search-results-card-title a::attr(href)
|
|
404
|
+
location: .job-component-location span
|
|
405
|
+
department: .job-component-department span
|
|
406
|
+
page_param: page
|
|
407
|
+
page_size: 30
|
|
408
|
+
page_start: 1
|
|
409
|
+
page_step: 1
|
|
410
|
+
max_pages: 5
|
|
411
|
+
- name: Eulerity
|
|
412
|
+
platform: greenhouse
|
|
413
|
+
slug: eulerity
|
|
414
|
+
source_of_record: discover
|
|
415
|
+
last_verified: *id002
|
|
416
|
+
- name: Eurofins
|
|
417
|
+
platform: smartrecruiters
|
|
418
|
+
slug: eurofins
|
|
419
|
+
source_of_record: discover
|
|
420
|
+
last_verified: *id005
|
|
421
|
+
- name: Euronext
|
|
422
|
+
platform: workday
|
|
423
|
+
slug: hrhub
|
|
424
|
+
source_of_record: discover
|
|
425
|
+
last_verified: *id006
|
|
426
|
+
workday_tenant: hrhub
|
|
427
|
+
workday_site: euronext_career_page
|
|
428
|
+
workday_dc: wd3
|
|
429
|
+
notes: '2026-08-14: verified by a real sync — this board returned postings, which
|
|
430
|
+
is the only verification a Workday tenant can have without an offline probe'
|
|
431
|
+
- name: EV Realty
|
|
432
|
+
platform: lever
|
|
433
|
+
slug: evrealty-us
|
|
434
|
+
source_of_record: discover
|
|
435
|
+
last_verified: *id004
|
|
436
|
+
name_gate_exempt: true
|
|
437
|
+
notes: '2026-08-14: board token taken from this employer''s own application URL
|
|
438
|
+
in a feed posting, not from slug guessing; lever publishes no board name, so the
|
|
439
|
+
name gate cannot confirm it and provenance is the evidence (1 job(s))'
|
|
440
|
+
- name: Evercore
|
|
441
|
+
platform: custom_json
|
|
442
|
+
slug: evercore
|
|
443
|
+
source_of_record: discover
|
|
444
|
+
last_verified: 2026-08-20
|
|
445
|
+
enabled: false
|
|
446
|
+
notes: '2026-08-20: its tal.net tenant answers every board url with an oleeoProtect
|
|
447
|
+
altcha challenge titled Quick Check Needed. That is a CAPTCHA, so it is a policy
|
|
448
|
+
boundary, not a gap.'
|
|
449
|
+
custom:
|
|
450
|
+
url: https://evercore.tal.net/vx/lang-en-GB/mobile-0/appcentre-ext/brand-6/candidate/jobboard/vacancy/2/adv/
|
|
451
|
+
fields:
|
|
452
|
+
title: title
|
|
453
|
+
id: id
|
|
454
|
+
- name: Everpure
|
|
455
|
+
platform: greenhouse
|
|
456
|
+
slug: purestorage
|
|
457
|
+
source_of_record: discover
|
|
458
|
+
last_verified: 2026-08-20
|
|
459
|
+
notes: '2026-08-20: everpuredata.com embeds this board and greenhouse names it Everpure;
|
|
460
|
+
the purestorage token is the pre-rename one, so name and token differ legitimately.'
|
|
461
|
+
- name: Evolution
|
|
462
|
+
platform: smartrecruiters
|
|
463
|
+
slug: evolution
|
|
464
|
+
source_of_record: openjobs
|
|
465
|
+
last_verified: *id005
|
|
466
|
+
- name: Evolver
|
|
467
|
+
platform: greenhouse
|
|
468
|
+
slug: evolver
|
|
469
|
+
source_of_record: discover
|
|
470
|
+
last_verified: *id002
|
|
471
|
+
- name: Excel Sports Management
|
|
472
|
+
platform: greenhouse
|
|
473
|
+
slug: excelsportsmanagement
|
|
474
|
+
source_of_record: discover
|
|
475
|
+
last_verified: *id002
|
|
476
|
+
- name: Expedia
|
|
477
|
+
platform: workday
|
|
478
|
+
slug: expedia
|
|
479
|
+
source_of_record: openjobs
|
|
480
|
+
last_verified: 2026-08-18
|
|
481
|
+
recheck_after: *id007
|
|
482
|
+
workday_tenant: expedia
|
|
483
|
+
workday_site: search
|
|
484
|
+
workday_dc: wd108
|
|
485
|
+
notes: Parked as never answering on wd5/private; it is live on wd108/search with
|
|
486
|
+
141 postings.
|
|
487
|
+
- name: extreme network
|
|
488
|
+
platform: lever
|
|
489
|
+
slug: extremenetworks
|
|
490
|
+
source_of_record: openjobs
|
|
491
|
+
last_verified: 2026-08-04
|
|
492
|
+
- name: EY
|
|
493
|
+
platform: custom_json
|
|
494
|
+
slug: ey
|
|
495
|
+
source_of_record: discover
|
|
496
|
+
last_verified: 2026-08-20
|
|
497
|
+
notes: SuccessFactors RMK; its /rss.xml is 106MB and ignores q, but the search page
|
|
498
|
+
honours q=internship and pages on startrow.
|
|
499
|
+
custom:
|
|
500
|
+
url: https://careers.ey.com/search/?q=internship&sortColumn=referencedate&sortDirection=desc
|
|
501
|
+
format: html
|
|
502
|
+
authoritative: false
|
|
503
|
+
row_selector: tr.data-row
|
|
504
|
+
fields:
|
|
505
|
+
title: a.jobTitle-link
|
|
506
|
+
id: a.jobTitle-link::slugid(href)
|
|
507
|
+
url: a.jobTitle-link::attr(href)
|
|
508
|
+
location: .jobLocation
|
|
509
|
+
page_param: startrow
|
|
510
|
+
page_size: 25
|
|
511
|
+
page_step: 25
|
|
512
|
+
max_pages: 8
|
|
513
|
+
- name: Eyeline
|
|
514
|
+
platform: lever
|
|
515
|
+
slug: scanlinevfx
|
|
516
|
+
source_of_record: openjobs
|
|
517
|
+
enabled: false
|
|
518
|
+
notes: '2026-08-08: lever publishes no board name, so a 200 with jobs is not evidence
|
|
519
|
+
of the right company; needs a human to open the board once'
|