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,825 @@
1
+ - name: P&G - Procter & Gamble
2
+ platform: workday
3
+ slug: pg
4
+ source_of_record: discover
5
+ last_verified: &id003 2026-08-14
6
+ workday_tenant: pg
7
+ workday_site: '1000'
8
+ workday_dc: wd5
9
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
10
+ is the only verification a Workday tenant can have without an offline probe'
11
+ - name: PagerDuty
12
+ platform: greenhouse
13
+ slug: pagerduty
14
+ source_of_record: discover
15
+ last_verified: 2026-08-21
16
+ notes: '2026-08-21: official careers page resolves to the live PagerDuty Greenhouse
17
+ board.'
18
+ - name: Palantir
19
+ platform: smartrecruiters
20
+ slug: palantir
21
+ source_of_record: discover
22
+ last_verified: &id004 2026-08-14
23
+ - name: Palantir
24
+ platform: lever
25
+ slug: palantir
26
+ source_of_record: discover
27
+ last_verified: 2026-08-20
28
+ name_gate_exempt: true
29
+ notes: '2026-08-20: sibling of the smartrecruiters row, which carries 10 postings
30
+ to this board''s 308; adopted on apply-url provenance already in the corpus, since
31
+ lever publishes no name.'
32
+ - name: Palo Alto Networks
33
+ platform: custom_json
34
+ slug: paloaltonetworks
35
+ source_of_record: discover
36
+ last_verified: 2026-08-19
37
+ notes: TalentBrew read as html from /en/search-jobs with k=intern, the only filter
38
+ honoured, which cuts 87 pages to 1.
39
+ custom:
40
+ url: https://jobs.paloaltonetworks.com/en/search-jobs/?k=intern
41
+ format: html
42
+ row_selector: li.section29__search-results-li
43
+ fields:
44
+ title: h2.section29__search-results-job-title
45
+ location: span.section29__result-location
46
+ category: span.section29__result-category
47
+ id: a.section29__search-results-link::attr(data-job-id)
48
+ url: a.section29__search-results-link::attr(href)
49
+ page_param: p
50
+ page_size: 15
51
+ page_start: 1
52
+ page_step: 1
53
+ max_pages: 10
54
+ - name: PanAgora
55
+ platform: workday
56
+ slug: empower
57
+ source_of_record: discover
58
+ last_verified: 2026-08-16
59
+ workday_tenant: empower
60
+ workday_site: PanAgora
61
+ workday_dc: wd12
62
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
63
+ verified by a scratch sync (2 posting(s), 0 kept)'
64
+ - name: Panasonic North America
65
+ platform: custom_json
66
+ slug: panasonic-na
67
+ source_of_record: discover
68
+ last_verified: 2026-08-20
69
+ notes: '2026-08-20: iCIMS careers-home site, the same contract as the AMD row; this
70
+ is the North American board only.'
71
+ custom:
72
+ url: https://careers.na.panasonic.com/api/jobs?limit=100
73
+ jobs_path: jobs
74
+ fields:
75
+ title: data.title
76
+ id: data.slug
77
+ location: data.full_location
78
+ description: data.description
79
+ employment_type: data.employment_type
80
+ category: data.category
81
+ department: data.department
82
+ url_template: https://careers.na.panasonic.com/jobs/{id}
83
+ page_param: page
84
+ page_size: 100
85
+ page_start: 1
86
+ page_step: 1
87
+ max_pages: 8
88
+ - name: Parsons
89
+ platform: custom_json
90
+ slug: parsons
91
+ source_of_record: discover
92
+ last_verified: 2026-08-20
93
+ enabled: false
94
+ notes: Server-rendered listing, but its search parameter is ignored and the unfiltered
95
+ page is 1.2MB of cleared defence roles, so the volume is not worth the yield.
96
+ custom:
97
+ url: https://jobs.parsons.com/career-search
98
+ format: html
99
+ authoritative: false
100
+ row_selector: .career20_top-wrapper
101
+ fields:
102
+ title: .heading-style-h4
103
+ category: .tag
104
+ id: a[data-action="view_job"]::attr(href)
105
+ url: a[data-action="view_job"]::attr(href)
106
+ - name: Partly
107
+ platform: ashby
108
+ slug: partly.com
109
+ source_of_record: discover
110
+ last_verified: &id001 2026-08-14
111
+ name_gate_exempt: true
112
+ notes: '2026-08-14: board token taken from this employer''s own application URL
113
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
114
+ name gate cannot confirm it and provenance is the evidence (42 job(s))'
115
+ - name: Patsnap
116
+ platform: lever
117
+ slug: patsnap
118
+ source_of_record: discover
119
+ last_verified: *id001
120
+ name_gate_exempt: true
121
+ notes: '2026-08-14: board token taken from this employer''s own application URL
122
+ in a feed posting, not from slug guessing; lever publishes no board name, so the
123
+ name gate cannot confirm it and provenance is the evidence (32 job(s))'
124
+ - name: Payoneer
125
+ platform: greenhouse
126
+ slug: payoneer
127
+ source_of_record: discover
128
+ last_verified: &id002 2026-08-14
129
+ - name: PayPal (Eightfold)
130
+ platform: custom_json
131
+ slug: paypal-eightfold
132
+ source_of_record: discover
133
+ last_verified: 2026-08-18
134
+ notes: Eightfold tenant fetched unfiltered because all five intern filters are accepted
135
+ and ignored.
136
+ custom:
137
+ url: https://paypal.eightfold.ai/api/pcsx/search?domain=paypal.com&query=&start=0&num=10
138
+ jobs_path: data.positions
139
+ fields:
140
+ title: name
141
+ id: id
142
+ location: standardizedLocations
143
+ department: department
144
+ url_template: https://paypal.eightfold.ai/careers/job/{id}
145
+ page_param: start
146
+ page_size: 10
147
+ max_pages: 14
148
+ - name: PCL Construction
149
+ platform: custom_json
150
+ slug: pcl
151
+ source_of_record: discover
152
+ last_verified: 2026-08-20
153
+ notes: SuccessFactors RMK; /rss.xml carries all 409 postings, 31 of them student
154
+ or co-op terms.
155
+ custom:
156
+ url: https://careers.pcl.com/rss.xml
157
+ format: rss
158
+ fields:
159
+ title: title
160
+ id: g:id
161
+ url: link
162
+ location: g:location
163
+ description: description
164
+ category: g:job_function
165
+ - name: PDT Partners
166
+ platform: greenhouse
167
+ slug: pdtpartners
168
+ source_of_record: discover
169
+ last_verified: *id002
170
+ - name: PEAK6
171
+ platform: custom_json
172
+ slug: peak6
173
+ source_of_record: discover
174
+ last_verified: 2026-08-20
175
+ notes: '2026-08-20: owner-captured Ongig request. The group_id index is multi-employer
176
+ — 40 of its 67 rows are Apex Fintech — so it is filtered to the PEAK6 subdivisions;
177
+ the apply url template is the one the site''s own bundle builds. The bearer is
178
+ Ongig''s public widget key, not a Stage credential.'
179
+ custom:
180
+ url: https://text-analyzer.ongig.com/api/external/v2/jobs/search
181
+ method: POST
182
+ body:
183
+ query: ''
184
+ precision: 2
185
+ page:
186
+ size: 100
187
+ current: 1
188
+ filters:
189
+ all:
190
+ - any:
191
+ - live: 1
192
+ - any:
193
+ - group_id: 1767
194
+ - any:
195
+ - subdivision: PEAK6
196
+ - subdivision: PEAK6 Capital Management
197
+ result_fields:
198
+ title:
199
+ raw: {}
200
+ location:
201
+ raw: {}
202
+ req_id:
203
+ raw: {}
204
+ job_type:
205
+ raw: {}
206
+ content:
207
+ raw: {}
208
+ category:
209
+ raw: {}
210
+ url:
211
+ raw: {}
212
+ created_at:
213
+ raw: {}
214
+ headers:
215
+ Authorization: Bearer 1bb83b1b-7481-11df-bbeb-b11bb1cb11b4
216
+ Origin: https://peak6.com
217
+ Referer: https://peak6.com/
218
+ jobs_path: results
219
+ fields:
220
+ title: title.raw
221
+ id: url.raw
222
+ location: location.raw
223
+ description: content.raw
224
+ category: category.raw
225
+ employment_type: job_type.raw
226
+ url_template: https://peak6-prod.ongig.com/jobs/{id}
227
+ page_param: page.current
228
+ page_size: 100
229
+ page_start: 1
230
+ page_step: 1
231
+ max_pages: 10
232
+ - name: Pear VC
233
+ platform: ashby
234
+ slug: pear-vc
235
+ source_of_record: discover
236
+ last_verified: *id001
237
+ name_gate_exempt: true
238
+ notes: '2026-08-14: board token taken from this employer''s own application URL
239
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
240
+ name gate cannot confirm it and provenance is the evidence (92 job(s))'
241
+ - name: Pelmorex
242
+ platform: lever
243
+ slug: pelmorex
244
+ source_of_record: discover
245
+ last_verified: 2026-08-18
246
+ name_gate_exempt: true
247
+ notes: '2026-08-18: token from this employer''s own apply URL, not slug guessing;
248
+ lever publishes no board name, so provenance is the evidence (6 job(s))'
249
+ - name: Peloton
250
+ platform: greenhouse
251
+ slug: peloton
252
+ source_of_record: discover
253
+ last_verified: 2026-08-21
254
+ notes: '2026-08-21: official careers page resolves to the live Peloton Greenhouse
255
+ board.'
256
+ - name: Penn Interactive
257
+ platform: greenhouse
258
+ slug: penninteractive
259
+ source_of_record: openjobs
260
+ last_verified: 2026-08-11
261
+ - name: Pennsylvania State University
262
+ platform: workday
263
+ slug: psu
264
+ source_of_record: manual
265
+ last_verified: 2026-08-13
266
+ workday_tenant: psu
267
+ workday_site: PSU_Staff
268
+ workday_dc: wd1
269
+ workday_facet: workerSubType:5734019731720163878cbb30d04a3321
270
+ notes: '2026-08-13: official Workday endpoint verified; its Student facet has 15
271
+ listings.'
272
+ - name: Penta Group
273
+ platform: lever
274
+ slug: pentagrp
275
+ source_of_record: discover
276
+ last_verified: &id006 2026-08-16
277
+ name_gate_exempt: true
278
+ notes: '2026-08-16: token from this employer''s own apply URL, not slug guessing;
279
+ lever publishes no board name, so provenance is the evidence (5 job(s))'
280
+ - name: pentair
281
+ platform: workday
282
+ slug: pentair
283
+ source_of_record: openjobs
284
+ last_verified: *id003
285
+ recheck_after: &id005 2026-10-01
286
+ workday_tenant: pentair
287
+ workday_site: Pentair_Careers
288
+ workday_dc: wd5
289
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
290
+ is the only verification a Workday tenant can have without an offline probe'
291
+ - name: People Can Fly
292
+ platform: smartrecruiters
293
+ slug: peoplecanfly
294
+ source_of_record: openjobs
295
+ last_verified: *id004
296
+ - name: PepsiCo
297
+ platform: custom_json
298
+ slug: pepsico
299
+ source_of_record: discover
300
+ last_verified: 2026-08-21
301
+ notes: '2026-08-21: keyword and category params are ignored but country is honoured,
302
+ so this row is the declared-partial Canadian slice of 328 rather than 2,802 rows'
303
+ custom:
304
+ url: https://www.pepsicojobs.com/api/jobs?country=Canada
305
+ authoritative: false
306
+ jobs_path: jobs
307
+ fields:
308
+ title: data.title
309
+ id: data.req_id
310
+ url: data.apply_url
311
+ location: data.full_location
312
+ description: data.description
313
+ category: data.category
314
+ page_param: page
315
+ page_size: 10
316
+ page_start: 1
317
+ page_step: 1
318
+ max_pages: 35
319
+ - name: Peraton
320
+ platform: icims
321
+ slug: peraton
322
+ source_of_record: discover
323
+ enabled: false
324
+ notes: '2026-08-20: re-probed with the careers-home route that opened AMD, Garmin
325
+ and Panasonic; this employer publishes no careers.<domain> site, and /api/jobs
326
+ on its icims.com host is 404.'
327
+ - name: Periodic Labs
328
+ platform: ashby
329
+ slug: periodic-labs
330
+ source_of_record: discover
331
+ last_verified: *id001
332
+ name_gate_exempt: true
333
+ notes: '2026-08-14: board token taken from this employer''s own application URL
334
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
335
+ name gate cannot confirm it and provenance is the evidence (26 job(s))'
336
+ - name: Perplexity AI
337
+ platform: ashby
338
+ slug: perplexity
339
+ source_of_record: discover
340
+ last_verified: 2026-08-14
341
+ notes: '2026-08-14: board token perplexity; Ashby API returns 99 jobs'
342
+ - name: Perseus Group, Constellation Software
343
+ platform: workday
344
+ slug: talentmanagementsolution
345
+ source_of_record: discover
346
+ last_verified: *id003
347
+ workday_tenant: talentmanagementsolution
348
+ workday_site: Perseus-careers1
349
+ workday_dc: wd3
350
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
351
+ is the only verification a Workday tenant can have without an offline probe'
352
+ - name: Persistent Systems
353
+ platform: custom_json
354
+ slug: persistentsystems
355
+ source_of_record: discover
356
+ last_verified: 2026-09-01
357
+ notes: '2026-09-01: iCIMS serves no JSON, so this reads the search page.
358
+ Verified a Software Test Engineer intern.'
359
+ custom:
360
+ url: https://careers-persistentsystems.icims.com/jobs/search?ss=1&in_iframe=1
361
+ format: html
362
+ row_selector: div.row:has(a.iCIMS_Anchor)
363
+ fields:
364
+ title: a.iCIMS_Anchor h3
365
+ url: a.iCIMS_Anchor::attr(href)
366
+ location: .header.left span + span
367
+ - name: Persona AI
368
+ platform: ashby
369
+ slug: persona.ai
370
+ source_of_record: manual
371
+ last_verified: 2026-08-13
372
+ notes: '2026-08-13: official active teleoperation software-engineering internship
373
+ application verifies the public Ashby board.'
374
+ - name: PGIM
375
+ platform: workday
376
+ slug: pru
377
+ source_of_record: discover
378
+ last_verified: 2026-08-16
379
+ workday_tenant: pru
380
+ workday_site: pgim_careers
381
+ workday_dc: wd5
382
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
383
+ verified by a scratch sync (70 posting(s), 0 kept)'
384
+ - name: Pfizer
385
+ platform: workday
386
+ slug: pfizer
387
+ source_of_record: discover
388
+ last_verified: 2026-08-31
389
+ workday_tenant: pfizer
390
+ workday_site: PfizerCareers
391
+ workday_dc: wd1
392
+ notes: '2026-08-31: added. 226 postings; most interns are overseas, so the
393
+ location screen carries the weight.'
394
+ - name: Phoenix Contact
395
+ platform: greenhouse
396
+ slug: phoenixcontact
397
+ source_of_record: discover
398
+ last_verified: 2026-09-01
399
+ notes: '2026-09-01: verified 39 postings including a Data Science and Analytics
400
+ intern in Pennsylvania.'
401
+ - name: Philips
402
+ platform: workday
403
+ slug: philips
404
+ source_of_record: openjobs
405
+ last_verified: *id003
406
+ recheck_after: *id005
407
+ workday_tenant: philips
408
+ workday_site: jobs-and-careers
409
+ workday_dc: wd3
410
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
411
+ is the only verification a Workday tenant can have without an offline probe'
412
+ - name: Phonely
413
+ platform: ashby
414
+ slug: phonely
415
+ source_of_record: discover
416
+ last_verified: *id001
417
+ name_gate_exempt: true
418
+ notes: '2026-08-14: board token taken from this employer''s own application URL
419
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
420
+ name gate cannot confirm it and provenance is the evidence (18 job(s))'
421
+ - name: Phonic
422
+ platform: ashby
423
+ slug: phonic
424
+ source_of_record: discover
425
+ last_verified: *id001
426
+ name_gate_exempt: true
427
+ notes: '2026-08-14: board token taken from this employer''s own application URL
428
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
429
+ name gate cannot confirm it and provenance is the evidence (7 job(s))'
430
+ - name: Photon
431
+ platform: oracle_cloud
432
+ slug: fa-ertb-saasfaprod1
433
+ source_of_record: discover
434
+ last_verified: &id009 2026-08-16
435
+ oracle_host: fa-ertb-saasfaprod1.fa.ocs.oraclecloud.com
436
+ oracle_site: CX_2
437
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
438
+ verified by a scratch sync — the board answered with 4 posting(s), 3 kept after
439
+ the CS-internship screens'
440
+ - name: Photonic
441
+ platform: custom_json
442
+ slug: photonic
443
+ source_of_record: discover
444
+ last_verified: 2026-08-17
445
+ notes: '2026-08-17: endpoint found by browser-assisted discovery from https://www.photonic.com/careers,
446
+ then replayed over plain HTTP with no browser.'
447
+ custom:
448
+ url: https://photonic.pinpointhq.com/postings.json
449
+ jobs_path: data
450
+ fields:
451
+ title: title
452
+ id: id
453
+ location: location
454
+ description: description
455
+ url: url
456
+ category: job.department
457
+ employment_type: employment_type
458
+ - name: Picton Mahoney Asset Management
459
+ platform: bamboohr
460
+ slug: pictonmahoney
461
+ source_of_record: discover
462
+ last_verified: *id001
463
+ name_gate_exempt: true
464
+ notes: '2026-08-14: board token taken from this employer''s own application URL
465
+ in a feed posting, not from slug guessing; bamboohr publishes no board name, so
466
+ the name gate cannot confirm it and provenance is the evidence (32 job(s))'
467
+ - name: Pika
468
+ platform: ashby
469
+ slug: pika
470
+ source_of_record: discover
471
+ last_verified: *id006
472
+ name_gate_exempt: true
473
+ notes: '2026-08-16: token from this employer''s own apply URL, not slug guessing;
474
+ ashby publishes no board name, so provenance is the evidence (10 job(s))'
475
+ - name: PIMCO
476
+ platform: workday
477
+ slug: pimco
478
+ source_of_record: discover
479
+ last_verified: &id008 2026-08-17
480
+ workday_tenant: pimco
481
+ workday_site: pimco-careers
482
+ workday_dc: wd1
483
+ notes: '2026-08-17: found by a plain-HTTP scan of the employer''s own careers page
484
+ for a known ATS hostname, no browser and one request per host.'
485
+ - name: Pine Rest
486
+ platform: workday
487
+ slug: pinerest
488
+ source_of_record: discover
489
+ last_verified: 2026-08-16
490
+ workday_tenant: pinerest
491
+ workday_site: PineRest
492
+ workday_dc: wd5
493
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
494
+ verified by a scratch sync (3 posting(s), 0 kept)'
495
+ - name: Pinterest
496
+ platform: greenhouse
497
+ slug: pinterest
498
+ source_of_record: openjobs
499
+ last_verified: *id002
500
+ - name: Plaid
501
+ platform: ashby
502
+ slug: plaid
503
+ source_of_record: openjobs
504
+ last_verified: 2026-08-16
505
+ name_gate_exempt: true
506
+ notes: '2026-08-16: ats_link recorded in the OpenJobs dataset and the board answered
507
+ with postings, but this platform publishes no board name, so provenance is the
508
+ evidence rather than a name match.'
509
+ - name: Planet Labs
510
+ platform: greenhouse
511
+ slug: planetlabs
512
+ source_of_record: discover
513
+ last_verified: 2026-08-20
514
+ notes: '2026-08-20: owner-supplied careers URL; the greenhouse board names itself
515
+ Planet.'
516
+ - name: PlanetScale
517
+ platform: greenhouse
518
+ slug: planetscale
519
+ source_of_record: discover
520
+ last_verified: 2026-08-21
521
+ notes: '2026-08-21: official careers page links directly to PlanetScale Greenhouse
522
+ postings.'
523
+ - name: PlayStation Global
524
+ platform: greenhouse
525
+ slug: sonyinteractiveentertainmentglobal
526
+ source_of_record: openjobs
527
+ last_verified: *id002
528
+ notes: '2026-08-21: this board names itself PlayStation Global and shares no requisition
529
+ id with the siei board, so the two are separate boards rather than one duplicated
530
+ caption'
531
+ - name: Plexus
532
+ platform: workday
533
+ slug: plexus
534
+ source_of_record: discover
535
+ last_verified: *id003
536
+ workday_tenant: plexus
537
+ workday_site: plexus_careers
538
+ workday_dc: wd504
539
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
540
+ is the only verification a Workday tenant can have without an offline probe'
541
+ - name: Plug power
542
+ platform: workday
543
+ slug: plugpower
544
+ source_of_record: openjobs
545
+ last_verified: *id003
546
+ recheck_after: *id005
547
+ workday_tenant: plugpower
548
+ workday_site: Plug_Power_Inc
549
+ workday_dc: wd5
550
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
551
+ is the only verification a Workday tenant can have without an offline probe'
552
+ - name: Pluralis Research
553
+ platform: ashby
554
+ slug: pluralis-research
555
+ source_of_record: discover
556
+ last_verified: *id001
557
+ name_gate_exempt: true
558
+ notes: '2026-08-14: board token taken from this employer''s own application URL
559
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
560
+ name gate cannot confirm it and provenance is the evidence (11 job(s))'
561
+ - name: Pluralsight
562
+ platform: workday
563
+ slug: pluralsight
564
+ source_of_record: openjobs
565
+ last_verified: *id003
566
+ recheck_after: *id005
567
+ workday_tenant: pluralsight
568
+ workday_site: Careers
569
+ workday_dc: wd1
570
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
571
+ is the only verification a Workday tenant can have without an offline probe'
572
+ - name: Plus
573
+ platform: lever
574
+ slug: plus-2
575
+ source_of_record: discover
576
+ last_verified: *id001
577
+ name_gate_exempt: true
578
+ notes: '2026-08-14: board token taken from this employer''s own application URL
579
+ in a feed posting, not from slug guessing; lever publishes no board name, so the
580
+ name gate cannot confirm it and provenance is the evidence (37 job(s))'
581
+ - name: Plusgrade
582
+ platform: workday
583
+ slug: plusgrade
584
+ source_of_record: discover
585
+ last_verified: &id007 2026-08-18
586
+ workday_tenant: plusgrade
587
+ workday_site: Plusgrade_External_Site
588
+ workday_dc: wd10
589
+ notes: '2026-08-18: found by a plain-HTTP scan of the employer''s own careers page
590
+ for a known ATS hostname, part of the Montreal/Quebec sweep.'
591
+ - name: Pluxee
592
+ platform: workday
593
+ slug: pluxee
594
+ source_of_record: discover
595
+ last_verified: *id003
596
+ workday_tenant: pluxee
597
+ workday_site: pluxee_career_site
598
+ workday_dc: wd3
599
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
600
+ is the only verification a Workday tenant can have without an offline probe'
601
+ - name: PNC Financial Services
602
+ platform: workday
603
+ slug: pnc
604
+ source_of_record: discover
605
+ last_verified: *id003
606
+ workday_tenant: pnc
607
+ workday_site: External
608
+ workday_dc: wd5
609
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
610
+ is the only verification a Workday tenant can have without an offline probe'
611
+ - name: Point C
612
+ platform: greenhouse
613
+ slug: pointc
614
+ source_of_record: discover
615
+ last_verified: *id002
616
+ - name: Point72
617
+ platform: greenhouse
618
+ slug: point72
619
+ source_of_record: discover
620
+ last_verified: *id002
621
+ - name: Poka
622
+ platform: greenhouse
623
+ slug: poka
624
+ source_of_record: discover
625
+ last_verified: *id007
626
+ notes: '2026-08-18: found by a plain-HTTP scan of the employer''s own careers page
627
+ for a known ATS hostname, part of the Montreal/Quebec sweep.'
628
+ - name: pony.ai
629
+ platform: workable
630
+ slug: pony-dot-ai
631
+ source_of_record: discover
632
+ last_verified: 2026-08-17
633
+ notes: '2026-08-14: paused after two 429s in one day, the second after 7 requests;
634
+ paused_until resumed it.'
635
+ - name: PopReach
636
+ platform: bamboohr
637
+ slug: popreach
638
+ source_of_record: openjobs
639
+ enabled: false
640
+ notes: '2026-08-08: bamboohr publishes no board name, so a 200 with jobs is not
641
+ evidence of the right company; needs a human to open the board once'
642
+ - name: Porter Airlines
643
+ platform: lever
644
+ slug: porter
645
+ source_of_record: openjobs
646
+ last_verified: 2026-08-16
647
+ name_gate_exempt: true
648
+ notes: '2026-08-16: ats_link recorded in the OpenJobs dataset and the board answered
649
+ with postings, but this platform publishes no board name, so provenance is the
650
+ evidence rather than a name match.'
651
+ - name: Poshmark
652
+ platform: ashby
653
+ slug: poshmark
654
+ source_of_record: discover
655
+ last_verified: *id001
656
+ name_gate_exempt: true
657
+ notes: '2026-08-14: board token taken from this employer''s own application URL
658
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
659
+ name gate cannot confirm it and provenance is the evidence (28 job(s))'
660
+ - name: Postman
661
+ platform: greenhouse
662
+ slug: postman
663
+ source_of_record: openjobs
664
+ last_verified: *id002
665
+ - name: Potloc
666
+ platform: lever
667
+ slug: Potloc
668
+ source_of_record: discover
669
+ last_verified: 2026-08-20
670
+ notes: '2026-08-20: careers-page ATS scan found the lever board; the token is capitalised
671
+ and lever is case-sensitive, so the lowercase form answers 404.'
672
+ - name: Pratt & Whitney Canada
673
+ platform: workday
674
+ slug: globalhr
675
+ source_of_record: discover
676
+ last_verified: 2026-08-08
677
+ workday_tenant: globalhr
678
+ workday_site: REC_RTX_Ext_Gateway
679
+ workday_dc: wd5
680
+ name_gate_exempt: true
681
+ - name: Prior Labs
682
+ platform: ashby
683
+ slug: prior-labs
684
+ source_of_record: discover
685
+ last_verified: *id006
686
+ name_gate_exempt: true
687
+ notes: '2026-08-16: token from this employer''s own apply URL, not slug guessing;
688
+ ashby publishes no board name, so provenance is the evidence (16 job(s))'
689
+ - name: ProCogia
690
+ platform: greenhouse
691
+ slug: procogia
692
+ source_of_record: discover
693
+ last_verified: *id002
694
+ - name: Promutuel
695
+ platform: workday
696
+ slug: promutuel
697
+ source_of_record: discover
698
+ last_verified: 2026-08-20
699
+ workday_tenant: promutuel
700
+ workday_site: promutuel_carrieres
701
+ workday_dc: wd3
702
+ notes: Coordinates from the employer's own careers URL; 99 postings, entirely French
703
+ and Quebec-based.
704
+ - name: ProNexus
705
+ platform: workable
706
+ slug: pronexus-1
707
+ source_of_record: discover
708
+ last_verified: 2026-08-17
709
+ notes: '2026-08-14: paused after two 429s in one day, the second after 7 requests;
710
+ paused_until resumed it.'
711
+ - name: Proofpoint
712
+ platform: workday
713
+ slug: proofpoint
714
+ source_of_record: discover
715
+ last_verified: *id008
716
+ workday_tenant: proofpoint
717
+ workday_site: proofpointcareers
718
+ workday_dc: wd5
719
+ notes: '2026-08-17: found by a plain-HTTP scan of the employer''s own careers page
720
+ for a known ATS hostname, no browser and one request per host.'
721
+ - name: Protech Automotive Solutions
722
+ platform: workday
723
+ slug: calibercollision
724
+ source_of_record: discover
725
+ last_verified: 2026-08-16
726
+ workday_tenant: calibercollision
727
+ workday_site: protech
728
+ workday_dc: wd1
729
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
730
+ verified by a scratch sync (117 posting(s), 0 kept)'
731
+ - name: Prudential Financial
732
+ platform: workday
733
+ slug: pru
734
+ source_of_record: discover
735
+ last_verified: 2026-08-16
736
+ workday_tenant: pru
737
+ workday_site: Careers
738
+ workday_dc: wd5
739
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
740
+ verified by a scratch sync (120 posting(s), 0 kept)'
741
+ - name: Prysmian Group
742
+ platform: workday
743
+ slug: prysmiangroup
744
+ source_of_record: discover
745
+ last_verified: *id003
746
+ workday_tenant: prysmiangroup
747
+ workday_site: careers
748
+ workday_dc: wd3
749
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
750
+ is the only verification a Workday tenant can have without an offline probe'
751
+ - name: PsiQuantum
752
+ platform: greenhouse
753
+ slug: psiquantum
754
+ source_of_record: discover
755
+ last_verified: *id002
756
+ - name: PSP Investments
757
+ platform: workday
758
+ slug: investpsp
759
+ source_of_record: discover
760
+ last_verified: *id009
761
+ workday_tenant: investpsp
762
+ workday_site: psp_careers
763
+ workday_dc: wd3
764
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
765
+ verified by a scratch sync — the board answered with 1 posting(s), 1 kept after
766
+ the CS-internship screens'
767
+ - name: PTC
768
+ platform: workday
769
+ slug: ptc
770
+ source_of_record: discover
771
+ last_verified: 2026-08-20
772
+ workday_tenant: ptc
773
+ workday_site: PTC
774
+ workday_dc: wd1
775
+ notes: '2026-08-20: coordinates read from the owner-supplied careers URL, not guessed.'
776
+ - name: Publicis Groupe
777
+ platform: smartrecruiters
778
+ slug: publicisgroupe
779
+ source_of_record: openjobs
780
+ enabled: false
781
+ notes: '2026-08-08: probed — board answers 200 with zero postings, which §5.3 treats
782
+ as a token that does not exist; re-check if the employer relaunches Re-probed
783
+ 2026-08-14 and still dead.'
784
+ - name: Publicis Sapient
785
+ platform: custom_json
786
+ slug: publicissapient
787
+ source_of_record: discover
788
+ last_verified: 2026-08-20
789
+ notes: Its /api/jobs answers 403, but /job-details-sitemap server-renders all 388
790
+ postings; titles come from the url slug and so carry a year and id prefix.
791
+ custom:
792
+ url: https://careers.publicissapient.com/job-details-sitemap
793
+ format: html
794
+ row_selector: .careersJobsSitemap a[href*="job-details/"]
795
+ fields:
796
+ title: ::slug(href)
797
+ id: ::attr(href)
798
+ url: ::attr(href)
799
+ - name: Puzzle Cats
800
+ platform: breezy
801
+ slug: puzzle-cats
802
+ source_of_record: openjobs
803
+ last_verified: 2026-08-11
804
+ notes: '2026-08-11: enabled on slug evidence - breezy publishes no board name, but
805
+ the slug folds to the caption and the board returned 1 job(s)'
806
+ - name: PwC
807
+ platform: workday
808
+ slug: pwc
809
+ source_of_record: openjobs
810
+ last_verified: *id003
811
+ recheck_after: *id005
812
+ workday_tenant: pwc
813
+ workday_site: Global_Experienced_Careers
814
+ workday_dc: wd3
815
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
816
+ is the only verification a Workday tenant can have without an offline probe'
817
+ - name: Pylon
818
+ platform: ashby
819
+ slug: pylon-labs
820
+ source_of_record: discover
821
+ last_verified: *id001
822
+ name_gate_exempt: true
823
+ notes: '2026-08-14: board token taken from this employer''s own application URL
824
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
825
+ name gate cannot confirm it and provenance is the evidence (21 job(s))'