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,121 @@
1
+ - name: Q5
2
+ platform: workable
3
+ slug: q5-partners
4
+ source_of_record: discover
5
+ last_verified: 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: Qorvo
10
+ platform: custom_json
11
+ slug: qorvo
12
+ source_of_record: discover
13
+ last_verified: 2026-08-20
14
+ notes: '2026-08-20: SuccessFactors RMK; /rss.xml carries all 131 postings in 1.4MB.'
15
+ custom:
16
+ url: https://careers.qorvo.com/rss.xml
17
+ format: rss
18
+ fields:
19
+ title: title
20
+ id: g:id
21
+ url: link
22
+ location: g:location
23
+ description: description
24
+ category: g:job_function
25
+ - name: QS Quacquarelli Symonds
26
+ platform: bamboohr
27
+ slug: qs
28
+ source_of_record: openjobs
29
+ enabled: false
30
+ notes: '2026-08-08: bamboohr publishes no board name, so a 200 with jobs is not
31
+ evidence of the right company; needs a human to open the board once'
32
+ - name: Quadric
33
+ platform: workable
34
+ slug: quadric-dot-i-o-inc
35
+ source_of_record: discover
36
+ last_verified: 2026-08-17
37
+ notes: '2026-08-14: paused after two 429s in one day, the second after 7 requests;
38
+ paused_until resumed it.'
39
+ - name: Quadrillion
40
+ platform: ashby
41
+ slug: quadrillion-labs
42
+ source_of_record: discover
43
+ last_verified: 2026-08-14
44
+ name_gate_exempt: true
45
+ notes: '2026-08-14: board token taken from this employer''s own application URL
46
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
47
+ name gate cannot confirm it and provenance is the evidence (6 job(s))'
48
+ - name: Qualcomm
49
+ platform: custom_json
50
+ slug: qualcomm
51
+ source_of_record: discover
52
+ last_verified: 2026-08-16
53
+ notes: '2026-08-16: eightfold /api/pcsx/search?domain= — the endpoint template carries
54
+ across tenants, the filter names do not.'
55
+ custom:
56
+ url: https://careers.qualcomm.com/api/pcsx/search?domain=qualcomm.com&query=&location=&start=0&sort_by=relevance&filter_seniority=Intern
57
+ jobs_path: data.positions
58
+ fields:
59
+ title: name
60
+ id: id
61
+ location: standardizedLocations
62
+ department: department
63
+ url_template: https://careers.qualcomm.com/careers/job/{id}
64
+ page_param: start
65
+ page_size: 10
66
+ max_pages: 20
67
+ - name: Qualys
68
+ platform: workday
69
+ slug: qualys
70
+ source_of_record: discover
71
+ last_verified: 2026-08-21
72
+ workday_tenant: qualys
73
+ workday_site: Careers
74
+ workday_dc: wd5
75
+ notes: '2026-08-21: supplied URL exposes the Workday tenant, site, and data center;
76
+ endpoint returned live postings.'
77
+ - name: Quantbot Technologies
78
+ platform: greenhouse
79
+ slug: quantbot-technologies
80
+ source_of_record: discover
81
+ last_verified: &id001 2026-08-14
82
+ - name: Quantic Dream
83
+ platform: lever
84
+ slug: quanticdream
85
+ source_of_record: openjobs
86
+ enabled: false
87
+ notes: '2026-08-08: lever publishes no board name, so a 200 with jobs is not evidence
88
+ of the right company; needs a human to open the board once'
89
+ - name: Quantlab
90
+ platform: jobvite
91
+ slug: quantlab
92
+ source_of_record: discover
93
+ last_verified: 2026-08-20
94
+ enabled: false
95
+ notes: '2026-08-21: re-checked on the server-rendered board as well; the tenant
96
+ answers 403, so the board is closed to our client'
97
+ - name: Qube Research and Technologies
98
+ platform: greenhouse
99
+ slug: quberesearchandtechnologies
100
+ source_of_record: discover
101
+ last_verified: 2026-08-20
102
+ notes: '2026-08-20: owner-supplied careers URL; the board names itself Qube Research
103
+ & Technologies.'
104
+ - name: QuEra Computing
105
+ platform: greenhouse
106
+ slug: queracomputinginc
107
+ source_of_record: discover
108
+ last_verified: *id001
109
+ - name: Quince
110
+ platform: greenhouse
111
+ slug: quince
112
+ source_of_record: openjobs
113
+ last_verified: 2026-08-11
114
+ name_gate_exempt: true
115
+ - name: Quora
116
+ platform: ashby
117
+ slug: quora
118
+ source_of_record: openjobs
119
+ last_verified: 2026-08-11
120
+ notes: '2026-08-11: enabled on slug evidence - ashby publishes no board name, but
121
+ the slug folds to the caption and the board returned 5 job(s)'
@@ -0,0 +1,583 @@
1
+ - name: Rackspace Technology
2
+ platform: lever
3
+ slug: rackspace
4
+ source_of_record: openjobs
5
+ enabled: false
6
+ notes: '2026-08-08: lever publishes no board name, so a 200 with jobs is not evidence
7
+ of the right company; needs a human to open the board once'
8
+ - name: Radix Trading
9
+ platform: greenhouse
10
+ slug: radixuniversity
11
+ source_of_record: discover
12
+ last_verified: &id003 2026-08-14
13
+ - name: Rainmaker
14
+ platform: lever
15
+ slug: make-rain
16
+ source_of_record: discover
17
+ last_verified: &id006 2026-08-14
18
+ name_gate_exempt: true
19
+ notes: '2026-08-14: board token taken from this employer''s own application URL
20
+ in a feed posting, not from slug guessing; lever publishes no board name, so the
21
+ name gate cannot confirm it and provenance is the evidence (32 job(s))'
22
+ - name: Rakuten Kobo
23
+ platform: workday
24
+ slug: rakuten
25
+ source_of_record: discover
26
+ last_verified: &id001 2026-08-14
27
+ workday_tenant: rakuten
28
+ workday_site: kobo
29
+ workday_dc: wd1
30
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
31
+ is the only verification a Workday tenant can have without an offline probe'
32
+ - name: Ramp
33
+ platform: ashby
34
+ slug: ramp
35
+ source_of_record: openjobs
36
+ last_verified: &id002 2026-08-11
37
+ notes: '2026-08-11: enabled on slug evidence - ashby publishes no board name, but
38
+ the slug folds to the caption and the board returned 128 job(s)'
39
+ - name: RAPP
40
+ platform: greenhouse
41
+ slug: rapp
42
+ source_of_record: openjobs
43
+ last_verified: &id005 2026-08-11
44
+ - name: Razer
45
+ platform: workday
46
+ slug: razer
47
+ source_of_record: discover
48
+ last_verified: *id001
49
+ workday_tenant: razer
50
+ workday_site: careers
51
+ workday_dc: wd3
52
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
53
+ is the only verification a Workday tenant can have without an offline probe'
54
+ - name: RBC (early talent)
55
+ platform: workday
56
+ slug: rbc
57
+ source_of_record: discover
58
+ last_verified: 2026-08-11
59
+ recheck_after: &id009 2026-10-01
60
+ workday_tenant: rbc
61
+ workday_site: RBCEARLYTALENT1
62
+ workday_dc: wd3
63
+ notes: '2026-08-12: enabled for the bounded resumable Workday crawl. It receives
64
+ at most five listing requests per daily sync and retains progress; re-measure
65
+ yield in October'
66
+ - name: Readystate Asset Management
67
+ platform: greenhouse
68
+ slug: readystate
69
+ source_of_record: discover
70
+ last_verified: &id004 2026-08-18
71
+ notes: '2026-08-18: seen in feed postings but absent from the registry; discover
72
+ matched greenhouse/readystate with 1 job(s) and the board named itself, so it
73
+ is polled directly instead of secondhand'
74
+ - name: Recursion
75
+ platform: greenhouse
76
+ slug: recursionpharmaceuticals
77
+ source_of_record: discover
78
+ last_verified: 2026-08-20
79
+ notes: '2026-08-20: owner-supplied careers URL; the greenhouse embed names this
80
+ token and the board names itself Recursion.'
81
+ - name: Red Barrels
82
+ platform: bamboohr
83
+ slug: redbarrels
84
+ source_of_record: openjobs
85
+ last_verified: *id002
86
+ notes: '2026-08-11: enabled on slug evidence - bamboohr publishes no board name,
87
+ but the slug folds to the caption and the board returned 1 job(s)'
88
+ - name: Red Bull
89
+ platform: smartrecruiters
90
+ slug: redbull
91
+ source_of_record: discover
92
+ last_verified: &id007 2026-08-14
93
+ - name: Red Hat
94
+ platform: workday
95
+ slug: redhat
96
+ source_of_record: discover
97
+ last_verified: 2026-08-21
98
+ workday_tenant: redhat
99
+ workday_site: jobs
100
+ workday_dc: wd5
101
+ notes: '2026-08-21: supplied URL exposes the Workday tenant, site, and data center;
102
+ endpoint returned live postings.'
103
+ - name: Reddit
104
+ platform: greenhouse
105
+ slug: reddit
106
+ source_of_record: openjobs
107
+ last_verified: *id003
108
+ - name: Redis
109
+ platform: ashby
110
+ slug: redis
111
+ source_of_record: discover
112
+ last_verified: 2026-08-21
113
+ notes: '2026-08-21: the public Ashby board is named Redis and returned live postings.'
114
+ - name: Redwood Materials
115
+ platform: greenhouse
116
+ slug: redwoodmaterials
117
+ source_of_record: discover
118
+ last_verified: *id003
119
+ - name: Reflector Entertainment
120
+ platform: custom_json
121
+ slug: dayforce-ref
122
+ source_of_record: discover
123
+ last_verified: 2026-08-18
124
+ rate_profile: conservative
125
+ notes: 'Dayforce, reached by sending the /api/auth/csrf token as x-csrf-token. 2026-08-21:
126
+ two boards on this host answered 403 in one run, so the row is pinned conservative.'
127
+ custom:
128
+ url: https://jobs.dayforcehcm.com/api/geo/ref/jobposting/search
129
+ method: POST
130
+ body:
131
+ clientNamespace: ref
132
+ jobBoardCode: CANDIDATEPORTAL
133
+ cultureCode: en-CA
134
+ distanceUnit: 1
135
+ handshake_url: https://jobs.dayforcehcm.com/api/auth/csrf
136
+ token_pattern: '"csrfToken":"([a-f0-9]+)"'
137
+ token_header: x-csrf-token
138
+ jobs_path: jobPostings
139
+ fields:
140
+ title: jobTitle
141
+ id: jobPostingId
142
+ description: jobDescription
143
+ location: postingLocations.0.formattedAddress
144
+ url_template: https://jobs.dayforcehcm.com/en-CA/ref/CANDIDATEPORTAL/jobs/{id}
145
+ page_param: paginationStart
146
+ page_size: 25
147
+ page_step: 25
148
+ max_pages: 20
149
+ - name: reflector entertainment
150
+ platform: recruitee
151
+ slug: reflectorentertainment
152
+ source_of_record: openjobs
153
+ enabled: false
154
+ notes: '2026-08-08: recruitee publishes no board name, so a 200 with jobs is not
155
+ evidence of the right company; needs a human to open the board once'
156
+ - name: RegDesk
157
+ platform: smartrecruiters
158
+ slug: regdeskinc
159
+ source_of_record: discover
160
+ last_verified: *id004
161
+ notes: '2026-08-18: seen in feed postings but absent from the registry; discover
162
+ matched smartrecruiters/regdeskinc with 2 job(s) and the board named itself, so
163
+ it is polled directly instead of secondhand'
164
+ - name: Reitmans
165
+ platform: smartrecruiters
166
+ slug: reitmanscanadalteltd
167
+ source_of_record: discover
168
+ last_verified: 2026-08-17
169
+ notes: '2026-08-17: found by a plain-HTTP scan of the employer''s own careers page
170
+ for a known ATS hostname, no browser and one request per host.'
171
+ - name: Relativity Space
172
+ platform: greenhouse
173
+ slug: relativity
174
+ source_of_record: discover
175
+ last_verified: 2026-08-20
176
+ notes: '2026-08-20: reached from the owner''s RippleMatch link; the greenhouse board
177
+ names itself Relativity Space.'
178
+ - name: relic entertainment
179
+ platform: bamboohr
180
+ slug: relicentertainment
181
+ source_of_record: openjobs
182
+ last_verified: *id002
183
+ notes: '2026-08-11: enabled on slug evidence - bamboohr publishes no board name,
184
+ but the slug folds to the caption and the board returned 1 job(s)'
185
+ - name: Reltio
186
+ platform: greenhouse
187
+ slug: reltio
188
+ source_of_record: openjobs
189
+ last_verified: *id005
190
+ - name: Remote
191
+ platform: greenhouse
192
+ slug: remotecom
193
+ source_of_record: openjobs
194
+ last_verified: *id005
195
+ - name: Renaissance Technologies
196
+ platform: custom_json
197
+ slug: rentec
198
+ source_of_record: discover
199
+ last_verified: 2026-08-21
200
+ notes: '2026-08-21: server-rendered board of 12 roles; the id sits in a selectedPosition
201
+ query param rather than a path segment, so identity comes from the url'
202
+ custom:
203
+ url: https://www.rentec.com/Careers.action?jobs=true
204
+ format: html
205
+ row_selector: div.flex-auto:not(.flex)
206
+ fields:
207
+ title: a
208
+ url: a::attr(href)
209
+ - name: Renault
210
+ platform: workday
211
+ slug: alliancewd
212
+ source_of_record: discover
213
+ last_verified: 2026-08-16
214
+ workday_tenant: alliancewd
215
+ workday_site: renault-group-careers
216
+ workday_dc: wd3
217
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
218
+ verified by a scratch sync (17 posting(s), 0 kept)'
219
+ - name: Rendezvous Robotics
220
+ platform: greenhouse
221
+ slug: rendezvousrobotics
222
+ source_of_record: discover
223
+ last_verified: *id003
224
+ - name: Renesas
225
+ platform: smartrecruiters
226
+ slug: renesaselectronics
227
+ source_of_record: openjobs
228
+ last_verified: 2026-08-16
229
+ notes: '2026-08-16: ats_link recorded in the OpenJobs dataset, then verified by
230
+ a live probe that matched the company name on the returned board'
231
+ - name: Reonic
232
+ platform: ashby
233
+ slug: reonic
234
+ source_of_record: discover
235
+ last_verified: *id006
236
+ name_gate_exempt: true
237
+ notes: '2026-08-14: board token taken from this employer''s own application URL
238
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
239
+ name gate cannot confirm it and provenance is the evidence (32 job(s))'
240
+ - name: Replit
241
+ platform: ashby
242
+ slug: replit
243
+ source_of_record: discover
244
+ last_verified: *id004
245
+ name_gate_exempt: true
246
+ notes: '2026-08-18: token from this employer''s own apply URL, not slug guessing;
247
+ ashby publishes no board name, so provenance is the evidence (78 job(s))'
248
+ - name: Reply
249
+ platform: lever
250
+ slug: reply
251
+ source_of_record: discover
252
+ last_verified: *id006
253
+ name_gate_exempt: true
254
+ notes: '2026-08-14: board token taken from this employer''s own application URL
255
+ in a feed posting, not from slug guessing; lever publishes no board name, so the
256
+ name gate cannot confirm it and provenance is the evidence (40 job(s))'
257
+ - name: Resolver
258
+ platform: jobvite
259
+ slug: resolver
260
+ source_of_record: openjobs
261
+ last_verified: 2026-08-21
262
+ notes: '2026-08-21: the Jobvite API answers 401, but jobs.jobvite.com/resolver/jobs
263
+ server-renders all 12 postings, which is the contract this row polls'
264
+ - name: RESPEC
265
+ platform: smartrecruiters
266
+ slug: respecinc
267
+ source_of_record: discover
268
+ last_verified: *id007
269
+ - name: ResponsiveAds
270
+ platform: workable
271
+ slug: responsiveads-inc
272
+ source_of_record: discover
273
+ last_verified: 2026-08-17
274
+ notes: '2026-08-14: paused after two 429s in one day, the second after 7 requests;
275
+ paused_until resumed it.'
276
+ - name: Retool
277
+ platform: custom_json
278
+ slug: retool
279
+ source_of_record: discover
280
+ last_verified: 2026-08-21
281
+ notes: '2026-08-21: the official Gem board used by Retool exposes a public GraphQL
282
+ listing query; the existing POST adapter returned 34 postings with direct job
283
+ URLs.'
284
+ custom:
285
+ url: https://jobs.gem.com/api/public/graphql
286
+ method: POST
287
+ body:
288
+ query: "query JobBoardList($boardId: String!) {\n oatsExternalJobPostings(boardId:\
289
+ \ $boardId) {\n jobPostings {\n id\n extId\n title\n \
290
+ \ locations {\n id\n name\n city\n isoCountry\n\
291
+ \ isRemote\n extId\n }\n job {\n id\n \
292
+ \ department {\n id\n name\n extId\n }\n\
293
+ \ locationType\n employmentType\n }\n }\n }\n}\n"
294
+ variables:
295
+ boardId: retool
296
+ headers:
297
+ Origin: https://jobs.gem.com
298
+ Referer: https://jobs.gem.com/retool
299
+ jobs_path: data.oatsExternalJobPostings.jobPostings
300
+ fields:
301
+ title: title
302
+ id: extId
303
+ location: locations.0.name
304
+ department: job.department.name
305
+ employment_type: job.employmentType
306
+ url_template: https://jobs.gem.com/retool/{id}
307
+ - name: ReversingLabs
308
+ platform: workable
309
+ slug: reversinglabs
310
+ source_of_record: discover
311
+ last_verified: 2026-08-17
312
+ notes: '2026-08-14: paused after two 429s in one day, the second after 7 requests;
313
+ paused_until resumed it.'
314
+ - name: Revise Robotics
315
+ platform: ashby
316
+ slug: reviserobotics
317
+ source_of_record: discover
318
+ last_verified: *id006
319
+ name_gate_exempt: true
320
+ notes: '2026-08-14: board token taken from this employer''s own application URL
321
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
322
+ name gate cannot confirm it and provenance is the evidence (2 job(s))'
323
+ - name: Revvity
324
+ platform: workday
325
+ slug: revvity
326
+ source_of_record: discover
327
+ last_verified: &id008 2026-08-16
328
+ workday_tenant: revvity
329
+ workday_site: External
330
+ workday_dc: wd103
331
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
332
+ verified by a scratch sync — the board answered with 8 posting(s), 2 kept after
333
+ the CS-internship screens'
334
+ - name: RFCUNY
335
+ platform: workday
336
+ slug: rfcuny
337
+ source_of_record: discover
338
+ last_verified: *id008
339
+ workday_tenant: rfcuny
340
+ workday_site: RFCUNY
341
+ workday_dc: wd108
342
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
343
+ verified by a scratch sync — the board answered with 120 posting(s), 1 kept after
344
+ the CS-internship screens'
345
+ - name: Rho
346
+ platform: ashby
347
+ slug: rho
348
+ source_of_record: discover
349
+ last_verified: *id006
350
+ name_gate_exempt: true
351
+ notes: '2026-08-14: board token taken from this employer''s own application URL
352
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
353
+ name gate cannot confirm it and provenance is the evidence (43 job(s))'
354
+ - name: Riot Games
355
+ platform: greenhouse
356
+ slug: riotgames
357
+ source_of_record: discover
358
+ last_verified: 2026-08-20
359
+ notes: Its student-internships page refuses our client, but the native greenhouse
360
+ board answers with 161 postings.
361
+ - name: Ripple
362
+ platform: greenhouse
363
+ slug: ripple
364
+ source_of_record: discover
365
+ last_verified: 2026-08-21
366
+ notes: '2026-08-21: official careers page exposes the live Ripple Greenhouse board.'
367
+ - name: Rippling
368
+ platform: custom_json
369
+ slug: rippling
370
+ source_of_record: discover
371
+ last_verified: &id010 2026-08-17
372
+ notes: '2026-08-17: found from the ats.rippling.com apply URL carried by Rippling''s
373
+ own feed postings.'
374
+ custom:
375
+ url: https://api.rippling.com/platform/api/ats/v1/board/rippling/jobs
376
+ fields:
377
+ title: name
378
+ id: uuid
379
+ location: workLocation.label
380
+ url: url
381
+ category: department.label
382
+ - name: Riveron
383
+ platform: ashby
384
+ slug: riveron
385
+ source_of_record: discover
386
+ last_verified: *id004
387
+ name_gate_exempt: true
388
+ notes: '2026-08-18: token from this employer''s own apply URL, not slug guessing;
389
+ ashby publishes no board name, so provenance is the evidence (70 job(s))'
390
+ - name: Rivian
391
+ platform: custom_json
392
+ slug: rivian
393
+ source_of_record: discover
394
+ last_verified: 2026-08-19
395
+ notes: iCIMS career-site (careers-home) JSON API, which is a different contract
396
+ from the icims.com boards that serve only HTML.
397
+ custom:
398
+ url: https://careers.rivian.com/api/jobs?limit=100&internal=false
399
+ jobs_path: jobs
400
+ fields:
401
+ title: data.title
402
+ id: data.req_id
403
+ url: data.apply_url
404
+ location: data.full_location
405
+ description: data.description
406
+ department: data.category
407
+ employment_type: data.employment_type
408
+ page_param: page
409
+ page_size: 100
410
+ page_start: 1
411
+ page_step: 1
412
+ max_pages: 15
413
+ - name: Rivian and Volkswagen Group Technologies
414
+ platform: ashby
415
+ slug: rivianvw.tech
416
+ source_of_record: discover
417
+ last_verified: *id006
418
+ name_gate_exempt: true
419
+ notes: '2026-08-14: board token taken from this employer''s own application URL
420
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
421
+ name gate cannot confirm it and provenance is the evidence (113 job(s))'
422
+ - name: Roam
423
+ platform: ashby
424
+ slug: tryroam
425
+ source_of_record: discover
426
+ last_verified: *id006
427
+ name_gate_exempt: true
428
+ notes: '2026-08-14: board token taken from this employer''s own application URL
429
+ in a feed posting, not from slug guessing; ashby publishes no board name, so the
430
+ name gate cannot confirm it and provenance is the evidence (4 job(s))'
431
+ - name: Robinhood
432
+ platform: greenhouse
433
+ slug: robinhood
434
+ source_of_record: discover
435
+ last_verified: 2026-08-17
436
+ notes: '2026-08-17: browser discovery found a greenhouse API URL, so this is a native
437
+ board rather than custom_json; verified by probe with the company name on the
438
+ returned board'
439
+ - name: Roblox
440
+ platform: greenhouse
441
+ slug: roblox
442
+ source_of_record: discover
443
+ last_verified: *id003
444
+ - name: Roche
445
+ platform: workday
446
+ slug: roche
447
+ source_of_record: manual
448
+ last_verified: 2026-08-13
449
+ workday_tenant: roche
450
+ workday_site: roche-ext
451
+ workday_dc: wd3
452
+ workday_facet: workerSubType:5cbb2c6fdeee0185f1889cdb54348a05
453
+ notes: '2026-08-13: official Workday endpoint verified; its Interns, Apprentices
454
+ and Graduates facet has nine listings.'
455
+ - name: Rocket
456
+ platform: workday
457
+ slug: rocket
458
+ source_of_record: openjobs
459
+ last_verified: *id001
460
+ recheck_after: *id009
461
+ workday_tenant: rocket
462
+ workday_site: rocket_careers
463
+ workday_dc: wd5
464
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
465
+ is the only verification a Workday tenant can have without an offline probe'
466
+ - name: Rocket Lab
467
+ platform: greenhouse
468
+ slug: rocketlab
469
+ source_of_record: discover
470
+ last_verified: 2026-08-19
471
+ notes: Careers page is SilverStripe, but its position slugs carry Greenhouse job
472
+ ids; the board names itself Rocket Lab Corporation.
473
+ - name: Rockstar Games
474
+ platform: greenhouse
475
+ slug: rockstargames
476
+ source_of_record: openjobs
477
+ last_verified: *id005
478
+ - name: Rodeo FX
479
+ platform: smartrecruiters
480
+ slug: rodeofx
481
+ source_of_record: discover
482
+ last_verified: 2026-08-21
483
+ - name: Rogers
484
+ platform: custom_json
485
+ slug: rogers
486
+ source_of_record: discover
487
+ last_verified: 2026-08-20
488
+ notes: SuccessFactors RMK; /rss.xml carries the whole 166-posting board, which is
489
+ retail and field roles today.
490
+ custom:
491
+ url: https://jobs.rogers.com/rss.xml
492
+ format: rss
493
+ fields:
494
+ title: title
495
+ id: g:id
496
+ url: link
497
+ location: g:location
498
+ description: description
499
+ category: g:job_function
500
+ - name: Rolls-Royce
501
+ platform: workday
502
+ slug: rollsroyce
503
+ source_of_record: openjobs
504
+ last_verified: *id001
505
+ recheck_after: *id009
506
+ workday_tenant: rollsroyce
507
+ workday_site: professional
508
+ workday_dc: wd3
509
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
510
+ is the only verification a Workday tenant can have without an offline probe'
511
+ - name: Rovio
512
+ platform: lever
513
+ slug: rovio-2
514
+ source_of_record: openjobs
515
+ last_verified: 2026-08-04
516
+ - name: Royal Bank of Canada
517
+ platform: workday
518
+ slug: rbc
519
+ source_of_record: manual
520
+ last_verified: 2026-08-13
521
+ workday_tenant: rbc
522
+ workday_site: rbcglobal1
523
+ workday_dc: wd3
524
+ workday_facet: workerSubType:7911130ac48001184e788bd8f87d0001
525
+ notes: '2026-08-13: official general Workday endpoint verified; its Student/Coop
526
+ fixed-term facet is separate from the existing early-talent site.'
527
+ - name: RRS Group
528
+ platform: smartrecruiters
529
+ slug: rrsgroup
530
+ source_of_record: discover
531
+ last_verified: *id007
532
+ - name: RSM
533
+ platform: workday
534
+ slug: rsm
535
+ source_of_record: discover
536
+ last_verified: *id008
537
+ workday_tenant: rsm
538
+ workday_site: rsmcareers
539
+ workday_dc: wd1
540
+ notes: '2026-08-16: coordinates taken from this employer''s own apply URL, then
541
+ verified by a scratch sync — the board answered with 2 posting(s), 1 kept after
542
+ the CS-internship screens'
543
+ - name: RTX
544
+ platform: workday
545
+ slug: globalhr
546
+ source_of_record: discover
547
+ last_verified: *id010
548
+ workday_tenant: globalhr
549
+ workday_site: Private_Posting_No_TMP
550
+ workday_dc: wd5
551
+ name_gate_exempt: true
552
+ notes: 'Found in a feed apply URL: globalhr.wd5 carries 269 postings, and the tenant
553
+ is shared with Pratt & Whitney.'
554
+ - name: Rubrik
555
+ platform: greenhouse
556
+ slug: rubrik
557
+ source_of_record: discover
558
+ last_verified: 2026-08-21
559
+ - name: Runway
560
+ platform: ashby
561
+ slug: runway
562
+ source_of_record: openjobs
563
+ last_verified: 2026-08-16
564
+ name_gate_exempt: true
565
+ notes: '2026-08-16: ats_link recorded in the OpenJobs dataset and the board answered
566
+ with postings, but this platform publishes no board name, so provenance is the
567
+ evidence rather than a name match.'
568
+ - name: Ruselle Investments
569
+ platform: workday
570
+ slug: russell
571
+ source_of_record: openjobs
572
+ last_verified: *id001
573
+ recheck_after: *id009
574
+ workday_tenant: russell
575
+ workday_site: russellinvestments
576
+ workday_dc: wd5
577
+ notes: '2026-08-14: verified by a real sync — this board returned postings, which
578
+ is the only verification a Workday tenant can have without an offline probe'
579
+ - name: Rush street interactive
580
+ platform: greenhouse
581
+ slug: rushstreetinteractive
582
+ source_of_record: openjobs
583
+ last_verified: *id005