@civiq/entity-resolution 0.1.0

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 (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +135 -0
  3. package/data/bioguide-fec-mapping.json +4186 -0
  4. package/data/sec-sic-data.json +10427 -0
  5. package/dist/__tests__/company-entity-resolver.test.d.ts +6 -0
  6. package/dist/__tests__/company-entity-resolver.test.d.ts.map +1 -0
  7. package/dist/__tests__/company-entity-resolver.test.js +267 -0
  8. package/dist/__tests__/company-entity-resolver.test.js.map +1 -0
  9. package/dist/__tests__/entity-resolution.test.d.ts +2 -0
  10. package/dist/__tests__/entity-resolution.test.d.ts.map +1 -0
  11. package/dist/__tests__/entity-resolution.test.js +296 -0
  12. package/dist/__tests__/entity-resolution.test.js.map +1 -0
  13. package/dist/__tests__/fec-entity-resolution.test.d.ts +2 -0
  14. package/dist/__tests__/fec-entity-resolution.test.d.ts.map +1 -0
  15. package/dist/__tests__/fec-entity-resolution.test.js +49 -0
  16. package/dist/__tests__/fec-entity-resolution.test.js.map +1 -0
  17. package/dist/bioguide-fec-mapping.d.ts +27 -0
  18. package/dist/bioguide-fec-mapping.d.ts.map +1 -0
  19. package/dist/bioguide-fec-mapping.js +57 -0
  20. package/dist/bioguide-fec-mapping.js.map +1 -0
  21. package/dist/cache.d.ts +18 -0
  22. package/dist/cache.d.ts.map +1 -0
  23. package/dist/cache.js +18 -0
  24. package/dist/cache.js.map +1 -0
  25. package/dist/committee-agency-map.d.ts +58 -0
  26. package/dist/committee-agency-map.d.ts.map +1 -0
  27. package/dist/committee-agency-map.js +658 -0
  28. package/dist/committee-agency-map.js.map +1 -0
  29. package/dist/committee-alias-table.d.ts +11 -0
  30. package/dist/committee-alias-table.d.ts.map +1 -0
  31. package/dist/committee-alias-table.js +191 -0
  32. package/dist/committee-alias-table.js.map +1 -0
  33. package/dist/company-alias-table.d.ts +36 -0
  34. package/dist/company-alias-table.d.ts.map +1 -0
  35. package/dist/company-alias-table.js +1307 -0
  36. package/dist/company-alias-table.js.map +1 -0
  37. package/dist/company-entity-resolver.d.ts +94 -0
  38. package/dist/company-entity-resolver.d.ts.map +1 -0
  39. package/dist/company-entity-resolver.js +282 -0
  40. package/dist/company-entity-resolver.js.map +1 -0
  41. package/dist/configure.d.ts +15 -0
  42. package/dist/configure.d.ts.map +1 -0
  43. package/dist/configure.js +19 -0
  44. package/dist/configure.js.map +1 -0
  45. package/dist/fec-entity-resolution.d.ts +88 -0
  46. package/dist/fec-entity-resolution.d.ts.map +1 -0
  47. package/dist/fec-entity-resolution.js +407 -0
  48. package/dist/fec-entity-resolution.js.map +1 -0
  49. package/dist/index.d.ts +30 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +33 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/industry-taxonomy.d.ts +90 -0
  54. package/dist/industry-taxonomy.d.ts.map +1 -0
  55. package/dist/industry-taxonomy.js +1026 -0
  56. package/dist/industry-taxonomy.js.map +1 -0
  57. package/dist/lda-issue-policy-map.d.ts +13 -0
  58. package/dist/lda-issue-policy-map.d.ts.map +1 -0
  59. package/dist/lda-issue-policy-map.js +193 -0
  60. package/dist/lda-issue-policy-map.js.map +1 -0
  61. package/dist/lobbying-committee-resolver.d.ts +23 -0
  62. package/dist/lobbying-committee-resolver.d.ts.map +1 -0
  63. package/dist/lobbying-committee-resolver.js +158 -0
  64. package/dist/lobbying-committee-resolver.js.map +1 -0
  65. package/dist/logger.d.ts +20 -0
  66. package/dist/logger.d.ts.map +1 -0
  67. package/dist/logger.js +20 -0
  68. package/dist/logger.js.map +1 -0
  69. package/dist/sic-sector-map.d.ts +32 -0
  70. package/dist/sic-sector-map.d.ts.map +1 -0
  71. package/dist/sic-sector-map.js +109 -0
  72. package/dist/sic-sector-map.js.map +1 -0
  73. package/dist/ticker-industry-resolver.d.ts +22 -0
  74. package/dist/ticker-industry-resolver.d.ts.map +1 -0
  75. package/dist/ticker-industry-resolver.js +254 -0
  76. package/dist/ticker-industry-resolver.js.map +1 -0
  77. package/dist/types.d.ts +30 -0
  78. package/dist/types.d.ts.map +1 -0
  79. package/dist/types.js +6 -0
  80. package/dist/types.js.map +1 -0
  81. package/package.json +51 -0
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) 2019-2025 Mark Sandford
3
+ * Licensed under the MIT License. See LICENSE and NOTICE files.
4
+ */
5
+ /** Map from normalized alias string → committee code */
6
+ export declare const COMMITTEE_ALIASES: Map<string, string>;
7
+ /** Map from normalized alias string → agency slug */
8
+ export declare const AGENCY_ALIASES: Map<string, string>;
9
+ /** Get all committee alias names for Fuse.js search collection. */
10
+ export declare function getAllCommitteeAliasNames(): string[];
11
+ //# sourceMappingURL=committee-alias-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"committee-alias-table.d.ts","sourceRoot":"","sources":["../src/committee-alias-table.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6MH,wDAAwD;AACxD,eAAO,MAAM,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAA2B,CAAC;AAE9E,qDAAqD;AACrD,eAAO,MAAM,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAwB,CAAC;AAExE,mEAAmE;AACnE,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAEpD"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Copyright (c) 2019-2025 Mark Sandford
3
+ * Licensed under the MIT License. See LICENSE and NOTICE files.
4
+ */
5
+ /**
6
+ * Committee Alias Table
7
+ *
8
+ * Static lookup table mapping LDA `government_entities` free-text strings
9
+ * to known committee codes and agency slugs. Generated from the 29 entries
10
+ * in ALL_COMMITTEE_MAPPINGS.
11
+ *
12
+ * For each committee, aliases include:
13
+ * - Full formal: "senate committee on finance" → SSFI
14
+ * - Prefixed short: "senate finance" → SSFI
15
+ * - Just name: "finance" with chamber context
16
+ *
17
+ * For agencies, aliases map to USAspending slugs:
18
+ * - "department of energy" → "department-of-energy"
19
+ * - "epa" → "environmental-protection-agency"
20
+ */
21
+ import { ALL_COMMITTEE_MAPPINGS } from './committee-agency-map';
22
+ // ── Committee Aliases ────────────────────────────────────────────────
23
+ function buildCommitteeAliases() {
24
+ const aliases = new Map();
25
+ for (const mapping of ALL_COMMITTEE_MAPPINGS) {
26
+ const code = mapping.committeeCode;
27
+ const name = mapping.committeeName.toLowerCase();
28
+ const chamber = mapping.chamber.toLowerCase();
29
+ // Full formal: "senate committee on finance"
30
+ aliases.set(`${chamber} committee on ${name}`, code);
31
+ // Prefixed short: "senate finance" / "house armed services"
32
+ aliases.set(`${chamber} ${name}`, code);
33
+ // With "committee" suffix: "senate finance committee"
34
+ aliases.set(`${chamber} ${name} committee`, code);
35
+ // "committee on X" with chamber prefix
36
+ aliases.set(`${chamber} committee on ${name}`, code);
37
+ // "U.S. Senate Committee on ..." / "U.S. House Committee on ..."
38
+ aliases.set(`u.s. ${chamber} committee on ${name}`, code);
39
+ // Just "Committee on X" (ambiguous but useful for resolution)
40
+ aliases.set(`committee on ${name}`, code);
41
+ // Handle multi-word committee names with variants
42
+ // "Energy and Commerce" → "house energy and commerce committee"
43
+ if (name.includes(' and ')) {
44
+ // Also store without "and" for fuzzy matching
45
+ const parts = name.split(' and ');
46
+ if (parts.length === 2 && parts[0] && parts[1]) {
47
+ aliases.set(`${chamber} ${parts[0].trim()} committee`, code);
48
+ }
49
+ }
50
+ // Handle common abbreviations in committee names
51
+ if (name === 'armed services') {
52
+ aliases.set(`${chamber} armed services`, code);
53
+ }
54
+ if (name === 'energy and commerce') {
55
+ aliases.set(`${chamber} energy committee`, code);
56
+ aliases.set(`${chamber} commerce committee`, code);
57
+ }
58
+ if (name === 'ways and means') {
59
+ aliases.set(`${chamber} ways and means`, code);
60
+ }
61
+ if (name === 'health, education, labor, and pensions') {
62
+ aliases.set(`${chamber} help committee`, code);
63
+ aliases.set(`${chamber} health committee`, code);
64
+ }
65
+ if (name === 'homeland security and governmental affairs') {
66
+ aliases.set(`${chamber} homeland security`, code);
67
+ aliases.set(`${chamber} governmental affairs`, code);
68
+ }
69
+ if (name === 'banking, housing, and urban affairs') {
70
+ aliases.set(`${chamber} banking committee`, code);
71
+ aliases.set(`${chamber} banking`, code);
72
+ }
73
+ if (name === 'commerce, science, and transportation') {
74
+ aliases.set(`${chamber} commerce`, code);
75
+ aliases.set(`${chamber} science committee`, code);
76
+ }
77
+ if (name === 'agriculture, nutrition, and forestry') {
78
+ aliases.set(`${chamber} agriculture`, code);
79
+ }
80
+ if (name === 'small business and entrepreneurship') {
81
+ aliases.set(`${chamber} small business`, code);
82
+ }
83
+ if (name === 'environment and public works') {
84
+ aliases.set(`${chamber} environment`, code);
85
+ aliases.set(`${chamber} public works`, code);
86
+ }
87
+ if (name === 'energy and natural resources') {
88
+ aliases.set(`${chamber} energy`, code);
89
+ aliases.set(`${chamber} natural resources`, code);
90
+ }
91
+ if (name === 'oversight and government reform') {
92
+ aliases.set(`${chamber} oversight`, code);
93
+ aliases.set(`${chamber} government reform`, code);
94
+ }
95
+ if (name === 'science, space, and technology') {
96
+ aliases.set(`${chamber} science`, code);
97
+ aliases.set(`${chamber} space`, code);
98
+ }
99
+ if (name === 'transportation and infrastructure') {
100
+ aliases.set(`${chamber} transportation`, code);
101
+ aliases.set(`${chamber} infrastructure`, code);
102
+ }
103
+ if (name === 'education and workforce') {
104
+ aliases.set(`${chamber} education`, code);
105
+ aliases.set(`${chamber} workforce`, code);
106
+ }
107
+ }
108
+ return aliases;
109
+ }
110
+ // ── Agency Aliases ───────────────────────────────────────────────────
111
+ function buildAgencyAliases() {
112
+ const aliases = new Map();
113
+ const seenSlugs = new Set();
114
+ for (const mapping of ALL_COMMITTEE_MAPPINGS) {
115
+ for (const agency of mapping.agencies) {
116
+ if (seenSlugs.has(agency.slug))
117
+ continue;
118
+ seenSlugs.add(agency.slug);
119
+ addAgencyAliases(aliases, agency);
120
+ }
121
+ }
122
+ return aliases;
123
+ }
124
+ function addAgencyAliases(aliases, agency) {
125
+ const slug = agency.slug;
126
+ // Full name: "department of energy"
127
+ aliases.set(agency.name.toLowerCase(), slug);
128
+ // Abbreviation: "doe", "epa"
129
+ if (agency.abbreviation) {
130
+ aliases.set(agency.abbreviation.toLowerCase(), slug);
131
+ }
132
+ // Without "Department of": "energy" → may be too ambiguous, skip
133
+ // But "the" variants: "the department of energy"
134
+ if (agency.name.toLowerCase().startsWith('department of')) {
135
+ aliases.set(`the ${agency.name.toLowerCase()}`, slug);
136
+ aliases.set(`u.s. ${agency.name.toLowerCase()}`, slug);
137
+ }
138
+ // Special known abbreviation variants
139
+ const specialAliases = {
140
+ 'department-of-defense': ['dod', 'the pentagon', 'pentagon'],
141
+ 'department-of-veterans-affairs': ['the va', 'veterans administration'],
142
+ 'department-of-health-and-human-services': ['dhhs'],
143
+ 'environmental-protection-agency': ['the epa', 'us epa', 'u.s. epa'],
144
+ 'department-of-the-treasury': [
145
+ 'the treasury',
146
+ 'treasury department',
147
+ 'irs',
148
+ 'internal revenue service',
149
+ ],
150
+ 'department-of-justice': ['the doj', 'doj'],
151
+ 'department-of-homeland-security': ['the dhs'],
152
+ 'department-of-the-interior': ['the doi', 'interior department'],
153
+ 'securities-and-exchange-commission': ['the sec'],
154
+ 'federal-communications-commission': ['the fcc'],
155
+ 'federal-trade-commission': ['the ftc'],
156
+ 'small-business-administration': ['the sba'],
157
+ 'office-of-management-and-budget': ['the omb'],
158
+ 'office-of-personnel-management': ['the opm'],
159
+ 'national-aeronautics-and-space-administration': ['nasa'],
160
+ 'national-science-foundation': ['the nsf'],
161
+ 'national-oceanic-and-atmospheric-administration': ['noaa'],
162
+ 'federal-reserve-system': ['the fed', 'federal reserve board', 'federal reserve'],
163
+ 'department-of-energy': ['the doe'],
164
+ 'department-of-state': ['state department', 'the state department'],
165
+ 'department-of-education': ['the ed', 'dept of education', 'dept. of education'],
166
+ 'department-of-labor': ['the dol', 'labor department'],
167
+ 'department-of-transportation': ['the dot', 'transportation department'],
168
+ 'department-of-agriculture': ['the usda'],
169
+ 'department-of-commerce': ['commerce department'],
170
+ 'department-of-housing-and-urban-development': ['the hud'],
171
+ 'agency-for-international-development': ['usaid'],
172
+ 'army-corps-of-engineers': ['usace', 'corps of engineers', 'army corps'],
173
+ 'general-services-administration': ['the gsa'],
174
+ };
175
+ const extra = specialAliases[slug];
176
+ if (extra) {
177
+ for (const alias of extra) {
178
+ aliases.set(alias.toLowerCase(), slug);
179
+ }
180
+ }
181
+ }
182
+ // ── Exports ──────────────────────────────────────────────────────────
183
+ /** Map from normalized alias string → committee code */
184
+ export const COMMITTEE_ALIASES = buildCommitteeAliases();
185
+ /** Map from normalized alias string → agency slug */
186
+ export const AGENCY_ALIASES = buildAgencyAliases();
187
+ /** Get all committee alias names for Fuse.js search collection. */
188
+ export function getAllCommitteeAliasNames() {
189
+ return Array.from(COMMITTEE_ALIASES.keys());
190
+ }
191
+ //# sourceMappingURL=committee-alias-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"committee-alias-table.js","sourceRoot":"","sources":["../src/committee-alias-table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Copyright (c) 2019-2025 Mark Sandford
3
+ * Licensed under the MIT License. See LICENSE and NOTICE files.
4
+ */
5
+ /**
6
+ * Company Alias Table
7
+ *
8
+ * Static mapping of top companies by lobbying spend with known name
9
+ * variants across federal APIs: EPA, OSHA, CFPB, SEC, FEC, and LDA
10
+ * (Senate Lobbying Disclosure Act filings).
11
+ *
12
+ * Each entry has a canonical name, known aliases, SIC codes, sector,
13
+ * and SEC CIK where available. The alias lookup is case-insensitive
14
+ * and strips corporate suffixes before matching.
15
+ */
16
+ import { IndustrySector } from './industry-taxonomy';
17
+ export interface CompanyAlias {
18
+ canonicalName: string;
19
+ aliases: string[];
20
+ sicCodes: string[];
21
+ naicsCodes: string[];
22
+ sector: IndustrySector | null;
23
+ cik: string | null;
24
+ }
25
+ /**
26
+ * Top companies by lobbying spend with cross-API name variants.
27
+ * Ordered roughly by total lobbying expenditure (descending).
28
+ */
29
+ export declare const COMPANY_ALIAS_TABLE: CompanyAlias[];
30
+ /**
31
+ * Look up a company by any known alias.
32
+ * Normalizes the input (strips suffixes, punctuation) before matching.
33
+ * Returns the CompanyAlias entry or null if not found.
34
+ */
35
+ export declare function findCompanyByAlias(name: string): CompanyAlias | null;
36
+ //# sourceMappingURL=company-alias-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"company-alias-table.d.ts","sourceRoot":"","sources":["../src/company-alias-table.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC9B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,YAAY,EA+uC7C,CAAC;AAwBF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAiBpE"}