@yottagraph-app/data-model-skill 0.0.32 → 0.0.34

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.
@@ -6,11 +6,15 @@
6
6
  # passive — they are created by the atomizer from parsed JSON fields, not
7
7
  # by LLM extraction.
8
8
  #
9
- # Two source identifiers are used on records:
9
+ # Three source identifiers are used on records:
10
10
  # - "fdic" — institution profiles + quarterly financials
11
- # - "fdic_failure" — bank failure and resolution data
11
+ # - "fdic_failure" — bank failure and resolution data (from /failures endpoint)
12
+ # - "fdic_history" — institution-level structure-change events (mergers,
13
+ # consolidations, voluntary closings, name changes,
14
+ # regulator changes, failures, etc., from /history endpoint
15
+ # filtered to ORG_ROLE_CDE:FI)
12
16
  name: "fdic"
13
- description: "FDIC-insured depository institution profiles, quarterly Call Report financials, and bank failure/resolution data from the FDIC BankFind Suite API"
17
+ description: "FDIC-insured depository institution profiles, quarterly Call Report financials, bank failure/resolution data, and institution-level structure-change events (mergers, consolidations, name/regulator/charter changes, voluntary closings, failures) from the FDIC BankFind Suite API"
14
18
 
15
19
  extraction:
16
20
  flavors: closed
@@ -34,6 +38,14 @@ flavors:
34
38
  examples: ["New York City", "San Francisco", "North America", "Bakery Square"]
35
39
  passive: true
36
40
 
41
+ - name: "bank_structure_event"
42
+ description: "An institution-level structure-change transaction recorded by the FDIC against an FDIC-insured (or FDIC-tracked) depository institution. Each row in the FDIC History API at the institution level (ORG_ROLE_CDE='FI') becomes one event entity, covering unassisted mergers, consolidations, absorptions, FDIC-assisted resolutions, voluntary closings, new charters, name changes, regulator and chartering-agency changes, class changes, and trust-power grants. Each event carries explicit relationships to every involved institution (subject, outgoing, surviving, acquiring) so a transaction is queryable as a first-class graph object."
43
+ display_name: "Bank Structure Event"
44
+ mergeability: not_mergeable
45
+ strong_id_properties: ["fdic_transaction_number", "fdic_history_event_id"]
46
+ examples: ["FDIC TXN 2026008583 — Merger -Without Assistance: Flint Hills Bank → The Bennington State Bank (2026-04-08)"]
47
+ passive: true
48
+
37
49
  # --- Identity and Registration (source: fdic) ---
38
50
 
39
51
  properties:
@@ -336,6 +348,100 @@ properties:
336
348
  domain_flavors: ["organization"]
337
349
  passive: true
338
350
 
351
+ # --- Bank Structure Event Properties (source: fdic_history) ---
352
+ # From FDIC BankFind Suite History API filtered to ORG_ROLE_CDE:FI.
353
+ # All elements are passive (atomized from JSON, no LLM extraction).
354
+
355
+ - name: "fdic_transaction_number"
356
+ type: string
357
+ description: "FDIC transaction number (TRANSNUM) uniquely identifying a transaction-backed structure-change in the FDIC History API; serves as the bank_structure_event entity's strong ID for the ~91% of FI-level events that are transaction-backed. The ~9% of FI-level events without a TRANSNUM (TRANSNUM=0, dominated by new-institution rows, location changes, and cert reassignments) instead carry an fdic_history_event_id strong ID"
358
+ display_name: "FDIC Transaction Number"
359
+ mergeability: not_mergeable
360
+ domain_flavors: ["bank_structure_event"]
361
+ examples: ["2026008583", "2026007976", "2026002845"]
362
+ passive: true
363
+
364
+ - name: "fdic_history_event_id"
365
+ type: string
366
+ description: "Per-row identifier from the ID field of the FDIC History API, used as the bank_structure_event entity's strong ID for the ~16K of ~185K FI-level events that have no TRANSNUM (TRANSNUM=0). The ID is a composite of effective date, CHANGECODE, and an internal identifier (e.g. \"1972-09-28T00:00:00_150_14384__\") and is unique per row. Emitted only when TRANSNUM=0, so the two strong-id properties are mutually exclusive for a given event"
367
+ display_name: "FDIC History Event ID"
368
+ mergeability: not_mergeable
369
+ domain_flavors: ["bank_structure_event"]
370
+ examples: ["1972-09-28T00:00:00_150_14384__", "1970-03-31T00:00:00_150_13853__"]
371
+ passive: true
372
+
373
+ - name: "event_change_code"
374
+ type: string
375
+ description: "FDIC structure-change event code (CHANGECODE) identifying the kind of structure change at the institution level — e.g. 110 (new institution), 211 (failure - whole institution), 221/222/223/224 (unassisted absorption/consolidation/merger/affiliated-pooling), 240 (voluntary closing), 310/320 (FRS membership change), 420/430/440/470 (chartering/class/org-type/regulator change), 510/520 (legal-name/physical-location change), 610 (trust powers granted), 810 (participated in absorption/consolidation/merger), 811 (participated in FDIC-assisted merger)"
376
+ display_name: "Event Change Code"
377
+ mergeability: not_mergeable
378
+ domain_flavors: ["bank_structure_event"]
379
+ examples: ["223", "211", "510", "240", "110", "810", "440"]
380
+ passive: true
381
+
382
+ - name: "event_change_description"
383
+ type: string
384
+ description: "Human-readable description of the FDIC structure-change event code (CHANGECODE_DESC) as published by the FDIC"
385
+ display_name: "Event Change Description"
386
+ mergeability: not_mergeable
387
+ domain_flavors: ["bank_structure_event"]
388
+ examples: ["Merger -Without Assistance", "Failure - Whole Institution", "Closing - Voluntary", "Change in Legal Name (FO or BR)", "New Institution"]
389
+ passive: true
390
+
391
+ - name: "event_category"
392
+ type: string
393
+ description: "Normalized bucket for the FDIC structure-change event, derived from CHANGECODE so consumers can filter without memorizing numeric codes. One of: merger (unassisted absorptions/consolidations/mergers/affiliated-pooling/branch-purchases and the partner-side merger rows: CC 221/222/223/224/225/712/810/811/812); failure (FDIC-assisted resolutions, conservatorships, RTC payoffs, open-bank assistance, and any closure driven by the chartering agency: CC 211/213/215/216/217/230/235/260/350/360/830); voluntary_closing (CC 240); new_institution (newly chartered institutions and admin cert reassignments: CC 110/150); name_change (CC 510); location_change (physical-address moves: CC 520); charter_change (FRS membership changes, insurance-status changes, chartering-agency/class/org-type/primary-regulator changes, trust powers granted, and phantom holding-company reorgs: CC 310/320/340/410/420/430/440/470/610/820); other (any CHANGECODE not in the above buckets, currently only CC 1 History Record Initiation). CHANGECODE definitions: https://banks.data.fdic.gov/docs/history_properties.yaml"
394
+ display_name: "Event Category"
395
+ mergeability: not_mergeable
396
+ domain_flavors: ["bank_structure_event"]
397
+ examples: ["merger", "failure", "name_change", "location_change", "charter_change", "new_institution", "voluntary_closing", "other"]
398
+ passive: true
399
+
400
+ - name: "is_fdic_assisted"
401
+ type: string
402
+ description: "String-encoded boolean (\"true\"/\"false\") indicating whether the FDIC (or its predecessor RTC) provided financial assistance, brokered the resolution, or otherwise stepped in to handle the institution. True for CHANGECODEs 211/213/215/216/217/230/235/260/350/360/811/812/830 (all failure-bucket codes plus the two partner-side rows for FDIC-Assisted Merger and Rtc Assisted Merger); false for all other codes. Orthogonal to event_category: 811/812 are in the merger bucket but are also FDIC-assisted. CHANGECODE definitions: https://banks.data.fdic.gov/docs/history_properties.yaml"
403
+ display_name: "FDIC-Assisted Resolution"
404
+ mergeability: not_mergeable
405
+ domain_flavors: ["bank_structure_event"]
406
+ examples: ["true", "false"]
407
+ passive: true
408
+
409
+ - name: "event_charter_class"
410
+ type: string
411
+ description: "FDIC institution charter class code in effect for the subject institution at the time of the event, sourced from the History API CLASS field. Same code set as the organization-level charter_class property (N/SM/NM/SB/SA/...). Critical for charter/regulator-change events (CC 430 Change in Class, CC 440 Change in Organization Type, CC 470 Change in Primary Regulatory Agency), where this is the class the institution changed TO. CHANGECODE and CLASS definitions: https://banks.data.fdic.gov/docs/history_properties.yaml"
412
+ display_name: "Event Charter Class"
413
+ mergeability: not_mergeable
414
+ domain_flavors: ["bank_structure_event"]
415
+ examples: ["N", "SM", "NM", "SB", "SA"]
416
+ passive: true
417
+
418
+ - name: "event_effective_date"
419
+ type: string
420
+ description: "Date the FDIC structure-change event took legal effect, formatted YYYY-MM-DD; derived from the EFFDATE field of the History API"
421
+ display_name: "Event Effective Date"
422
+ mergeability: not_mergeable
423
+ domain_flavors: ["bank_structure_event"]
424
+ examples: ["2026-04-08", "2008-12-31", "2004-07-01"]
425
+ passive: true
426
+
427
+ - name: "previous_legal_name"
428
+ type: string
429
+ description: "An institution's prior legal name immediately preceding a structure-change event that altered the legal name; derived from the FRM_INSTNAME field of the History API and emitted only when distinct from the current INSTNAME"
430
+ display_name: "Previous Legal Name"
431
+ mergeability: not_mergeable
432
+ domain_flavors: ["bank_structure_event"]
433
+ examples: ["ASSOCIATED CREDIT UNION", "Wachovia Bank, National Association"]
434
+ passive: true
435
+
436
+ - name: "previous_fdic_certificate_number"
437
+ type: string
438
+ description: "An institution's prior FDIC certificate number, derived from the FRM_CERT field of the History API and emitted only when present and distinct from the current CERT. The canonical case is CHANGECODE 150 (Cert Changed from Old Cert by Administrative Order). The same prior CERT is also added as an additional fdic_certificate_number strong-id alias on the subject_institution organization entity, so entity resolution merges the bank's old-cert and new-cert identities. CHANGECODE definitions: https://banks.data.fdic.gov/docs/history_properties.yaml"
439
+ display_name: "Previous FDIC Certificate Number"
440
+ mergeability: not_mergeable
441
+ domain_flavors: ["bank_structure_event"]
442
+ examples: ["90054", "90465", "90337"]
443
+ passive: true
444
+
339
445
  relationships:
340
446
  - name: "is_located_at"
341
447
  description: "An entity is located at, operates in, resides in, is headquartered in, was born in, visits, or died in a location"
@@ -347,10 +453,46 @@ relationships:
347
453
  passive: true
348
454
 
349
455
  - name: "acquired_by"
350
- description: "Links a failed institution to the acquiring institution that purchased its assets and/or assumed its deposits during FDIC resolution; derived from the BIDNAME field in the Failures API"
456
+ description: "Links a failed institution to the acquiring institution that purchased its assets and/or assumed its deposits during FDIC resolution; derived from the BIDNAME field in the Failures API. Coexists with the more general succeeded_by relationship and with bank_structure_event entities; the parallel representations are intentional"
351
457
  display_name: "Acquired By"
352
458
  mergeability: not_mergeable
353
459
  domain_flavors: ["organization"]
354
460
  target_flavors: ["organization"]
355
461
  examples: ["First Independence Bank acquired Metropolitan Capital B&T"]
356
462
  passive: true
463
+
464
+ - name: "succeeded_by"
465
+ description: "Links a depository institution that ceased to exist (via merger, consolidation, absorption, or FDIC resolution) directly to its successor institution. Sourced from the FDIC History API (fdic_history) whenever a 2-party event has both an outgoing party (OUT_CERT) and a distinct surviving/acquiring party (ACQ_CERT, falling back to SUR_CERT) AND the outgoing party actually disappeared (ORG_STAT_FLG=N). Provides a direct bank-to-bank lineage edge alongside the richer bank_structure_event entity model; both representations are emitted intentionally so consumers can pick whichever shape fits their query."
466
+ display_name: "Succeeded By"
467
+ mergeability: not_mergeable
468
+ domain_flavors: ["organization"]
469
+ target_flavors: ["organization"]
470
+ examples: ["Wachovia Bank of Delaware succeeded by Wells Fargo Bank, National Association", "Silicon Valley Bank succeeded by Deposit Insurance National Bank of Santa Clara"]
471
+ passive: true
472
+
473
+ - name: "subject_institution"
474
+ description: "Links a bank structure-change event to the FDIC-tracked institution this History API row is filed against (the row's primary CERT). For mergers/failures this is the disappearing party (also surfaced as outgoing_institution); for name changes, regulator changes, charter changes, voluntary closings, and new institutions, this is the affected institution itself."
475
+ display_name: "Subject Institution"
476
+ mergeability: not_mergeable
477
+ domain_flavors: ["bank_structure_event"]
478
+ target_flavors: ["organization"]
479
+ examples: ["FDIC TXN 2026007976 → Openland Credit Union (subject of legal-name change)"]
480
+ passive: true
481
+
482
+ - name: "outgoing_institution"
483
+ description: "Links a bank structure-change event to the FDIC-tracked institution that ceased to exist as a result of the event; derived from the OUT_CERT and OUT_INSTNAME fields of the History API and emitted only when populated"
484
+ display_name: "Outgoing Institution"
485
+ mergeability: not_mergeable
486
+ domain_flavors: ["bank_structure_event"]
487
+ target_flavors: ["organization"]
488
+ examples: ["FDIC TXN 2026008583 → Flint Hills Bank (disappearing party of unassisted merger)"]
489
+ passive: true
490
+
491
+ - name: "successor_institution"
492
+ description: "Links a bank structure-change event to the FDIC-tracked institution that took the outgoing party's deposits and/or assets following a merger, consolidation, absorption, or assisted resolution. Sourced preferentially from the ACQ_CERT/ACQ_INSTNAME fields of the History API (the conventional acquirer), falling back to SUR_CERT/SUR_INSTNAME (the legal-survivor designation) when only the survivor side is populated. Collapses the FDIC's split ACQ/SUR signals because empirically they agree on the CERT in 99.99% of 2-party events (only 3 of 23,114 disagree across 90 years of FI-level history, and those 3 are administrative same-name cert renumberings rather than genuinely distinct parties). Consumers that need the raw distinction can re-derive it from the source by inspecting the original History API row's ACQ_CERT vs SUR_CERT."
493
+ display_name: "Successor Institution"
494
+ mergeability: not_mergeable
495
+ domain_flavors: ["bank_structure_event"]
496
+ target_flavors: ["organization"]
497
+ examples: ["FDIC TXN 2026008583 → The Bennington State Bank (unassisted-merger acquirer)", "FDIC TXN 2026002845 → First Independence Bank (acquirer of Metropolitan Capital B&T after FDIC-assisted resolution)"]
498
+ passive: true
@@ -0,0 +1,240 @@
1
+ # Data Dictionary: SBA Loans (FOIA)
2
+
3
+ ## Source Overview
4
+
5
+ The SBA 7(a) & 504 FOIA dataset is published by the U.S. Small Business Administration, Office of Capital Access. It contains loan-level records for the two main SBA loan guarantee programs:
6
+
7
+ - **7(a) Loan Program** -- the SBA's primary and most flexible loan program, covering working capital, equipment, real estate, and debt refinancing. Maximum loan amount is $5 million.
8
+ - **504 Loan Program** -- provides long-term, fixed-rate financing for major fixed assets (real estate, heavy equipment) through Certified Development Companies (CDCs). Structured as a three-party arrangement: borrower (10%), CDC-backed SBA portion (40%), and a conventional third-party lender (50%).
9
+
10
+ The data is distributed as CSV files via the CKAN open data platform at `https://data.sba.gov/dataset/7-a-504-foia`. File URLs change with each quarterly update (contain an "as of" date); the CKAN package API is used to discover current resource URLs dynamically.
11
+
12
+ The dataset is updated quarterly, typically available one month after the quarter ends.
13
+
14
+ | Program | CSV Files | Approx Size |
15
+ |---------|-----------|-------------|
16
+ | 7(a) | 4 files by decade: FY1991-1999, FY2000-2009, FY2010-2019, FY2020-Present | ~780MB |
17
+ | 504 | 2 files: FY1991-2009, FY2010-Present | ~104MB |
18
+
19
+ Both programs share a common column subset (borrower info, approval details, NAICS codes, loan status). 7(a) adds bank/lender fields and interest rate details; 504 adds CDC and third-party lender fields.
20
+
21
+ | Pipeline | `Record.Source` |
22
+ |----------|----------------|
23
+ | All files | `sbaloans` |
24
+
25
+ ---
26
+
27
+ ## Entity Types
28
+
29
+ ### `financial_instrument`
30
+
31
+ An SBA-backed loan under the 7(a) or 504 program, identified by its location ID (a unique loan identifier assigned by the SBA).
32
+
33
+ - Primary key: Composite of program and location ID (e.g., `"7a_317954"`, `"504_188194"`)
34
+ - Entity resolver: named entity. Strong ID = `sba_loan_id`. Not mergeable across sources.
35
+
36
+ ### `organization`
37
+
38
+ A business, bank, CDC, or third-party lender involved in an SBA loan. Three roles:
39
+ - **Borrower** -- the small business receiving the loan
40
+ - **Bank/Primary Lender** (7(a)) -- the financial institution originating the loan, identified by FDIC certificate number when available
41
+ - **CDC** (504) -- the Certified Development Company administering the 504 portion
42
+ - **Third-Party Lender** (504) -- the conventional lender providing the remaining portion
43
+
44
+ - Primary key: Organization name (borrowers), or FDIC certificate number (banks)
45
+ - Entity resolver: named entity, mergeable. Banks with an FDIC certificate number use it as a strong ID (property `fdic_certificate_number`), enabling cross-source entity resolution with existing FDIC-sourced bank entities.
46
+
47
+ ### `location`
48
+
49
+ A geographic location representing the project county and state where the loan-funded activity takes place.
50
+
51
+ - Primary key: County + state combination (e.g., `"EAST BATON ROUGE, LA"`)
52
+ - Entity resolver: named entity, mergeable. Disambiguation via county name + state code.
53
+
54
+ ---
55
+
56
+ ## Properties
57
+
58
+ ### Loan Properties (`financial_instrument`)
59
+
60
+ #### Identity
61
+
62
+ * `sba_loan_id`
63
+ * Definition: Composite SBA loan identifier combining program and location ID.
64
+ * Examples: `"7a_317954"`, `"504_188194"`
65
+ * Derivation: Constructed from `program` (normalized) + `"_"` + `locationid` CSV column.
66
+
67
+ * `program`
68
+ * Definition: SBA loan program name.
69
+ * Examples: `"7a"`, `"504"`
70
+ * Derivation: `program` CSV column, normalized (leading/trailing whitespace trimmed, " 7A" becomes "7a").
71
+
72
+ #### Financial Terms
73
+
74
+ * `gross_approval`
75
+ * Definition: Total approved loan amount in dollars.
76
+ * Examples: `"450000"`, `"810000"`
77
+ * Derivation: `grossapproval` CSV column.
78
+
79
+ * `sba_guaranteed_approval`
80
+ * Definition: SBA-guaranteed portion of the loan amount in dollars. 7(a) only.
81
+ * Examples: `"337500"`
82
+ * Derivation: `sbaguaranteedapproval` CSV column. Empty for 504 loans.
83
+
84
+ * `initial_interest_rate`
85
+ * Definition: Initial interest rate of the loan as a percentage. 7(a) only.
86
+ * Examples: `"6"`, `"5.5"`
87
+ * Derivation: `initialinterestrate` CSV column.
88
+
89
+ * `interest_type`
90
+ * Definition: Whether the interest rate is fixed or variable. 7(a) only.
91
+ * Examples: `"Fixed"`, `"Variable"`
92
+ * Derivation: `fixedorvariableinterestind` CSV column, decoded: F=Fixed, V=Variable.
93
+
94
+ * `term_in_months`
95
+ * Definition: Loan term length in months.
96
+ * Examples: `"120"`, `"240"`, `"300"`
97
+ * Derivation: `terminmonths` CSV column.
98
+
99
+ * `third_party_dollars`
100
+ * Definition: Third-party lender contribution in dollars. 504 only.
101
+ * Examples: `"1334500"`
102
+ * Derivation: `thirdpartydollars` CSV column.
103
+
104
+ #### Dates
105
+
106
+ * `approval_date`
107
+ * Definition: Date the loan was approved.
108
+ * Examples: `"12/5/2020"`, `"10/2/2009"`
109
+ * Derivation: `approvaldate` CSV column, format M/D/YYYY.
110
+
111
+ * `approval_fiscal_year`
112
+ * Definition: Federal fiscal year of approval (Oct 1 - Sep 30).
113
+ * Examples: `"2021"`, `"2010"`
114
+ * Derivation: `approvalfy` CSV column.
115
+
116
+ * `first_disbursement_date`
117
+ * Definition: Date of first loan disbursement.
118
+ * Examples: `"1/1/2021"`, `"9/15/2010"`
119
+ * Derivation: `firstdisbursementdate` CSV column.
120
+
121
+ * `paid_in_full_date`
122
+ * Definition: Date the loan was paid in full.
123
+ * Derivation: `paidinfulldate` CSV column. Empty if loan is not paid off.
124
+
125
+ * `chargeoff_date`
126
+ * Definition: Date the loan was charged off.
127
+ * Derivation: `chargeoffdate` CSV column. Empty if loan has not been charged off.
128
+
129
+ #### Processing
130
+
131
+ * `processing_method`
132
+ * Definition: SBA processing method used for the loan.
133
+ * Examples: `"Preferred Lenders Program"`, `"504 Basic"`
134
+ * Derivation: `processingmethod` CSV column.
135
+
136
+ * `sub_program`
137
+ * Definition: SBA sub-program designation.
138
+ * Examples: `"Guaranty"`, `"Sec. 504 - Loan Guarantees - Private Sector Financed"`
139
+ * Derivation: `subprogram` CSV column.
140
+
141
+ #### Industry and Business
142
+
143
+ * `naics_code`
144
+ * Definition: North American Industry Classification System code for the borrower's business.
145
+ * Examples: `"531390"`, `"721110"`
146
+ * Derivation: `naicscode` CSV column.
147
+
148
+ * `naics_description`
149
+ * Definition: Description of the NAICS industry classification.
150
+ * Examples: `"Other Activities Related to Real Estate"`, `"Hotels (except Casino Hotels) and Motels"`
151
+ * Derivation: `naicsdescription` CSV column.
152
+
153
+ * `franchise_name`
154
+ * Definition: Name of the franchise if the borrower is a franchisee.
155
+ * Examples: `"CHOICE HOTELS INTERNATIONAL INC."`
156
+ * Derivation: `franchisename` CSV column. Empty if not a franchise.
157
+
158
+ * `business_type`
159
+ * Definition: Legal structure of the borrowing business.
160
+ * Examples: `"CORPORATION"`, `"LLC"`, `"PARTNERSHIP"`, `"INDIVIDUAL"`
161
+ * Derivation: `businesstype` CSV column.
162
+
163
+ * `business_age`
164
+ * Definition: Age category of the borrowing business at time of loan.
165
+ * Examples: `"Existing or more than 2 years old"`, `"New Business or 2 years or less"`, `"Less than 4 years old but at least 3"`
166
+ * Derivation: `businessage` CSV column.
167
+
168
+ #### Status
169
+
170
+ * `loan_status`
171
+ * Definition: Current status of the loan.
172
+ * Examples: `"LIQUID"` (active), `"P I F"` (paid in full), `"CHGOFF"` (charged off), `"EXEMPT"`, `"PREPAID IN FULL"`
173
+ * Derivation: `loanstatus` CSV column.
174
+
175
+ * `gross_chargeoff_amount`
176
+ * Definition: Gross charge-off amount in dollars.
177
+ * Examples: `"0"`, `"125000"`
178
+ * Derivation: `grosschargeoffamount` CSV column.
179
+
180
+ * `revolver_status`
181
+ * Definition: Whether the loan is a revolving line of credit. 7(a) only.
182
+ * Examples: `"TRUE"`, `"FALSE"`
183
+ * Derivation: `revolverstatus` CSV column.
184
+
185
+ * `jobs_supported`
186
+ * Definition: Number of jobs supported by the loan.
187
+ * Examples: `"9"`, `"250"`, `"0"`
188
+ * Derivation: `jobssupported` CSV column.
189
+
190
+ #### Geography
191
+
192
+ * `sba_district_office`
193
+ * Definition: SBA district office that processed the loan.
194
+ * Examples: `"LOUISIANA DISTRICT OFFICE"`, `"ILLINOIS DISTRICT OFFICE"`
195
+ * Derivation: `sbadistrictoffice` CSV column.
196
+
197
+ * `congressional_district`
198
+ * Definition: Congressional district of the project.
199
+ * Examples: `"6"`, `"13"`
200
+ * Derivation: `congressionaldistrict` CSV column.
201
+
202
+ ### Organization Properties
203
+
204
+ * `address`
205
+ * Definition: Physical address of the organization formatted as "street, city, state zip".
206
+ * Examples: `"11851 Wentling Ave, BATON ROUGE, LA 70816"`, `"1981 Marcus Avenue, LAKE SUCCESS, NY 11042"`
207
+ * Derivation: Formatted from borrower address fields (`borrstreet`/`borrcity`/`borrstate`/`borrzip`) for borrowers, bank fields (`bankstreet`/`bankcity`/`bankstate`/`bankzip`) for 7(a) banks, or CDC fields (`cdc_street`/`cdc_city`/`cdc_state`/`cdc_zip`) for 504 CDCs.
208
+
209
+ * `fdic_certificate_number`
210
+ * Definition: FDIC certificate number identifying a bank. Used as a strong ID for entity resolution with FDIC-sourced bank entities.
211
+ * Examples: `"59345"`
212
+ * Derivation: `bankfdicnumber` CSV column. Only present for 7(a) bank entities.
213
+ * Note: Enables cross-source entity resolution with the FDIC dataset (`fdic` source), which also uses `fdic_certificate_number` as a strong ID property on bank organizations.
214
+
215
+ * `ncua_number`
216
+ * Definition: NCUA charter number identifying a credit union.
217
+ * Derivation: `bankncuanumber` CSV column. Only present for 7(a) entities where the lender is a credit union.
218
+ * Note: Sparse -- most lenders are banks, not credit unions.
219
+
220
+ ---
221
+
222
+ ## Entity Relationships
223
+
224
+ ```
225
+ organization (borrower) ──[borrower_of]──→ financial_instrument (loan)
226
+ organization (bank/CDC) ──[lender_of]────→ financial_instrument (loan) attr: lender_role=primary|cdc
227
+ organization (third-party) ──[lender_of]────→ financial_instrument (loan) attr: lender_role=third_party
228
+ financial_instrument (loan) ──[is_located_at]─→ location (project county/state)
229
+ ```
230
+
231
+ ---
232
+
233
+ ## Attributes
234
+
235
+ * `lender_role` (on `lender_of` relationship)
236
+ * Definition: Role of the lending organization in the loan.
237
+ * Values: `"primary"` (7(a) bank), `"cdc"` (504 Certified Development Company), `"third_party"` (504 conventional third-party lender)
238
+ * Derivation: Set based on which organization record is being emitted and the loan program type.
239
+
240
+ ---