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.
Files changed (170) hide show
  1. stage/__init__.py +1 -0
  2. stage/__main__.py +8 -0
  3. stage/banner.py +32 -0
  4. stage/bootstrap/__init__.py +0 -0
  5. stage/bootstrap/openjobs.py +392 -0
  6. stage/classify/__init__.py +29 -0
  7. stage/classify/eligibility.py +115 -0
  8. stage/classify/internship.py +64 -0
  9. stage/classify/role.py +91 -0
  10. stage/classify/scope.py +47 -0
  11. stage/cli/__init__.py +0 -0
  12. stage/cli/app.py +4 -0
  13. stage/cli/commands/__init__.py +8 -0
  14. stage/cli/commands/discovery.py +294 -0
  15. stage/cli/commands/insight.py +494 -0
  16. stage/cli/commands/pipeline.py +337 -0
  17. stage/cli/commands/postings.py +473 -0
  18. stage/cli/commands/schedule.py +171 -0
  19. stage/cli/housekeeping.py +64 -0
  20. stage/cli/logfile.py +56 -0
  21. stage/cli/notify.py +170 -0
  22. stage/cli/options.py +678 -0
  23. stage/cli/render.py +1398 -0
  24. stage/cli/runlock.py +74 -0
  25. stage/cli/schedule.py +702 -0
  26. stage/cli/schedule_state.py +363 -0
  27. stage/cli/selection.py +83 -0
  28. stage/cli/serialize.py +196 -0
  29. stage/companies.py +542 -0
  30. stage/data/companies/a.yaml +1289 -0
  31. stage/data/companies/b.yaml +900 -0
  32. stage/data/companies/c.yaml +1377 -0
  33. stage/data/companies/d.yaml +497 -0
  34. stage/data/companies/e.yaml +519 -0
  35. stage/data/companies/f.yaml +454 -0
  36. stage/data/companies/g.yaml +601 -0
  37. stage/data/companies/h.yaml +446 -0
  38. stage/data/companies/i.yaml +503 -0
  39. stage/data/companies/j.yaml +138 -0
  40. stage/data/companies/k.yaml +278 -0
  41. stage/data/companies/l.yaml +402 -0
  42. stage/data/companies/m.yaml +937 -0
  43. stage/data/companies/n.yaml +549 -0
  44. stage/data/companies/o.yaml +371 -0
  45. stage/data/companies/other.yaml +58 -0
  46. stage/data/companies/p.yaml +825 -0
  47. stage/data/companies/q.yaml +121 -0
  48. stage/data/companies/r.yaml +583 -0
  49. stage/data/companies/s.yaml +1140 -0
  50. stage/data/companies/t.yaml +817 -0
  51. stage/data/companies/u.yaml +196 -0
  52. stage/data/companies/v.yaml +325 -0
  53. stage/data/companies/w.yaml +353 -0
  54. stage/data/companies/x.yaml +67 -0
  55. stage/data/companies/y.yaml +36 -0
  56. stage/data/companies/z.yaml +146 -0
  57. stage/data/fonts/DejaVuSans.LICENSE.txt +99 -0
  58. stage/data/fonts/DejaVuSans.ttf +0 -0
  59. stage/data/lexicon/company_tokens.yaml +228 -0
  60. stage/data/lexicon/eligibility.yaml +455 -0
  61. stage/data/lexicon/inclusive_suffixes.yaml +37 -0
  62. stage/data/lexicon/internship.yaml +187 -0
  63. stage/data/lexicon/language.yaml +226 -0
  64. stage/data/lexicon/locations.yaml +1159 -0
  65. stage/data/lexicon/roles.yaml +2012 -0
  66. stage/data/lexicon/terms.yaml +76 -0
  67. stage/data/lexicon/workday_facets.yaml +27 -0
  68. stage/data/seed_companies.yaml +198 -0
  69. stage/dedup/__init__.py +19 -0
  70. stage/dedup/identity.py +113 -0
  71. stage/dedup/resolve.py +97 -0
  72. stage/domain/__init__.py +244 -0
  73. stage/domain/company.py +49 -0
  74. stage/domain/coverage.py +86 -0
  75. stage/domain/custom_board.py +92 -0
  76. stage/domain/discovery.py +94 -0
  77. stage/domain/enums.py +114 -0
  78. stage/domain/events.py +204 -0
  79. stage/domain/filters.py +27 -0
  80. stage/domain/health.py +169 -0
  81. stage/domain/ids.py +48 -0
  82. stage/domain/job.py +47 -0
  83. stage/domain/matching.py +15 -0
  84. stage/domain/priority.py +34 -0
  85. stage/domain/quarantine.py +39 -0
  86. stage/domain/rate_state.py +78 -0
  87. stage/domain/retention.py +20 -0
  88. stage/domain/rotation.py +46 -0
  89. stage/domain/signals.py +12 -0
  90. stage/domain/sync_run.py +35 -0
  91. stage/domain/text.py +113 -0
  92. stage/domain/validator.py +14 -0
  93. stage/domain/visits.py +60 -0
  94. stage/domain/workday.py +38 -0
  95. stage/http/__init__.py +58 -0
  96. stage/http/breaker.py +53 -0
  97. stage/http/cache.py +44 -0
  98. stage/http/client.py +725 -0
  99. stage/http/profiles.py +101 -0
  100. stage/lexicon.py +370 -0
  101. stage/normalize/__init__.py +16 -0
  102. stage/normalize/language.py +47 -0
  103. stage/normalize/location.py +271 -0
  104. stage/normalize/terms.py +153 -0
  105. stage/normalize/urls.py +122 -0
  106. stage/paths.py +86 -0
  107. stage/py.typed +0 -0
  108. stage/services/__init__.py +0 -0
  109. stage/services/canary.py +120 -0
  110. stage/services/coverage.py +231 -0
  111. stage/services/discover.py +747 -0
  112. stage/services/export.py +274 -0
  113. stage/services/health.py +237 -0
  114. stage/services/maintenance.py +225 -0
  115. stage/services/quarantine.py +20 -0
  116. stage/services/query.py +86 -0
  117. stage/services/sync.py +1257 -0
  118. stage/sources/__init__.py +82 -0
  119. stage/sources/_text.py +79 -0
  120. stage/sources/ashby.py +93 -0
  121. stage/sources/bamboohr.py +80 -0
  122. stage/sources/base.py +225 -0
  123. stage/sources/breezy.py +90 -0
  124. stage/sources/collage.py +60 -0
  125. stage/sources/community_feeds.py +142 -0
  126. stage/sources/curated_markdown.py +289 -0
  127. stage/sources/custom_json.py +610 -0
  128. stage/sources/espresso.py +154 -0
  129. stage/sources/feed.py +44 -0
  130. stage/sources/greenhouse.py +104 -0
  131. stage/sources/jobbank.py +147 -0
  132. stage/sources/jobvite.py +133 -0
  133. stage/sources/lever.py +76 -0
  134. stage/sources/oracle_cloud.py +187 -0
  135. stage/sources/platforms.py +609 -0
  136. stage/sources/quebec_emploi.py +146 -0
  137. stage/sources/recruitee.py +96 -0
  138. stage/sources/simplify.py +110 -0
  139. stage/sources/smartrecruiters.py +216 -0
  140. stage/sources/speedyapply.py +200 -0
  141. stage/sources/themuse.py +157 -0
  142. stage/sources/workable.py +83 -0
  143. stage/sources/workday.py +524 -0
  144. stage/sources/zshah.py +99 -0
  145. stage/storage/__init__.py +29 -0
  146. stage/storage/migrations/0001_initial.sql +239 -0
  147. stage/storage/migrations/__init__.py +135 -0
  148. stage/storage/repository.py +213 -0
  149. stage/storage/search.py +28 -0
  150. stage/storage/sqlite_repo.py +1586 -0
  151. stage/storage/writer.py +249 -0
  152. stage/tui/__init__.py +0 -0
  153. stage/tui/app.py +82 -0
  154. stage/tui/help.py +26 -0
  155. stage/tui/safe.py +21 -0
  156. stage/tui/screens/__init__.py +0 -0
  157. stage/tui/screens/boards.py +186 -0
  158. stage/tui/screens/postings.py +509 -0
  159. stage/tui/screens/review.py +209 -0
  160. stage/tui/screens/splash.py +37 -0
  161. stage/tui/screens/stats.py +124 -0
  162. stage/tui/screens/sync.py +194 -0
  163. stage/tui/state.py +160 -0
  164. stage/tui/theme.tcss +205 -0
  165. stage/tui/widgets/__init__.py +0 -0
  166. stage_cli-1.0.0.dist-info/METADATA +379 -0
  167. stage_cli-1.0.0.dist-info/RECORD +170 -0
  168. stage_cli-1.0.0.dist-info/WHEEL +4 -0
  169. stage_cli-1.0.0.dist-info/entry_points.txt +2 -0
  170. stage_cli-1.0.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,278 @@
1
+ - name: k-ID
2
+ platform: ashby
3
+ slug: k-id
4
+ source_of_record: discover
5
+ last_verified: &id001 2026-08-14
6
+ name_gate_exempt: true
7
+ notes: '2026-08-14: board token taken from this employer''s own application URL
8
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
9
+ name gate cannot confirm it and provenance is the evidence (9 job(s))'
10
+ - name: Kabam
11
+ platform: lever
12
+ slug: kabam
13
+ source_of_record: openjobs
14
+ last_verified: 2026-08-04
15
+ - name: Kastle AI
16
+ platform: ashby
17
+ slug: kastle
18
+ source_of_record: discover
19
+ last_verified: *id001
20
+ name_gate_exempt: true
21
+ notes: '2026-08-14: board token taken from this employer''s own application URL
22
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
23
+ name gate cannot confirm it and provenance is the evidence (12 job(s))'
24
+ - name: KBR
25
+ platform: workday
26
+ slug: kbr
27
+ source_of_record: discover
28
+ last_verified: &id002 2026-08-14
29
+ workday_tenant: kbr
30
+ workday_site: KBR_Careers
31
+ workday_dc: wd5
32
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
33
+ is the only verification a Workday tenant can have without an offline probe'
34
+ - name: Kepler Communications
35
+ platform: lever
36
+ slug: kepler
37
+ source_of_record: discover
38
+ last_verified: *id001
39
+ name_gate_exempt: true
40
+ notes: '2026-08-14: board token taken from this employer''s own application URL
41
+ in a feed posting, not from slug guessing; lever publishes no board name, so the
42
+ name gate cannot confirm it and provenance is the evidence (34 job(s))'
43
+ - name: KeyBank
44
+ platform: workday
45
+ slug: keybank
46
+ source_of_record: discover
47
+ last_verified: *id002
48
+ workday_tenant: keybank
49
+ workday_site: External_Career_Site
50
+ workday_dc: wd5
51
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
52
+ is the only verification a Workday tenant can have without an offline probe'
53
+ - name: Keysight Technologies
54
+ platform: custom_json
55
+ slug: keysight
56
+ source_of_record: discover
57
+ last_verified: 2026-08-20
58
+ notes: '2026-08-20: reopened — the old row pointed at jobs.keysight.com; the iCIMS
59
+ careers-home site at careers.keysight.com answers /api/jobs with 606 postings
60
+ and full bodies.'
61
+ custom:
62
+ url: https://careers.keysight.com/api/jobs?limit=100
63
+ jobs_path: jobs
64
+ fields:
65
+ title: data.title
66
+ id: data.slug
67
+ location: data.full_location
68
+ description: data.description
69
+ employment_type: data.employment_type
70
+ category: data.category
71
+ department: data.department
72
+ url_template: https://careers.keysight.com/jobs/{id}
73
+ page_param: page
74
+ page_size: 100
75
+ page_start: 1
76
+ page_step: 1
77
+ max_pages: 10
78
+ - name: Keywords Studios
79
+ platform: workable
80
+ slug: keywords-intl1
81
+ source_of_record: openjobs
82
+ last_verified: 2026-08-17
83
+ notes: '2026-08-14: paused after two 429s in one day, the second after 7 requests;
84
+ paused_until resumed it.'
85
+ - name: Kiewit
86
+ platform: custom_json
87
+ slug: kiewit
88
+ source_of_record: discover
89
+ last_verified: 2026-08-20
90
+ notes: SuccessFactors RMK at kiewitcareers; /rss.xml carries all 829 postings, nine
91
+ of them intern or student terms.
92
+ custom:
93
+ url: https://kiewitcareers.kiewit.com/rss.xml
94
+ format: rss
95
+ fields:
96
+ title: title
97
+ id: g:id
98
+ url: link
99
+ location: g:location
100
+ description: description
101
+ category: g:job_function
102
+ - name: Kimley-Horn
103
+ platform: icims
104
+ slug: kimley-horn
105
+ source_of_record: discover
106
+ enabled: false
107
+ notes: '2026-08-20: re-probed with the careers-home route that opened AMD, Garmin
108
+ and Panasonic; this employer publishes no careers.<domain> site, and /api/jobs
109
+ on its icims.com host is 404.'
110
+ - name: Kion Group
111
+ platform: workday
112
+ slug: kiongroup
113
+ source_of_record: discover
114
+ last_verified: &id003 2026-08-16
115
+ workday_tenant: kiongroup
116
+ workday_site: kiongroup
117
+ workday_dc: wd3
118
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
119
+ verified by a scratch sync — the board answered with 22 posting(s), 4 kept after
120
+ the CS-internship screens'
121
+ - name: Kion Group
122
+ platform: workday
123
+ slug: kiongroup
124
+ source_of_record: discover
125
+ last_verified: *id003
126
+ workday_tenant: kiongroup
127
+ workday_site: kion_scs
128
+ workday_dc: wd3
129
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
130
+ verified by a scratch sync — the board answered with 22 posting(s), 4 kept after
131
+ the CS-internship screens'
132
+ - name: Kirin
133
+ platform: ashby
134
+ slug: kirin
135
+ source_of_record: discover
136
+ last_verified: *id001
137
+ name_gate_exempt: true
138
+ notes: '2026-08-14: board token taken from this employer''s own application URL
139
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
140
+ name gate cannot confirm it and provenance is the evidence (39 job(s))'
141
+ - name: KKR
142
+ platform: greenhouse
143
+ slug: staged
144
+ source_of_record: discover
145
+ last_verified: 2026-08-20
146
+ notes: '2026-08-20: the token reads like a staging board, but greenhouse names it
147
+ Student Careers at KKR and it carries nine real 2027 internships, so the caption
148
+ is the evidence, not the slug.'
149
+ - name: KLA
150
+ platform: workday
151
+ slug: kla
152
+ source_of_record: discover
153
+ last_verified: *id002
154
+ workday_tenant: kla
155
+ workday_site: AnnArbor
156
+ workday_dc: wd1
157
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
158
+ is the only verification a Workday tenant can have without an offline probe'
159
+ - name: Klaviyo
160
+ platform: greenhouse
161
+ slug: klaviyo
162
+ source_of_record: openjobs
163
+ last_verified: 2026-08-16
164
+ notes: '2026-08-16: ats_link recorded in the OpenJobs dataset, then verified by
165
+ a live probe that matched the company name on the returned board'
166
+ - name: Klue
167
+ platform: ashby
168
+ slug: klue
169
+ source_of_record: discover
170
+ last_verified: 2026-08-17
171
+ name_gate_exempt: true
172
+ notes: '2026-08-17: found by browser-assisted discovery from the employer''s own
173
+ careers page and the board answered with postings, but ashby publishes no board
174
+ name, so provenance is the evidence rather than a name match'
175
+ - name: Kodiak Robotics
176
+ platform: greenhouse
177
+ slug: kodiak
178
+ source_of_record: discover
179
+ last_verified: 2026-09-01
180
+ notes: '2026-09-01: verified 72 postings including six Winter 2027 internships.'
181
+ - name: Kognitos
182
+ platform: ashby
183
+ slug: kognitos
184
+ source_of_record: discover
185
+ last_verified: *id001
186
+ name_gate_exempt: true
187
+ notes: '2026-08-14: board token taken from this employer''s own application URL
188
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
189
+ name gate cannot confirm it and provenance is the evidence (6 job(s))'
190
+ - name: KOHO
191
+ platform: ashby
192
+ slug: koho
193
+ source_of_record: discover
194
+ last_verified: 2026-08-17
195
+ name_gate_exempt: true
196
+ notes: '2026-08-17: found by browser-assisted discovery from the employer''s own
197
+ careers page and the board answered with postings, but ashby publishes no board
198
+ name, so provenance is the evidence rather than a name match'
199
+ - name: KONE
200
+ platform: workday
201
+ slug: kone
202
+ source_of_record: discover
203
+ last_verified: *id003
204
+ workday_tenant: kone
205
+ workday_site: careers
206
+ workday_dc: wd3
207
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
208
+ verified by a scratch sync — the board answered with 120 posting(s), 1 kept after
209
+ the CS-internship screens'
210
+ - name: kos.ai
211
+ platform: ashby
212
+ slug: kos.ai
213
+ source_of_record: discover
214
+ last_verified: *id001
215
+ name_gate_exempt: true
216
+ notes: '2026-08-14: board token taken from this employer''s own application URL
217
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
218
+ name gate cannot confirm it and provenance is the evidence (5 job(s))'
219
+ - name: KOSTAL Group
220
+ platform: smartrecruiters
221
+ slug: kostalgroup
222
+ source_of_record: discover
223
+ last_verified: 2026-08-18
224
+ notes: '2026-08-18: seen in feed postings but absent from the registry; discover
225
+ matched smartrecruiters/kostalgroup with 118 job(s) and the board named itself,
226
+ so it is polled directly instead of secondhand'
227
+ - name: KPMG
228
+ platform: custom_json
229
+ slug: kpmg
230
+ source_of_record: discover
231
+ last_verified: 2026-08-18
232
+ notes: 'The earlier park named a wrong filter, not a dead endpoint: tags1=Intern/Co-op
233
+ is the facet the site itself uses.'
234
+ custom:
235
+ url: https://careers.kpmg.ca/api/jobs?lang=en-US&limit=25&page=1&tags1=Intern%2FCo-op
236
+ jobs_path: jobs
237
+ fields:
238
+ title: data.title
239
+ id: data.slug
240
+ location: data.full_location
241
+ description: data.description
242
+ url: data.apply_url
243
+ category: data.category
244
+ employment_type: data.employment_type
245
+ page_param: page
246
+ page_size: 25
247
+ page_start: 1
248
+ page_step: 1
249
+ max_pages: 20
250
+ - name: Krafton
251
+ platform: greenhouse
252
+ slug: krafton
253
+ source_of_record: discover
254
+ last_verified: 2026-08-20
255
+ notes: Its careers page answers 403, but the native greenhouse board answers with
256
+ 77 postings.
257
+ - name: KRAFTON Montréal Studio
258
+ platform: greenhouse
259
+ slug: studiokraftonboard
260
+ source_of_record: openjobs
261
+ last_verified: 2026-08-11
262
+ - name: Kraken
263
+ platform: ashby
264
+ slug: kraken.com
265
+ source_of_record: discover
266
+ last_verified: 2026-08-21
267
+ notes: '2026-08-21: supplied URL is the employer’s Ashby board and returned live
268
+ postings.'
269
+ - name: Kyndryl
270
+ platform: workday
271
+ slug: kyndryl
272
+ source_of_record: discover
273
+ last_verified: 2026-08-17
274
+ workday_tenant: kyndryl
275
+ workday_site: KyndrylEarlyCareers
276
+ workday_dc: wd5
277
+ notes: '2026-08-17: verified by scratch sync. This is the employer''s own early-careers
278
+ site, which carried 1 posting that day; adopted for the September intake'
@@ -0,0 +1,402 @@
1
+ - name: L3Harris
2
+ platform: custom_json
3
+ slug: l3harris
4
+ source_of_record: discover
5
+ last_verified: 2026-08-20
6
+ notes: TalentBrew, server-rendered like BlackRock; its p parameter paginates and
7
+ page two shares no ids with page one.
8
+ custom:
9
+ url: https://careers.l3harris.com/en/search-jobs
10
+ format: html
11
+ row_selector: '#search-results-list li'
12
+ fields:
13
+ title: h2
14
+ id: a::attr(data-job-id)
15
+ url: a::attr(href)
16
+ location: .job-location
17
+ category: .job-category
18
+ page_param: p
19
+ page_size: 1
20
+ page_start: 1
21
+ page_step: 1
22
+ max_pages: 12
23
+ - name: Lam Research
24
+ platform: custom_json
25
+ slug: lamresearch
26
+ source_of_record: discover
27
+ last_verified: 2026-08-20
28
+ notes: '2026-08-20: Eightfold tenant read from the careers page; filter_paygrade
29
+ is the publisher''s own intern facet, the same shape as the Eaton row.'
30
+ custom:
31
+ url: https://lamresearch.eightfold.ai/api/pcsx/search?domain=lamresearch.com&query=&sort_by=relevance&filter_paygrade=intern%2Fapprentice
32
+ jobs_path: data.positions
33
+ fields:
34
+ title: name
35
+ id: id
36
+ location: standardizedLocations
37
+ department: department
38
+ url_template: https://lamresearch.eightfold.ai/careers/job/{id}
39
+ page_param: start
40
+ page_size: 10
41
+ max_pages: 20
42
+ - name: Lambda
43
+ platform: ashby
44
+ slug: lambda
45
+ source_of_record: openjobs
46
+ last_verified: &id001 2026-08-11
47
+ notes: '2026-08-11: enabled on slug evidence - ashby publishes no board name, but
48
+ the slug folds to the caption and the board returned 67 job(s)'
49
+ - name: LangChain
50
+ platform: ashby
51
+ slug: langchain
52
+ source_of_record: openjobs
53
+ last_verified: *id001
54
+ notes: '2026-08-11: enabled on slug evidence - ashby publishes no board name, but
55
+ the slug folds to the caption and the board returned 101 job(s)'
56
+ - name: Larian Studios
57
+ platform: lever
58
+ slug: larian
59
+ source_of_record: openjobs
60
+ last_verified: &id003 2026-08-04
61
+ - name: Later
62
+ platform: greenhouse
63
+ slug: later
64
+ source_of_record: discover
65
+ last_verified: &id004 2026-08-14
66
+ - name: Lattice Semiconductor
67
+ platform: workday
68
+ slug: latticesemi
69
+ source_of_record: discover
70
+ last_verified: 2026-08-20
71
+ workday_tenant: latticesemi
72
+ workday_site: latticesemiconductorscareers
73
+ workday_dc: wd5
74
+ notes: '2026-08-20: coordinates read from the owner-supplied careers URL, not guessed.'
75
+ - name: LaunchDarkly
76
+ platform: greenhouse
77
+ slug: launchdarkly
78
+ source_of_record: openjobs
79
+ last_verified: 2026-08-16
80
+ notes: '2026-08-16: ats_link recorded in the OpenJobs dataset, then verified by
81
+ a live probe that matched the company name on the returned board'
82
+ - name: Lawrence Livermore National Laboratory (LLNL)
83
+ platform: smartrecruiters
84
+ slug: llnl
85
+ source_of_record: discover
86
+ last_verified: &id005 2026-08-14
87
+ - name: LAXIR
88
+ platform: smartrecruiters
89
+ slug: laxir1
90
+ source_of_record: discover
91
+ last_verified: &id002 2026-08-16
92
+ notes: '2026-08-16: seen in feed postings but absent from the registry; discover
93
+ matched smartrecruiters/laxir1 with 10 job(s) and the board named itself, so it
94
+ is polled directly instead of secondhand'
95
+ - name: Lazard
96
+ platform: oracle_cloud
97
+ slug: icbpjb
98
+ source_of_record: discover
99
+ last_verified: 2026-08-20
100
+ oracle_host: icbpjb.fa.ocs.oraclecloud.com
101
+ oracle_site: LazardStudentCareers
102
+ oracle_keyword: ''
103
+ notes: '2026-08-20: a student-only Oracle site, so the English keyword is pinned
104
+ off and the whole 94-row board is walked.'
105
+ - name: LBC Studios
106
+ platform: bamboohr
107
+ slug: lbcstudiosca
108
+ source_of_record: openjobs
109
+ enabled: false
110
+ notes: '2026-08-08: bamboohr publishes no board name, so a 200 with jobs is not
111
+ evidence of the right company; needs a human to open the board once'
112
+ - name: Lead Venture
113
+ platform: jobvite
114
+ slug: leadventure
115
+ source_of_record: openjobs
116
+ last_verified: 2026-08-21
117
+ notes: '2026-08-21: the Jobvite API answers 401, but jobs.jobvite.com/leadventure/jobs
118
+ server-renders all 16 postings, which is the contract this row polls'
119
+ - name: Leidos
120
+ platform: workday
121
+ slug: leidos
122
+ source_of_record: discover
123
+ last_verified: &id006 2026-08-14
124
+ workday_tenant: leidos
125
+ workday_site: External
126
+ workday_dc: wd5
127
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
128
+ is the only verification a Workday tenant can have without an offline probe'
129
+ - name: Leland
130
+ platform: ashby
131
+ slug: leland
132
+ source_of_record: discover
133
+ last_verified: *id002
134
+ name_gate_exempt: true
135
+ notes: '2026-08-16: token from this employer''s own apply URL, not slug guessing;
136
+ ashby publishes no board name, so provenance is the evidence (187 job(s))'
137
+ - name: Liberty University
138
+ platform: workday
139
+ slug: liberty
140
+ source_of_record: discover
141
+ last_verified: 2026-08-16
142
+ workday_tenant: liberty
143
+ workday_site: lu_job_board_staff
144
+ workday_dc: wd5
145
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
146
+ verified by a scratch sync (84 posting(s), 0 kept)'
147
+ - name: Lightcast
148
+ platform: lever
149
+ slug: economicmodeling
150
+ source_of_record: openjobs
151
+ last_verified: *id003
152
+ - name: Lightspeed
153
+ platform: custom_json
154
+ slug: lightspeedhq
155
+ source_of_record: discover
156
+ last_verified: 2026-08-18
157
+ notes: The greenhouse board is gone and ashby/lightspeed is a different company,
158
+ so the real board is the server-rendered listing on lightspeedhq.com/careers/openings.
159
+ custom:
160
+ url: https://www.lightspeedhq.com/careers/openings/
161
+ format: html
162
+ row_selector: li.job
163
+ fields:
164
+ title: span.job-title
165
+ location: span.job-office
166
+ department: span.job-dept
167
+ id: a::slugid(href)
168
+ url: a::attr(href)
169
+ - name: Lightspeed (FR)
170
+ platform: greenhouse
171
+ slug: lightspeedhqfr
172
+ source_of_record: discover
173
+ enabled: false
174
+ notes: '2026-08-08: probed — board does not respond; re-resolve with discover --url
175
+ Re-probed 2026-08-14 and still dead.'
176
+ - name: Lila Sciences
177
+ platform: greenhouse
178
+ slug: lilasciences
179
+ source_of_record: discover
180
+ last_verified: *id004
181
+ - name: Lilt
182
+ platform: ashby
183
+ slug: lilt
184
+ source_of_record: openjobs
185
+ enabled: false
186
+ notes: '2026-08-08: ashby publishes no board name, so a 200 with jobs is not evidence
187
+ of the right company; needs a human to open the board once'
188
+ - name: Limetax
189
+ platform: ashby
190
+ slug: limetax
191
+ source_of_record: discover
192
+ last_verified: 2026-08-14
193
+ name_gate_exempt: true
194
+ notes: '2026-08-14: board token taken from this employer''s own application URL
195
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
196
+ name gate cannot confirm it and provenance is the evidence (11 job(s))'
197
+ - name: Linear
198
+ platform: ashby
199
+ slug: linear
200
+ source_of_record: openjobs
201
+ last_verified: 2026-08-16
202
+ name_gate_exempt: true
203
+ notes: '2026-08-16: ats_link recorded in the OpenJobs dataset and the board answered
204
+ with postings, but this platform publishes no board name, so provenance is the
205
+ evidence rather than a name match.'
206
+ - name: LinkedIn
207
+ platform: smartrecruiters
208
+ slug: linkedin3
209
+ source_of_record: openjobs
210
+ last_verified: *id005
211
+ - name: Liquid Development
212
+ platform: workable
213
+ slug: liquid-development
214
+ source_of_record: openjobs
215
+ last_verified: 2026-08-17
216
+ notes: '2026-08-14: paused after two 429s in one day, the second after 7 requests;
217
+ paused_until resumed it.'
218
+ - name: Litmus
219
+ platform: greenhouse
220
+ slug: litmus46
221
+ source_of_record: openjobs
222
+ enabled: false
223
+ notes: '2026-08-08: probed — board does not respond; re-resolve with discover --url
224
+ Re-probed 2026-08-14 and still dead.'
225
+ - name: Loblaw
226
+ platform: custom_json
227
+ slug: loblaw
228
+ source_of_record: discover
229
+ last_verified: 2026-08-19
230
+ enabled: false
231
+ notes: 296 pages of retail whose pagination is a path rather than a parameter, and
232
+ no category facet is honoured, so the volume is not worth the two CS roles.
233
+ custom:
234
+ url: https://careers.loblaw.ca/jobs
235
+ format: html
236
+ authoritative: false
237
+ row_selector: .results-list__item
238
+ fields:
239
+ title: .results-list__item-title--link
240
+ id: .results-list__item-title--link::attr(href)
241
+ url: .results-list__item-title--link::attr(href)
242
+ location: .results-list__item-street--label
243
+ - name: Lockheed Martin
244
+ platform: custom_json
245
+ slug: lockheedmartin
246
+ source_of_record: discover
247
+ last_verified: 2026-08-20
248
+ notes: '2026-08-20: Eightfold fixes the page at 10, so the whole 1,252-position
249
+ board would cost 126 requests a refresh. Filtered to the owner''s query=internship
250
+ instead, which stops on a short page and so costs one request while Lockheed has
251
+ no interns posted.'
252
+ custom:
253
+ url: https://lockheedmartin.eightfold.ai/api/pcsx/search?domain=lockheedmartin.com&query=internship&sort_by=relevance
254
+ jobs_path: data.positions
255
+ fields:
256
+ title: name
257
+ id: id
258
+ location: standardizedLocations
259
+ department: department
260
+ url_template: https://lockheedmartin.eightfold.ai/careers/job/{id}
261
+ page_param: start
262
+ page_size: 10
263
+ max_pages: 30
264
+ - name: Logitech
265
+ platform: workday
266
+ slug: logitech
267
+ source_of_record: discover
268
+ last_verified: *id006
269
+ workday_tenant: logitech
270
+ workday_site: logitech
271
+ workday_dc: wd5
272
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
273
+ is the only verification a Workday tenant can have without an offline probe'
274
+ - name: Lombard Odier
275
+ platform: workday
276
+ slug: lombardodier
277
+ source_of_record: discover
278
+ last_verified: *id006
279
+ workday_tenant: lombardodier
280
+ workday_site: lombard_odier_careers
281
+ workday_dc: wd3
282
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
283
+ is the only verification a Workday tenant can have without an offline probe'
284
+ - name: London stock Exchange
285
+ platform: workday
286
+ slug: lseg
287
+ source_of_record: openjobs
288
+ last_verified: *id006
289
+ recheck_after: 2026-10-01
290
+ workday_tenant: lseg
291
+ workday_site: Careers
292
+ workday_dc: wd3
293
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
294
+ is the only verification a Workday tenant can have without an offline probe'
295
+ - name: Los Alamos National Laboratory
296
+ platform: custom_json
297
+ slug: lanl
298
+ source_of_record: discover
299
+ last_verified: 2026-08-20
300
+ notes: '2026-08-20: the search page is client-side; /jobs-site.xml lists all 505
301
+ postings, with the slug ahead of a uuid.'
302
+ custom:
303
+ url: https://lanl.jobs/jobs-site.xml
304
+ format: sitemap
305
+ authoritative: false
306
+ row_filter: /jobdetails/
307
+ fields:
308
+ title: path2_title
309
+ id: path1
310
+ url: loc
311
+ - name: Louisiana Blue
312
+ platform: workday
313
+ slug: bcbsla
314
+ source_of_record: manual
315
+ last_verified: 2026-08-13
316
+ workday_tenant: bcbsla
317
+ workday_site: Generation_Blue
318
+ workday_dc: wd1
319
+ workday_facet: workerSubType:c705db17b0571036e207c48eba5796e4
320
+ notes: '2026-08-13: official Workday endpoint verified; its Intern facet has eight
321
+ listings.'
322
+ - name: Louisiana State University (LSU)
323
+ platform: workday
324
+ slug: lsu
325
+ source_of_record: discover
326
+ last_verified: 2026-08-16
327
+ workday_tenant: lsu
328
+ workday_site: lsuwaiver
329
+ workday_dc: wd1
330
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
331
+ verified by a scratch sync (1 posting(s), 0 kept)'
332
+ - name: Loyalty Juggernaut
333
+ platform: bamboohr
334
+ slug: lji
335
+ source_of_record: openjobs
336
+ enabled: false
337
+ notes: '2026-08-08: bamboohr publishes no board name, so a 200 with jobs is not
338
+ evidence of the right company; needs a human to open the board once'
339
+ - name: LPL Financial Holdings
340
+ platform: workday
341
+ slug: lplfinancial
342
+ source_of_record: discover
343
+ last_verified: *id006
344
+ workday_tenant: lplfinancial
345
+ workday_site: university
346
+ workday_dc: wd1
347
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
348
+ is the only verification a Workday tenant can have without an offline probe'
349
+ - name: Lucid Motors
350
+ platform: greenhouse
351
+ slug: lucidmotors
352
+ source_of_record: discover
353
+ last_verified: *id004
354
+ - name: Lucidya
355
+ platform: workable
356
+ slug: lucidya
357
+ source_of_record: discover
358
+ last_verified: 2026-08-16
359
+ notes: '2026-08-16: adopted from this employer''s own apply URL, then paused to
360
+ match the rest of the workable platform, which is parked until 2026-08-18 after
361
+ two 429s in one day.'
362
+ - name: Lucky VR
363
+ platform: breezy
364
+ slug: lucky-vr
365
+ source_of_record: openjobs
366
+ enabled: false
367
+ notes: '2026-08-08: breezy publishes no board name, so a 200 with jobs is not evidence
368
+ of the right company; needs a human to open the board once'
369
+ - name: Ludia
370
+ platform: bamboohr
371
+ slug: ludia
372
+ source_of_record: discover
373
+ last_verified: 2026-08-21
374
+ notes: '2026-08-21: bamboohr publishes no board name; its postings carry Ludia in
375
+ their own bilingual titles'
376
+ - name: Lumeto
377
+ platform: bamboohr
378
+ slug: lumeto
379
+ source_of_record: openjobs
380
+ last_verified: *id001
381
+ notes: '2026-08-11: enabled on slug evidence - bamboohr publishes no board name,
382
+ but the slug folds to the caption and the board returned 1 job(s)'
383
+ - name: Luminance
384
+ platform: workable
385
+ slug: luminance-1
386
+ source_of_record: discover
387
+ last_verified: 2026-08-17
388
+ notes: '2026-08-14: paused after two 429s in one day, the second after 7 requests;
389
+ paused_until resumed it.'
390
+ - name: Lyft
391
+ platform: greenhouse
392
+ slug: lyft
393
+ source_of_record: discover
394
+ last_verified: *id004
395
+ - name: Léger
396
+ platform: smartrecruiters
397
+ slug: leger2
398
+ source_of_record: discover
399
+ last_verified: *id002
400
+ notes: '2026-08-16: seen in feed postings but absent from the registry; discover
401
+ matched smartrecruiters/leger2 with 10 job(s) and the board named itself, so it
402
+ is polled directly instead of secondhand'