terminalhire 0.2.3 → 0.2.5
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 +372 -67
- 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 +239 -17
- package/dist/bin/spinner.js +29 -1
- package/dist/src/profile.js +110 -0
- package/dist/src/signal.js +110 -0
- package/package.json +1 -1
package/dist/bin/jpi-refresh.js
CHANGED
|
@@ -533,16 +533,102 @@ var init_ashby = __esm({
|
|
|
533
533
|
}
|
|
534
534
|
});
|
|
535
535
|
|
|
536
|
-
// ../../packages/core/src/feeds/
|
|
536
|
+
// ../../packages/core/src/feeds/lever.ts
|
|
537
537
|
function tokenize3(text) {
|
|
538
538
|
return text.toLowerCase().replace(/[^a-z0-9.\-+#]/g, " ").split(/\s+/).filter(Boolean);
|
|
539
539
|
}
|
|
540
|
-
function extractTags3(
|
|
540
|
+
function extractTags3(p) {
|
|
541
|
+
const cat = p.categories ?? {};
|
|
542
|
+
const texts = [
|
|
543
|
+
p.text,
|
|
544
|
+
cat.team ?? "",
|
|
545
|
+
cat.department ?? "",
|
|
546
|
+
cat.location ?? "",
|
|
547
|
+
...cat.allLocations ?? [],
|
|
548
|
+
p.descriptionPlain ?? ""
|
|
549
|
+
];
|
|
550
|
+
return normalize(texts.flatMap(tokenize3));
|
|
551
|
+
}
|
|
552
|
+
function mapCommitment(raw) {
|
|
553
|
+
if (!raw) return "full_time";
|
|
554
|
+
const lower = raw.toLowerCase();
|
|
555
|
+
if (lower.includes("contract") || lower.includes("contractor")) return "contract";
|
|
556
|
+
if (lower.includes("freelance")) return "freelance";
|
|
557
|
+
return "full_time";
|
|
558
|
+
}
|
|
559
|
+
function inferRemote3(p) {
|
|
560
|
+
if ((p.workplaceType ?? "").toLowerCase() === "remote") return true;
|
|
561
|
+
const cat = p.categories ?? {};
|
|
562
|
+
const haystack = [cat.location ?? "", ...cat.allLocations ?? []].join(" ").toLowerCase();
|
|
563
|
+
return haystack.includes("remote") || haystack.includes("anywhere");
|
|
564
|
+
}
|
|
565
|
+
function toIso(ms) {
|
|
566
|
+
if (typeof ms !== "number" || !Number.isFinite(ms)) return void 0;
|
|
567
|
+
try {
|
|
568
|
+
return new Date(ms).toISOString();
|
|
569
|
+
} catch {
|
|
570
|
+
return void 0;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
async function fetchSlug3(slug) {
|
|
574
|
+
const url = `https://api.lever.co/v0/postings/${slug}?mode=json`;
|
|
575
|
+
const res = await fetch(url, { headers: { Accept: "application/json" } });
|
|
576
|
+
if (!res.ok) {
|
|
577
|
+
throw new Error(`Lever ${slug}: HTTP ${res.status}`);
|
|
578
|
+
}
|
|
579
|
+
const data = await res.json();
|
|
580
|
+
const postings = Array.isArray(data) ? data : [];
|
|
581
|
+
if (postings.length === 0) {
|
|
582
|
+
console.warn(`[lever] ${slug}: 0 jobs returned (board may be private or slug invalid)`);
|
|
583
|
+
} else {
|
|
584
|
+
console.info(`[lever] ${slug}: ${postings.length} jobs`);
|
|
585
|
+
}
|
|
586
|
+
return postings.filter((p) => p && p.id && p.text).map((p) => ({
|
|
587
|
+
id: `lever:${p.id}`,
|
|
588
|
+
source: "lever",
|
|
589
|
+
title: p.text,
|
|
590
|
+
company: slug,
|
|
591
|
+
url: p.hostedUrl ?? p.applyUrl ?? `https://jobs.lever.co/${slug}/${p.id}`,
|
|
592
|
+
remote: inferRemote3(p),
|
|
593
|
+
location: p.categories?.location,
|
|
594
|
+
tags: extractTags3(p),
|
|
595
|
+
roleType: mapCommitment(p.categories?.commitment),
|
|
596
|
+
postedAt: toIso(p.createdAt),
|
|
597
|
+
applyMode: "direct",
|
|
598
|
+
raw: p
|
|
599
|
+
}));
|
|
600
|
+
}
|
|
601
|
+
var lever;
|
|
602
|
+
var init_lever = __esm({
|
|
603
|
+
"../../packages/core/src/feeds/lever.ts"() {
|
|
604
|
+
"use strict";
|
|
605
|
+
init_vocabulary();
|
|
606
|
+
lever = {
|
|
607
|
+
source: "lever",
|
|
608
|
+
async fetch(opts) {
|
|
609
|
+
const slugs = opts?.slugs ?? [];
|
|
610
|
+
const results = await Promise.allSettled(slugs.map(fetchSlug3));
|
|
611
|
+
const jobs = [];
|
|
612
|
+
for (const r of results) {
|
|
613
|
+
if (r.status === "fulfilled") jobs.push(...r.value);
|
|
614
|
+
else console.warn("[lever] slug fetch rejected:", r.reason);
|
|
615
|
+
}
|
|
616
|
+
return jobs;
|
|
617
|
+
}
|
|
618
|
+
};
|
|
619
|
+
}
|
|
620
|
+
});
|
|
621
|
+
|
|
622
|
+
// ../../packages/core/src/feeds/himalayas.ts
|
|
623
|
+
function tokenize4(text) {
|
|
624
|
+
return text.toLowerCase().replace(/[^a-z0-9.\-+#]/g, " ").split(/\s+/).filter(Boolean);
|
|
625
|
+
}
|
|
626
|
+
function extractTags4(job) {
|
|
541
627
|
const texts = [
|
|
542
628
|
job.title,
|
|
543
629
|
...job.tags ?? []
|
|
544
630
|
];
|
|
545
|
-
return normalize(texts.flatMap(
|
|
631
|
+
return normalize(texts.flatMap(tokenize4));
|
|
546
632
|
}
|
|
547
633
|
function mapJobType(raw) {
|
|
548
634
|
if (!raw) return "full_time";
|
|
@@ -588,7 +674,7 @@ var init_himalayas = __esm({
|
|
|
588
674
|
location: (j.locationRestrictions ?? []).join(", ") || "Remote",
|
|
589
675
|
compMin: j.salaryMin,
|
|
590
676
|
compMax: j.salaryMax,
|
|
591
|
-
tags:
|
|
677
|
+
tags: extractTags4(j),
|
|
592
678
|
roleType: mapJobType(j.jobType),
|
|
593
679
|
postedAt: j.pubDate ?? j.createdAt,
|
|
594
680
|
applyMode: "direct",
|
|
@@ -600,7 +686,7 @@ var init_himalayas = __esm({
|
|
|
600
686
|
});
|
|
601
687
|
|
|
602
688
|
// ../../packages/core/src/feeds/wwr.ts
|
|
603
|
-
function
|
|
689
|
+
function tokenize5(text) {
|
|
604
690
|
return text.toLowerCase().replace(/[^a-z0-9.\-+#]/g, " ").split(/\s+/).filter(Boolean);
|
|
605
691
|
}
|
|
606
692
|
function stripHtml(html) {
|
|
@@ -642,9 +728,9 @@ function parseRss(xml) {
|
|
|
642
728
|
}
|
|
643
729
|
return items;
|
|
644
730
|
}
|
|
645
|
-
function
|
|
731
|
+
function extractTags5(item) {
|
|
646
732
|
const text = [item.title, item.category, stripHtml(item.description)].join(" ");
|
|
647
|
-
return normalize(
|
|
733
|
+
return normalize(tokenize5(text));
|
|
648
734
|
}
|
|
649
735
|
var WWR_RSS_URL, wwr;
|
|
650
736
|
var init_wwr = __esm({
|
|
@@ -673,7 +759,7 @@ var init_wwr = __esm({
|
|
|
673
759
|
// WWR is a remote-only board
|
|
674
760
|
remote: true,
|
|
675
761
|
location: "Remote",
|
|
676
|
-
tags:
|
|
762
|
+
tags: extractTags5(item),
|
|
677
763
|
roleType: inferRoleType(item.category),
|
|
678
764
|
postedAt: item.pubDate ? new Date(item.pubDate).toISOString() : void 0,
|
|
679
765
|
applyMode: "direct",
|
|
@@ -685,7 +771,7 @@ var init_wwr = __esm({
|
|
|
685
771
|
});
|
|
686
772
|
|
|
687
773
|
// ../../packages/core/src/feeds/hn.ts
|
|
688
|
-
function
|
|
774
|
+
function tokenize6(text) {
|
|
689
775
|
return text.toLowerCase().replace(/[^a-z0-9.\-+#]/g, " ").split(/\s+/).filter(Boolean);
|
|
690
776
|
}
|
|
691
777
|
function stripHtml2(html) {
|
|
@@ -695,7 +781,7 @@ function extractUrl(text) {
|
|
|
695
781
|
const match2 = text.match(/https?:\/\/[^\s<>"']+/);
|
|
696
782
|
return match2?.[0] ?? "";
|
|
697
783
|
}
|
|
698
|
-
function
|
|
784
|
+
function inferRemote4(text) {
|
|
699
785
|
const lower = text.toLowerCase();
|
|
700
786
|
return lower.includes("remote") || lower.includes("anywhere") || lower.includes("distributed");
|
|
701
787
|
}
|
|
@@ -718,7 +804,7 @@ function parseComment(item) {
|
|
|
718
804
|
return null;
|
|
719
805
|
}
|
|
720
806
|
const url = extractUrl(raw) || `https://news.ycombinator.com/item?id=${item.id}`;
|
|
721
|
-
const tags =
|
|
807
|
+
const tags = extractTags6(raw);
|
|
722
808
|
if (tags.length === 0) return null;
|
|
723
809
|
return {
|
|
724
810
|
id: `hn:${item.id}`,
|
|
@@ -726,7 +812,7 @@ function parseComment(item) {
|
|
|
726
812
|
title: title.slice(0, 120),
|
|
727
813
|
company: company.slice(0, 80),
|
|
728
814
|
url,
|
|
729
|
-
remote:
|
|
815
|
+
remote: inferRemote4(raw),
|
|
730
816
|
location: location || void 0,
|
|
731
817
|
tags,
|
|
732
818
|
roleType: inferRoleType2(raw),
|
|
@@ -735,8 +821,8 @@ function parseComment(item) {
|
|
|
735
821
|
raw: item
|
|
736
822
|
};
|
|
737
823
|
}
|
|
738
|
-
function
|
|
739
|
-
return normalize(
|
|
824
|
+
function extractTags6(text) {
|
|
825
|
+
return normalize(tokenize6(text));
|
|
740
826
|
}
|
|
741
827
|
var ALGOLIA_SEARCH, ALGOLIA_ITEMS, hn;
|
|
742
828
|
var init_hn = __esm({
|
|
@@ -780,20 +866,25 @@ var init_hn = __esm({
|
|
|
780
866
|
});
|
|
781
867
|
|
|
782
868
|
// ../../packages/core/src/feeds/index.ts
|
|
869
|
+
function flattenTiers(t) {
|
|
870
|
+
return [.../* @__PURE__ */ new Set([...t.bigco, ...t.scaleup, ...t.startup])];
|
|
871
|
+
}
|
|
783
872
|
async function aggregate(opts) {
|
|
784
873
|
const ghSlugs = opts?.slugs?.["greenhouse"] ?? DEFAULT_GREENHOUSE_SLUGS;
|
|
785
874
|
const ashbySlugs = opts?.slugs?.["ashby"] ?? DEFAULT_ASHBY_SLUGS;
|
|
875
|
+
const leverSlugs = opts?.slugs?.["lever"] ?? DEFAULT_LEVER_SLUGS;
|
|
786
876
|
const limit = opts?.limit ?? 150;
|
|
787
877
|
const settled = await Promise.allSettled([
|
|
788
878
|
greenhouse.fetch({ slugs: ghSlugs, limit }),
|
|
789
879
|
ashby.fetch({ slugs: ashbySlugs, limit }),
|
|
880
|
+
lever.fetch({ slugs: leverSlugs, limit }),
|
|
790
881
|
himalayas.fetch({ limit }),
|
|
791
882
|
wwr.fetch({ limit }),
|
|
792
883
|
hn.fetch({ limit })
|
|
793
884
|
]);
|
|
794
885
|
const seen = /* @__PURE__ */ new Set();
|
|
795
886
|
const jobs = [];
|
|
796
|
-
const sourceNames = ["greenhouse", "ashby", "himalayas", "wwr", "hn"];
|
|
887
|
+
const sourceNames = ["greenhouse", "ashby", "lever", "himalayas", "wwr", "hn"];
|
|
797
888
|
for (let i = 0; i < settled.length; i++) {
|
|
798
889
|
const result = settled[i];
|
|
799
890
|
if (result.status === "rejected") {
|
|
@@ -809,46 +900,122 @@ async function aggregate(opts) {
|
|
|
809
900
|
}
|
|
810
901
|
return jobs;
|
|
811
902
|
}
|
|
812
|
-
var FEEDS, DEFAULT_GREENHOUSE_SLUGS, DEFAULT_ASHBY_SLUGS;
|
|
903
|
+
var FEEDS, GREENHOUSE_SLUGS_BY_TIER, ASHBY_SLUGS_BY_TIER, LEVER_SLUGS_BY_TIER, DEFAULT_GREENHOUSE_SLUGS, DEFAULT_ASHBY_SLUGS, DEFAULT_LEVER_SLUGS;
|
|
813
904
|
var init_feeds = __esm({
|
|
814
905
|
"../../packages/core/src/feeds/index.ts"() {
|
|
815
906
|
"use strict";
|
|
816
907
|
init_greenhouse();
|
|
817
908
|
init_ashby();
|
|
909
|
+
init_lever();
|
|
818
910
|
init_himalayas();
|
|
819
911
|
init_wwr();
|
|
820
912
|
init_hn();
|
|
821
|
-
FEEDS = [greenhouse, ashby, himalayas, wwr, hn];
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
913
|
+
FEEDS = [greenhouse, ashby, lever, himalayas, wwr, hn];
|
|
914
|
+
GREENHOUSE_SLUGS_BY_TIER = {
|
|
915
|
+
bigco: [
|
|
916
|
+
"stripe",
|
|
917
|
+
"anthropic",
|
|
918
|
+
"figma",
|
|
919
|
+
"discord",
|
|
920
|
+
"brex",
|
|
921
|
+
"mercury",
|
|
922
|
+
"plaid",
|
|
923
|
+
"gusto",
|
|
924
|
+
"scale",
|
|
925
|
+
"databricks",
|
|
926
|
+
"coinbase",
|
|
927
|
+
"robinhood",
|
|
928
|
+
"doordash",
|
|
929
|
+
"airbnb",
|
|
930
|
+
"dropbox",
|
|
931
|
+
"datadog",
|
|
932
|
+
"cloudflare",
|
|
933
|
+
"reddit",
|
|
934
|
+
"lyft",
|
|
935
|
+
"instacart"
|
|
936
|
+
],
|
|
937
|
+
scaleup: [
|
|
938
|
+
"samsara",
|
|
939
|
+
"verkada",
|
|
940
|
+
"affirm",
|
|
941
|
+
"gitlab",
|
|
942
|
+
"asana",
|
|
943
|
+
"flexport",
|
|
944
|
+
"faire",
|
|
945
|
+
"twitch",
|
|
946
|
+
"airtable",
|
|
947
|
+
"retool"
|
|
948
|
+
],
|
|
949
|
+
startup: [
|
|
950
|
+
"watershed"
|
|
951
|
+
]
|
|
952
|
+
};
|
|
953
|
+
ASHBY_SLUGS_BY_TIER = {
|
|
954
|
+
bigco: [
|
|
955
|
+
"openai"
|
|
956
|
+
],
|
|
957
|
+
scaleup: [
|
|
958
|
+
"harvey",
|
|
959
|
+
"elevenlabs",
|
|
960
|
+
"notion",
|
|
961
|
+
"sierra",
|
|
962
|
+
"cohere",
|
|
963
|
+
"ramp",
|
|
964
|
+
"vanta",
|
|
965
|
+
"decagon",
|
|
966
|
+
"cursor",
|
|
967
|
+
"replit",
|
|
968
|
+
"perplexity",
|
|
969
|
+
"baseten",
|
|
970
|
+
"drata",
|
|
971
|
+
"writer",
|
|
972
|
+
"temporal",
|
|
973
|
+
"supabase"
|
|
974
|
+
],
|
|
975
|
+
startup: [
|
|
976
|
+
"suno",
|
|
977
|
+
"attio",
|
|
978
|
+
"modal",
|
|
979
|
+
"workos",
|
|
980
|
+
"linear",
|
|
981
|
+
"render",
|
|
982
|
+
"warp",
|
|
983
|
+
"plain",
|
|
984
|
+
"posthog",
|
|
985
|
+
"pylon",
|
|
986
|
+
"resend",
|
|
987
|
+
"langfuse",
|
|
988
|
+
"railway",
|
|
989
|
+
"mintlify",
|
|
990
|
+
"neon",
|
|
991
|
+
"browserbase",
|
|
992
|
+
"knock",
|
|
993
|
+
"speakeasy",
|
|
994
|
+
"stytch",
|
|
995
|
+
"runway",
|
|
996
|
+
"doppler",
|
|
997
|
+
"inngest",
|
|
998
|
+
"hightouch",
|
|
999
|
+
"zed"
|
|
1000
|
+
]
|
|
1001
|
+
};
|
|
1002
|
+
LEVER_SLUGS_BY_TIER = {
|
|
1003
|
+
bigco: [
|
|
1004
|
+
"palantir",
|
|
1005
|
+
"spotify"
|
|
1006
|
+
],
|
|
1007
|
+
scaleup: [
|
|
1008
|
+
"mistral",
|
|
1009
|
+
"ro",
|
|
1010
|
+
"secureframe"
|
|
1011
|
+
],
|
|
1012
|
+
startup: [
|
|
1013
|
+
"anyscale"
|
|
1014
|
+
]
|
|
1015
|
+
};
|
|
1016
|
+
DEFAULT_GREENHOUSE_SLUGS = flattenTiers(GREENHOUSE_SLUGS_BY_TIER);
|
|
1017
|
+
DEFAULT_ASHBY_SLUGS = flattenTiers(ASHBY_SLUGS_BY_TIER);
|
|
1018
|
+
DEFAULT_LEVER_SLUGS = flattenTiers(LEVER_SLUGS_BY_TIER);
|
|
852
1019
|
}
|
|
853
1020
|
});
|
|
854
1021
|
|
|
@@ -1035,10 +1202,14 @@ var init_github = __esm({
|
|
|
1035
1202
|
// ../../packages/core/src/index.ts
|
|
1036
1203
|
var src_exports = {};
|
|
1037
1204
|
__export(src_exports, {
|
|
1205
|
+
ASHBY_SLUGS_BY_TIER: () => ASHBY_SLUGS_BY_TIER,
|
|
1038
1206
|
COASTAL_BUYER: () => COASTAL_BUYER,
|
|
1039
1207
|
DEFAULT_ASHBY_SLUGS: () => DEFAULT_ASHBY_SLUGS,
|
|
1040
1208
|
DEFAULT_GREENHOUSE_SLUGS: () => DEFAULT_GREENHOUSE_SLUGS,
|
|
1209
|
+
DEFAULT_LEVER_SLUGS: () => DEFAULT_LEVER_SLUGS,
|
|
1041
1210
|
FEEDS: () => FEEDS,
|
|
1211
|
+
GREENHOUSE_SLUGS_BY_TIER: () => GREENHOUSE_SLUGS_BY_TIER,
|
|
1212
|
+
LEVER_SLUGS_BY_TIER: () => LEVER_SLUGS_BY_TIER,
|
|
1042
1213
|
SYNONYMS: () => SYNONYMS,
|
|
1043
1214
|
VOCABULARY: () => VOCABULARY,
|
|
1044
1215
|
aggregate: () => aggregate,
|
|
@@ -1046,10 +1217,12 @@ __export(src_exports, {
|
|
|
1046
1217
|
buildIndex: () => buildIndex,
|
|
1047
1218
|
buildReason: () => buildReason,
|
|
1048
1219
|
fetchGitHubProfile: () => fetchGitHubProfile,
|
|
1220
|
+
flattenTiers: () => flattenTiers,
|
|
1049
1221
|
githubToFingerprint: () => githubToFingerprint,
|
|
1050
1222
|
greenhouse: () => greenhouse,
|
|
1051
1223
|
himalayas: () => himalayas,
|
|
1052
1224
|
hn: () => hn,
|
|
1225
|
+
lever: () => lever,
|
|
1053
1226
|
loadCoastalRoles: () => loadCoastalRoles,
|
|
1054
1227
|
match: () => match,
|
|
1055
1228
|
matchOne: () => matchOne,
|
|
@@ -1318,6 +1491,7 @@ __export(spinner_exports, {
|
|
|
1318
1491
|
clearSpinnerVerbs: () => clearSpinnerVerbs,
|
|
1319
1492
|
ctaVerb: () => ctaVerb,
|
|
1320
1493
|
formatVerbs: () => formatVerbs,
|
|
1494
|
+
interleaveBySource: () => interleaveBySource,
|
|
1321
1495
|
rankBySessionTags: () => rankBySessionTags,
|
|
1322
1496
|
readSpinnerConfig: () => readSpinnerConfig
|
|
1323
1497
|
});
|
|
@@ -1471,13 +1645,40 @@ function clearSpinnerVerbs() {
|
|
|
1471
1645
|
}
|
|
1472
1646
|
return { cleared: true, keptUserVerbs };
|
|
1473
1647
|
}
|
|
1648
|
+
function interleaveBySource(topMatches) {
|
|
1649
|
+
if (!Array.isArray(topMatches) || topMatches.length === 0) return topMatches;
|
|
1650
|
+
const buckets = /* @__PURE__ */ new Map();
|
|
1651
|
+
const order = [];
|
|
1652
|
+
for (const m of topMatches) {
|
|
1653
|
+
const id = m && m.id ? String(m.id) : "";
|
|
1654
|
+
const idx = id.indexOf(":");
|
|
1655
|
+
const source = idx > 0 ? id.slice(0, idx) : "_";
|
|
1656
|
+
if (!buckets.has(source)) {
|
|
1657
|
+
buckets.set(source, []);
|
|
1658
|
+
order.push(source);
|
|
1659
|
+
}
|
|
1660
|
+
buckets.get(source).push(m);
|
|
1661
|
+
}
|
|
1662
|
+
const out = [];
|
|
1663
|
+
let remaining = topMatches.length;
|
|
1664
|
+
while (remaining > 0) {
|
|
1665
|
+
for (const source of order) {
|
|
1666
|
+
const b = buckets.get(source);
|
|
1667
|
+
if (b && b.length) {
|
|
1668
|
+
out.push(b.shift());
|
|
1669
|
+
remaining--;
|
|
1670
|
+
}
|
|
1671
|
+
}
|
|
1672
|
+
}
|
|
1673
|
+
return out;
|
|
1674
|
+
}
|
|
1474
1675
|
function buildTips(topMatches, baseUrl, max = 8) {
|
|
1475
1676
|
const base = String(baseUrl || "https://terminalhire.com").replace(/\/+$/, "");
|
|
1476
1677
|
const out = [];
|
|
1477
1678
|
const seenRole = /* @__PURE__ */ new Set();
|
|
1478
1679
|
const perCompany = /* @__PURE__ */ new Map();
|
|
1479
1680
|
const COMPANY_CAP = 2;
|
|
1480
|
-
for (const m of Array.isArray(topMatches) ? topMatches : []) {
|
|
1681
|
+
for (const m of interleaveBySource(Array.isArray(topMatches) ? topMatches : [])) {
|
|
1481
1682
|
if (!m || !m.title || !m.company || !m.id) continue;
|
|
1482
1683
|
const idx = String(m.id).indexOf(":");
|
|
1483
1684
|
if (idx <= 0) continue;
|
package/dist/bin/jpi-save.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
|
|