terminalhire 0.2.2 → 0.2.4
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.
- package/dist/bin/jpi-dispatch.js +254 -53
- package/dist/bin/jpi-init.js +5 -5
- package/dist/bin/jpi-jobs.js +220 -47
- package/dist/bin/jpi-learn.js +118 -0
- package/dist/bin/jpi-login.js +220 -47
- package/dist/bin/jpi-profile.js +118 -0
- package/dist/bin/jpi-refresh.js +249 -48
- package/dist/bin/jpi-save.js +118 -0
- package/dist/bin/jpi-sync.js +118 -0
- package/dist/bin/spinner.js +29 -1
- package/dist/src/profile.js +110 -0
- package/dist/src/signal.js +110 -0
- package/install.js +81 -260
- package/package.json +3 -3
package/dist/bin/jpi-login.js
CHANGED
|
@@ -747,16 +747,102 @@ var init_ashby = __esm({
|
|
|
747
747
|
}
|
|
748
748
|
});
|
|
749
749
|
|
|
750
|
-
// ../../packages/core/src/feeds/
|
|
750
|
+
// ../../packages/core/src/feeds/lever.ts
|
|
751
751
|
function tokenize3(text) {
|
|
752
752
|
return text.toLowerCase().replace(/[^a-z0-9.\-+#]/g, " ").split(/\s+/).filter(Boolean);
|
|
753
753
|
}
|
|
754
|
-
function extractTags3(
|
|
754
|
+
function extractTags3(p) {
|
|
755
|
+
const cat = p.categories ?? {};
|
|
756
|
+
const texts = [
|
|
757
|
+
p.text,
|
|
758
|
+
cat.team ?? "",
|
|
759
|
+
cat.department ?? "",
|
|
760
|
+
cat.location ?? "",
|
|
761
|
+
...cat.allLocations ?? [],
|
|
762
|
+
p.descriptionPlain ?? ""
|
|
763
|
+
];
|
|
764
|
+
return normalize(texts.flatMap(tokenize3));
|
|
765
|
+
}
|
|
766
|
+
function mapCommitment(raw) {
|
|
767
|
+
if (!raw) return "full_time";
|
|
768
|
+
const lower = raw.toLowerCase();
|
|
769
|
+
if (lower.includes("contract") || lower.includes("contractor")) return "contract";
|
|
770
|
+
if (lower.includes("freelance")) return "freelance";
|
|
771
|
+
return "full_time";
|
|
772
|
+
}
|
|
773
|
+
function inferRemote3(p) {
|
|
774
|
+
if ((p.workplaceType ?? "").toLowerCase() === "remote") return true;
|
|
775
|
+
const cat = p.categories ?? {};
|
|
776
|
+
const haystack = [cat.location ?? "", ...cat.allLocations ?? []].join(" ").toLowerCase();
|
|
777
|
+
return haystack.includes("remote") || haystack.includes("anywhere");
|
|
778
|
+
}
|
|
779
|
+
function toIso(ms) {
|
|
780
|
+
if (typeof ms !== "number" || !Number.isFinite(ms)) return void 0;
|
|
781
|
+
try {
|
|
782
|
+
return new Date(ms).toISOString();
|
|
783
|
+
} catch {
|
|
784
|
+
return void 0;
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
async function fetchSlug3(slug) {
|
|
788
|
+
const url = `https://api.lever.co/v0/postings/${slug}?mode=json`;
|
|
789
|
+
const res = await fetch(url, { headers: { Accept: "application/json" } });
|
|
790
|
+
if (!res.ok) {
|
|
791
|
+
throw new Error(`Lever ${slug}: HTTP ${res.status}`);
|
|
792
|
+
}
|
|
793
|
+
const data = await res.json();
|
|
794
|
+
const postings = Array.isArray(data) ? data : [];
|
|
795
|
+
if (postings.length === 0) {
|
|
796
|
+
console.warn(`[lever] ${slug}: 0 jobs returned (board may be private or slug invalid)`);
|
|
797
|
+
} else {
|
|
798
|
+
console.info(`[lever] ${slug}: ${postings.length} jobs`);
|
|
799
|
+
}
|
|
800
|
+
return postings.filter((p) => p && p.id && p.text).map((p) => ({
|
|
801
|
+
id: `lever:${p.id}`,
|
|
802
|
+
source: "lever",
|
|
803
|
+
title: p.text,
|
|
804
|
+
company: slug,
|
|
805
|
+
url: p.hostedUrl ?? p.applyUrl ?? `https://jobs.lever.co/${slug}/${p.id}`,
|
|
806
|
+
remote: inferRemote3(p),
|
|
807
|
+
location: p.categories?.location,
|
|
808
|
+
tags: extractTags3(p),
|
|
809
|
+
roleType: mapCommitment(p.categories?.commitment),
|
|
810
|
+
postedAt: toIso(p.createdAt),
|
|
811
|
+
applyMode: "direct",
|
|
812
|
+
raw: p
|
|
813
|
+
}));
|
|
814
|
+
}
|
|
815
|
+
var lever;
|
|
816
|
+
var init_lever = __esm({
|
|
817
|
+
"../../packages/core/src/feeds/lever.ts"() {
|
|
818
|
+
"use strict";
|
|
819
|
+
init_vocabulary();
|
|
820
|
+
lever = {
|
|
821
|
+
source: "lever",
|
|
822
|
+
async fetch(opts) {
|
|
823
|
+
const slugs = opts?.slugs ?? [];
|
|
824
|
+
const results = await Promise.allSettled(slugs.map(fetchSlug3));
|
|
825
|
+
const jobs = [];
|
|
826
|
+
for (const r of results) {
|
|
827
|
+
if (r.status === "fulfilled") jobs.push(...r.value);
|
|
828
|
+
else console.warn("[lever] slug fetch rejected:", r.reason);
|
|
829
|
+
}
|
|
830
|
+
return jobs;
|
|
831
|
+
}
|
|
832
|
+
};
|
|
833
|
+
}
|
|
834
|
+
});
|
|
835
|
+
|
|
836
|
+
// ../../packages/core/src/feeds/himalayas.ts
|
|
837
|
+
function tokenize4(text) {
|
|
838
|
+
return text.toLowerCase().replace(/[^a-z0-9.\-+#]/g, " ").split(/\s+/).filter(Boolean);
|
|
839
|
+
}
|
|
840
|
+
function extractTags4(job) {
|
|
755
841
|
const texts = [
|
|
756
842
|
job.title,
|
|
757
843
|
...job.tags ?? []
|
|
758
844
|
];
|
|
759
|
-
return normalize(texts.flatMap(
|
|
845
|
+
return normalize(texts.flatMap(tokenize4));
|
|
760
846
|
}
|
|
761
847
|
function mapJobType(raw) {
|
|
762
848
|
if (!raw) return "full_time";
|
|
@@ -802,7 +888,7 @@ var init_himalayas = __esm({
|
|
|
802
888
|
location: (j.locationRestrictions ?? []).join(", ") || "Remote",
|
|
803
889
|
compMin: j.salaryMin,
|
|
804
890
|
compMax: j.salaryMax,
|
|
805
|
-
tags:
|
|
891
|
+
tags: extractTags4(j),
|
|
806
892
|
roleType: mapJobType(j.jobType),
|
|
807
893
|
postedAt: j.pubDate ?? j.createdAt,
|
|
808
894
|
applyMode: "direct",
|
|
@@ -814,7 +900,7 @@ var init_himalayas = __esm({
|
|
|
814
900
|
});
|
|
815
901
|
|
|
816
902
|
// ../../packages/core/src/feeds/wwr.ts
|
|
817
|
-
function
|
|
903
|
+
function tokenize5(text) {
|
|
818
904
|
return text.toLowerCase().replace(/[^a-z0-9.\-+#]/g, " ").split(/\s+/).filter(Boolean);
|
|
819
905
|
}
|
|
820
906
|
function stripHtml(html) {
|
|
@@ -856,9 +942,9 @@ function parseRss(xml) {
|
|
|
856
942
|
}
|
|
857
943
|
return items;
|
|
858
944
|
}
|
|
859
|
-
function
|
|
945
|
+
function extractTags5(item) {
|
|
860
946
|
const text = [item.title, item.category, stripHtml(item.description)].join(" ");
|
|
861
|
-
return normalize(
|
|
947
|
+
return normalize(tokenize5(text));
|
|
862
948
|
}
|
|
863
949
|
var WWR_RSS_URL, wwr;
|
|
864
950
|
var init_wwr = __esm({
|
|
@@ -887,7 +973,7 @@ var init_wwr = __esm({
|
|
|
887
973
|
// WWR is a remote-only board
|
|
888
974
|
remote: true,
|
|
889
975
|
location: "Remote",
|
|
890
|
-
tags:
|
|
976
|
+
tags: extractTags5(item),
|
|
891
977
|
roleType: inferRoleType(item.category),
|
|
892
978
|
postedAt: item.pubDate ? new Date(item.pubDate).toISOString() : void 0,
|
|
893
979
|
applyMode: "direct",
|
|
@@ -899,7 +985,7 @@ var init_wwr = __esm({
|
|
|
899
985
|
});
|
|
900
986
|
|
|
901
987
|
// ../../packages/core/src/feeds/hn.ts
|
|
902
|
-
function
|
|
988
|
+
function tokenize6(text) {
|
|
903
989
|
return text.toLowerCase().replace(/[^a-z0-9.\-+#]/g, " ").split(/\s+/).filter(Boolean);
|
|
904
990
|
}
|
|
905
991
|
function stripHtml2(html) {
|
|
@@ -909,7 +995,7 @@ function extractUrl(text) {
|
|
|
909
995
|
const match2 = text.match(/https?:\/\/[^\s<>"']+/);
|
|
910
996
|
return match2?.[0] ?? "";
|
|
911
997
|
}
|
|
912
|
-
function
|
|
998
|
+
function inferRemote4(text) {
|
|
913
999
|
const lower = text.toLowerCase();
|
|
914
1000
|
return lower.includes("remote") || lower.includes("anywhere") || lower.includes("distributed");
|
|
915
1001
|
}
|
|
@@ -932,7 +1018,7 @@ function parseComment(item) {
|
|
|
932
1018
|
return null;
|
|
933
1019
|
}
|
|
934
1020
|
const url = extractUrl(raw) || `https://news.ycombinator.com/item?id=${item.id}`;
|
|
935
|
-
const tags =
|
|
1021
|
+
const tags = extractTags6(raw);
|
|
936
1022
|
if (tags.length === 0) return null;
|
|
937
1023
|
return {
|
|
938
1024
|
id: `hn:${item.id}`,
|
|
@@ -940,7 +1026,7 @@ function parseComment(item) {
|
|
|
940
1026
|
title: title.slice(0, 120),
|
|
941
1027
|
company: company.slice(0, 80),
|
|
942
1028
|
url,
|
|
943
|
-
remote:
|
|
1029
|
+
remote: inferRemote4(raw),
|
|
944
1030
|
location: location || void 0,
|
|
945
1031
|
tags,
|
|
946
1032
|
roleType: inferRoleType2(raw),
|
|
@@ -949,8 +1035,8 @@ function parseComment(item) {
|
|
|
949
1035
|
raw: item
|
|
950
1036
|
};
|
|
951
1037
|
}
|
|
952
|
-
function
|
|
953
|
-
return normalize(
|
|
1038
|
+
function extractTags6(text) {
|
|
1039
|
+
return normalize(tokenize6(text));
|
|
954
1040
|
}
|
|
955
1041
|
var ALGOLIA_SEARCH, ALGOLIA_ITEMS, hn;
|
|
956
1042
|
var init_hn = __esm({
|
|
@@ -994,20 +1080,25 @@ var init_hn = __esm({
|
|
|
994
1080
|
});
|
|
995
1081
|
|
|
996
1082
|
// ../../packages/core/src/feeds/index.ts
|
|
1083
|
+
function flattenTiers(t) {
|
|
1084
|
+
return [.../* @__PURE__ */ new Set([...t.bigco, ...t.scaleup, ...t.startup])];
|
|
1085
|
+
}
|
|
997
1086
|
async function aggregate(opts) {
|
|
998
1087
|
const ghSlugs = opts?.slugs?.["greenhouse"] ?? DEFAULT_GREENHOUSE_SLUGS;
|
|
999
1088
|
const ashbySlugs = opts?.slugs?.["ashby"] ?? DEFAULT_ASHBY_SLUGS;
|
|
1089
|
+
const leverSlugs = opts?.slugs?.["lever"] ?? DEFAULT_LEVER_SLUGS;
|
|
1000
1090
|
const limit = opts?.limit ?? 150;
|
|
1001
1091
|
const settled = await Promise.allSettled([
|
|
1002
1092
|
greenhouse.fetch({ slugs: ghSlugs, limit }),
|
|
1003
1093
|
ashby.fetch({ slugs: ashbySlugs, limit }),
|
|
1094
|
+
lever.fetch({ slugs: leverSlugs, limit }),
|
|
1004
1095
|
himalayas.fetch({ limit }),
|
|
1005
1096
|
wwr.fetch({ limit }),
|
|
1006
1097
|
hn.fetch({ limit })
|
|
1007
1098
|
]);
|
|
1008
1099
|
const seen = /* @__PURE__ */ new Set();
|
|
1009
1100
|
const jobs = [];
|
|
1010
|
-
const sourceNames = ["greenhouse", "ashby", "himalayas", "wwr", "hn"];
|
|
1101
|
+
const sourceNames = ["greenhouse", "ashby", "lever", "himalayas", "wwr", "hn"];
|
|
1011
1102
|
for (let i = 0; i < settled.length; i++) {
|
|
1012
1103
|
const result = settled[i];
|
|
1013
1104
|
if (result.status === "rejected") {
|
|
@@ -1023,46 +1114,122 @@ async function aggregate(opts) {
|
|
|
1023
1114
|
}
|
|
1024
1115
|
return jobs;
|
|
1025
1116
|
}
|
|
1026
|
-
var FEEDS, DEFAULT_GREENHOUSE_SLUGS, DEFAULT_ASHBY_SLUGS;
|
|
1117
|
+
var FEEDS, GREENHOUSE_SLUGS_BY_TIER, ASHBY_SLUGS_BY_TIER, LEVER_SLUGS_BY_TIER, DEFAULT_GREENHOUSE_SLUGS, DEFAULT_ASHBY_SLUGS, DEFAULT_LEVER_SLUGS;
|
|
1027
1118
|
var init_feeds = __esm({
|
|
1028
1119
|
"../../packages/core/src/feeds/index.ts"() {
|
|
1029
1120
|
"use strict";
|
|
1030
1121
|
init_greenhouse();
|
|
1031
1122
|
init_ashby();
|
|
1123
|
+
init_lever();
|
|
1032
1124
|
init_himalayas();
|
|
1033
1125
|
init_wwr();
|
|
1034
1126
|
init_hn();
|
|
1035
|
-
FEEDS = [greenhouse, ashby, himalayas, wwr, hn];
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1127
|
+
FEEDS = [greenhouse, ashby, lever, himalayas, wwr, hn];
|
|
1128
|
+
GREENHOUSE_SLUGS_BY_TIER = {
|
|
1129
|
+
bigco: [
|
|
1130
|
+
"stripe",
|
|
1131
|
+
"anthropic",
|
|
1132
|
+
"figma",
|
|
1133
|
+
"discord",
|
|
1134
|
+
"brex",
|
|
1135
|
+
"mercury",
|
|
1136
|
+
"plaid",
|
|
1137
|
+
"gusto",
|
|
1138
|
+
"scale",
|
|
1139
|
+
"databricks",
|
|
1140
|
+
"coinbase",
|
|
1141
|
+
"robinhood",
|
|
1142
|
+
"doordash",
|
|
1143
|
+
"airbnb",
|
|
1144
|
+
"dropbox",
|
|
1145
|
+
"datadog",
|
|
1146
|
+
"cloudflare",
|
|
1147
|
+
"reddit",
|
|
1148
|
+
"lyft",
|
|
1149
|
+
"instacart"
|
|
1150
|
+
],
|
|
1151
|
+
scaleup: [
|
|
1152
|
+
"samsara",
|
|
1153
|
+
"verkada",
|
|
1154
|
+
"affirm",
|
|
1155
|
+
"gitlab",
|
|
1156
|
+
"asana",
|
|
1157
|
+
"flexport",
|
|
1158
|
+
"faire",
|
|
1159
|
+
"twitch",
|
|
1160
|
+
"airtable",
|
|
1161
|
+
"retool"
|
|
1162
|
+
],
|
|
1163
|
+
startup: [
|
|
1164
|
+
"watershed"
|
|
1165
|
+
]
|
|
1166
|
+
};
|
|
1167
|
+
ASHBY_SLUGS_BY_TIER = {
|
|
1168
|
+
bigco: [
|
|
1169
|
+
"openai"
|
|
1170
|
+
],
|
|
1171
|
+
scaleup: [
|
|
1172
|
+
"harvey",
|
|
1173
|
+
"elevenlabs",
|
|
1174
|
+
"notion",
|
|
1175
|
+
"sierra",
|
|
1176
|
+
"cohere",
|
|
1177
|
+
"ramp",
|
|
1178
|
+
"vanta",
|
|
1179
|
+
"decagon",
|
|
1180
|
+
"cursor",
|
|
1181
|
+
"replit",
|
|
1182
|
+
"perplexity",
|
|
1183
|
+
"baseten",
|
|
1184
|
+
"drata",
|
|
1185
|
+
"writer",
|
|
1186
|
+
"temporal",
|
|
1187
|
+
"supabase"
|
|
1188
|
+
],
|
|
1189
|
+
startup: [
|
|
1190
|
+
"suno",
|
|
1191
|
+
"attio",
|
|
1192
|
+
"modal",
|
|
1193
|
+
"workos",
|
|
1194
|
+
"linear",
|
|
1195
|
+
"render",
|
|
1196
|
+
"warp",
|
|
1197
|
+
"plain",
|
|
1198
|
+
"posthog",
|
|
1199
|
+
"pylon",
|
|
1200
|
+
"resend",
|
|
1201
|
+
"langfuse",
|
|
1202
|
+
"railway",
|
|
1203
|
+
"mintlify",
|
|
1204
|
+
"neon",
|
|
1205
|
+
"browserbase",
|
|
1206
|
+
"knock",
|
|
1207
|
+
"speakeasy",
|
|
1208
|
+
"stytch",
|
|
1209
|
+
"runway",
|
|
1210
|
+
"doppler",
|
|
1211
|
+
"inngest",
|
|
1212
|
+
"hightouch",
|
|
1213
|
+
"zed"
|
|
1214
|
+
]
|
|
1215
|
+
};
|
|
1216
|
+
LEVER_SLUGS_BY_TIER = {
|
|
1217
|
+
bigco: [
|
|
1218
|
+
"palantir",
|
|
1219
|
+
"spotify"
|
|
1220
|
+
],
|
|
1221
|
+
scaleup: [
|
|
1222
|
+
"mistral",
|
|
1223
|
+
"ro",
|
|
1224
|
+
"secureframe"
|
|
1225
|
+
],
|
|
1226
|
+
startup: [
|
|
1227
|
+
"anyscale"
|
|
1228
|
+
]
|
|
1229
|
+
};
|
|
1230
|
+
DEFAULT_GREENHOUSE_SLUGS = flattenTiers(GREENHOUSE_SLUGS_BY_TIER);
|
|
1231
|
+
DEFAULT_ASHBY_SLUGS = flattenTiers(ASHBY_SLUGS_BY_TIER);
|
|
1232
|
+
DEFAULT_LEVER_SLUGS = flattenTiers(LEVER_SLUGS_BY_TIER);
|
|
1066
1233
|
}
|
|
1067
1234
|
});
|
|
1068
1235
|
|
|
@@ -1249,10 +1416,14 @@ var init_github = __esm({
|
|
|
1249
1416
|
// ../../packages/core/src/index.ts
|
|
1250
1417
|
var src_exports = {};
|
|
1251
1418
|
__export(src_exports, {
|
|
1419
|
+
ASHBY_SLUGS_BY_TIER: () => ASHBY_SLUGS_BY_TIER,
|
|
1252
1420
|
COASTAL_BUYER: () => COASTAL_BUYER,
|
|
1253
1421
|
DEFAULT_ASHBY_SLUGS: () => DEFAULT_ASHBY_SLUGS,
|
|
1254
1422
|
DEFAULT_GREENHOUSE_SLUGS: () => DEFAULT_GREENHOUSE_SLUGS,
|
|
1423
|
+
DEFAULT_LEVER_SLUGS: () => DEFAULT_LEVER_SLUGS,
|
|
1255
1424
|
FEEDS: () => FEEDS,
|
|
1425
|
+
GREENHOUSE_SLUGS_BY_TIER: () => GREENHOUSE_SLUGS_BY_TIER,
|
|
1426
|
+
LEVER_SLUGS_BY_TIER: () => LEVER_SLUGS_BY_TIER,
|
|
1256
1427
|
SYNONYMS: () => SYNONYMS,
|
|
1257
1428
|
VOCABULARY: () => VOCABULARY,
|
|
1258
1429
|
aggregate: () => aggregate,
|
|
@@ -1260,10 +1431,12 @@ __export(src_exports, {
|
|
|
1260
1431
|
buildIndex: () => buildIndex,
|
|
1261
1432
|
buildReason: () => buildReason,
|
|
1262
1433
|
fetchGitHubProfile: () => fetchGitHubProfile,
|
|
1434
|
+
flattenTiers: () => flattenTiers,
|
|
1263
1435
|
githubToFingerprint: () => githubToFingerprint,
|
|
1264
1436
|
greenhouse: () => greenhouse,
|
|
1265
1437
|
himalayas: () => himalayas,
|
|
1266
1438
|
hn: () => hn,
|
|
1439
|
+
lever: () => lever,
|
|
1267
1440
|
loadCoastalRoles: () => loadCoastalRoles,
|
|
1268
1441
|
match: () => match,
|
|
1269
1442
|
matchOne: () => matchOne,
|
package/dist/bin/jpi-profile.js
CHANGED
|
@@ -257,6 +257,14 @@ var init_ashby = __esm({
|
|
|
257
257
|
}
|
|
258
258
|
});
|
|
259
259
|
|
|
260
|
+
// ../../packages/core/src/feeds/lever.ts
|
|
261
|
+
var init_lever = __esm({
|
|
262
|
+
"../../packages/core/src/feeds/lever.ts"() {
|
|
263
|
+
"use strict";
|
|
264
|
+
init_vocabulary();
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
|
|
260
268
|
// ../../packages/core/src/feeds/himalayas.ts
|
|
261
269
|
var init_himalayas = __esm({
|
|
262
270
|
"../../packages/core/src/feeds/himalayas.ts"() {
|
|
@@ -282,14 +290,124 @@ var init_hn = __esm({
|
|
|
282
290
|
});
|
|
283
291
|
|
|
284
292
|
// ../../packages/core/src/feeds/index.ts
|
|
293
|
+
function flattenTiers(t) {
|
|
294
|
+
return [.../* @__PURE__ */ new Set([...t.bigco, ...t.scaleup, ...t.startup])];
|
|
295
|
+
}
|
|
296
|
+
var GREENHOUSE_SLUGS_BY_TIER, ASHBY_SLUGS_BY_TIER, LEVER_SLUGS_BY_TIER, DEFAULT_GREENHOUSE_SLUGS, DEFAULT_ASHBY_SLUGS, DEFAULT_LEVER_SLUGS;
|
|
285
297
|
var init_feeds = __esm({
|
|
286
298
|
"../../packages/core/src/feeds/index.ts"() {
|
|
287
299
|
"use strict";
|
|
288
300
|
init_greenhouse();
|
|
289
301
|
init_ashby();
|
|
302
|
+
init_lever();
|
|
290
303
|
init_himalayas();
|
|
291
304
|
init_wwr();
|
|
292
305
|
init_hn();
|
|
306
|
+
GREENHOUSE_SLUGS_BY_TIER = {
|
|
307
|
+
bigco: [
|
|
308
|
+
"stripe",
|
|
309
|
+
"anthropic",
|
|
310
|
+
"figma",
|
|
311
|
+
"discord",
|
|
312
|
+
"brex",
|
|
313
|
+
"mercury",
|
|
314
|
+
"plaid",
|
|
315
|
+
"gusto",
|
|
316
|
+
"scale",
|
|
317
|
+
"databricks",
|
|
318
|
+
"coinbase",
|
|
319
|
+
"robinhood",
|
|
320
|
+
"doordash",
|
|
321
|
+
"airbnb",
|
|
322
|
+
"dropbox",
|
|
323
|
+
"datadog",
|
|
324
|
+
"cloudflare",
|
|
325
|
+
"reddit",
|
|
326
|
+
"lyft",
|
|
327
|
+
"instacart"
|
|
328
|
+
],
|
|
329
|
+
scaleup: [
|
|
330
|
+
"samsara",
|
|
331
|
+
"verkada",
|
|
332
|
+
"affirm",
|
|
333
|
+
"gitlab",
|
|
334
|
+
"asana",
|
|
335
|
+
"flexport",
|
|
336
|
+
"faire",
|
|
337
|
+
"twitch",
|
|
338
|
+
"airtable",
|
|
339
|
+
"retool"
|
|
340
|
+
],
|
|
341
|
+
startup: [
|
|
342
|
+
"watershed"
|
|
343
|
+
]
|
|
344
|
+
};
|
|
345
|
+
ASHBY_SLUGS_BY_TIER = {
|
|
346
|
+
bigco: [
|
|
347
|
+
"openai"
|
|
348
|
+
],
|
|
349
|
+
scaleup: [
|
|
350
|
+
"harvey",
|
|
351
|
+
"elevenlabs",
|
|
352
|
+
"notion",
|
|
353
|
+
"sierra",
|
|
354
|
+
"cohere",
|
|
355
|
+
"ramp",
|
|
356
|
+
"vanta",
|
|
357
|
+
"decagon",
|
|
358
|
+
"cursor",
|
|
359
|
+
"replit",
|
|
360
|
+
"perplexity",
|
|
361
|
+
"baseten",
|
|
362
|
+
"drata",
|
|
363
|
+
"writer",
|
|
364
|
+
"temporal",
|
|
365
|
+
"supabase"
|
|
366
|
+
],
|
|
367
|
+
startup: [
|
|
368
|
+
"suno",
|
|
369
|
+
"attio",
|
|
370
|
+
"modal",
|
|
371
|
+
"workos",
|
|
372
|
+
"linear",
|
|
373
|
+
"render",
|
|
374
|
+
"warp",
|
|
375
|
+
"plain",
|
|
376
|
+
"posthog",
|
|
377
|
+
"pylon",
|
|
378
|
+
"resend",
|
|
379
|
+
"langfuse",
|
|
380
|
+
"railway",
|
|
381
|
+
"mintlify",
|
|
382
|
+
"neon",
|
|
383
|
+
"browserbase",
|
|
384
|
+
"knock",
|
|
385
|
+
"speakeasy",
|
|
386
|
+
"stytch",
|
|
387
|
+
"runway",
|
|
388
|
+
"doppler",
|
|
389
|
+
"inngest",
|
|
390
|
+
"hightouch",
|
|
391
|
+
"zed"
|
|
392
|
+
]
|
|
393
|
+
};
|
|
394
|
+
LEVER_SLUGS_BY_TIER = {
|
|
395
|
+
bigco: [
|
|
396
|
+
"palantir",
|
|
397
|
+
"spotify"
|
|
398
|
+
],
|
|
399
|
+
scaleup: [
|
|
400
|
+
"mistral",
|
|
401
|
+
"ro",
|
|
402
|
+
"secureframe"
|
|
403
|
+
],
|
|
404
|
+
startup: [
|
|
405
|
+
"anyscale"
|
|
406
|
+
]
|
|
407
|
+
};
|
|
408
|
+
DEFAULT_GREENHOUSE_SLUGS = flattenTiers(GREENHOUSE_SLUGS_BY_TIER);
|
|
409
|
+
DEFAULT_ASHBY_SLUGS = flattenTiers(ASHBY_SLUGS_BY_TIER);
|
|
410
|
+
DEFAULT_LEVER_SLUGS = flattenTiers(LEVER_SLUGS_BY_TIER);
|
|
293
411
|
}
|
|
294
412
|
});
|
|
295
413
|
|