@yottagraph-app/data-model-skill 0.0.1 → 0.0.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yottagraph-app/data-model-skill",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Data model skill documentation for AI agents - entity types, properties, and schemas from Lovelace fetch sources",
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,184 @@
1
+ # Data Dictionary — BNY Arbitrage Rebate Analysis
2
+
3
+ ## Source Description
4
+
5
+ Interim Arbitrage Rebate Analysis reports prepared by BLX Group LLC for
6
+ municipal bond issuers. Each report computes the arbitrage rebate liability
7
+ under IRC Section 148 for a bond issue across a computation period. Reports
8
+ include transmittal letters, legal opinions, notes/assumptions, summary
9
+ schedules (rebate analysis, sources/uses of funds), and detailed per-fund
10
+ cash flow and investment data.
11
+
12
+ BNY (Bank of New York Mellon) serves as trustee. Orrick, Herrington &
13
+ Sutcliffe LLP provides the accompanying legal opinion.
14
+
15
+ ## Entity Types
16
+
17
+ ### bond
18
+
19
+ The municipal bond issue itself. One entity per unique bond across all reports.
20
+
21
+ | Property | Type | Description |
22
+ |----------|------|-------------|
23
+ | `client_matter_number` | string | **Strong ID.** BLX Group client matter number (e.g. `42182-2748`). Invariant across all reports for the same bond. |
24
+ | `bonds_name` | string | Full name of the bonds (e.g. "Multifamily Housing Revenue Refunding Bonds (Presidential Plaza at Newport Project-FHA Insured Mortgages) 1991 Series 1") |
25
+ | `par_amount` | string | Total par amount of the bond issue (e.g. "$142,235,000") |
26
+ | `dated_date` | string | Dated date of the bonds (e.g. "September 15, 1991") |
27
+ | `issue_date` | string | Issue date of the bonds (e.g. "October 17, 1991") |
28
+ | `bond_yield` | string | Arbitrage yield / allowable yield on investments (e.g. "7.420898%") |
29
+ | `computation_period` | string | The computation period for this report (e.g. "October 17, 1991 through October 16, 2024") |
30
+ | `rebate_computation_date` | string | End date of the computation period (e.g. "October 16, 2024") |
31
+ | `cumulative_rebate_liability` | string | Total cumulative rebate liability (e.g. "$0.00") |
32
+ | `rebate_payment_due` | string | Amount due to the US (e.g. "$0.00") |
33
+ | `return_on_investments` | string | Weighted return on investments since prior computation date (e.g. "6.447251%") |
34
+ | `shortfall_pct` | string | Shortfall percentage: return minus yield (e.g. "-0.973647%") |
35
+ | `actual_gross_earnings` | string | Total actual gross earnings across all funds |
36
+ | `allowable_gross_earnings` | string | Total allowable gross earnings at bond yield |
37
+ | `excess_earnings` | string | Total excess (negative = under yield) |
38
+ | `report_date` | string | Date the report was issued (e.g. "December 6, 2024") |
39
+
40
+ ### organization
41
+
42
+ Companies, agencies, law firms, and financial institutions named in the reports.
43
+
44
+ | Property | Type | Description |
45
+ |----------|------|-------------|
46
+ | `org_type` | string | Type: `government_agency`, `law_firm`, `financial_services`, `financial_institution`, `trust_company` |
47
+ | `description` | string | Role in the deal (e.g. "Issuer", "Trustee", "Bond Counsel") |
48
+
49
+ Expected entities:
50
+ - New Jersey Housing and Mortgage Finance Agency (Issuer)
51
+ - BLX Group LLC (Rebate Analyst)
52
+ - Orrick, Herrington & Sutcliffe LLP (Bond Counsel)
53
+ - BNY / Bank of New York Mellon (Trustee)
54
+ - Willdan Financial Services (Prior Report preparer)
55
+ - U.S. Department of the Treasury
56
+
57
+ ### fund_account
58
+
59
+ Bond proceeds sub-accounts tracked for rebate computation purposes.
60
+
61
+ | Property | Type | Description |
62
+ |----------|------|-------------|
63
+ | `fund_status` | string | Current status: `Active` or `Inactive` |
64
+ | `computation_date_valuation` | string | Fair market value at computation date |
65
+ | `gross_earnings` | string | Total gross earnings for the fund |
66
+ | `internal_rate_of_return` | string | IRR on the fund's investments |
67
+ | `excess_earnings` | string | Excess earnings (negative = below yield) |
68
+
69
+ Expected entities:
70
+ - Reserve I Account
71
+ - Reserve II Account
72
+ - Prior Rebate Liability
73
+ - Liquidity I Account
74
+ - Liquidity II Account
75
+
76
+ Additional fund accounts mentioned in Notes and Assumptions:
77
+ - Revenue Account (bona fide debt service fund, excluded from rebate)
78
+ - Escrow Fund
79
+ - Debt Service Reserve Account
80
+ - Construction Account
81
+
82
+ ### financial_instrument
83
+
84
+ Securities held within fund accounts (investments of bond proceeds).
85
+
86
+ | Property | Type | Description |
87
+ |----------|------|-------------|
88
+ | `par_amount` | string | Par amount of the security |
89
+ | `coupon` | string | Coupon rate (e.g. "7.000%" or "Variable") |
90
+ | `maturity_date` | string | Maturity date |
91
+ | `settlement_date` | string | Settlement date |
92
+ | `settlement_price` | string | Settlement price (e.g. "100.000") |
93
+ | `yield` | string | Yield on the security |
94
+ | `accreted_price` | string | Accreted price |
95
+ | `accrued_interest` | string | Accrued interest amount |
96
+ | `value` | string | Total value (par + accrued interest) |
97
+
98
+ Expected entities (scoped per fund via `entity_context_from_title`):
99
+ - Morgan IA (7% coupon, institutional investment)
100
+ - Federated MM (variable rate money market fund)
101
+
102
+ ### legal_agreement
103
+
104
+ Governing legal documents referenced in the reports.
105
+
106
+ | Property | Type | Description |
107
+ |----------|------|-------------|
108
+ | `agreement_type` | string | Type: `arbitrage_certificate`, `trust_indenture`, `engagement_letter` |
109
+ | `description` | string | Description of the agreement's role |
110
+
111
+ Expected entities:
112
+ - Certificate as to Arbitrage (Section 8, Section 21 referenced)
113
+ - Prior Report (Willdan Financial Services, December 17, 2008)
114
+
115
+ ### location
116
+
117
+ Addresses and jurisdictions.
118
+
119
+ Expected entities:
120
+ - Trenton, NJ (Issuer address)
121
+ - Dallas, TX (BLX Group address)
122
+ - New York, NY (Orrick address)
123
+ - State of New Jersey
124
+
125
+ ### person
126
+
127
+ Signatories, if extractable from signatures on transmittal letters and opinions.
128
+ May be sparse — many PDFs have illegible or absent signature blocks.
129
+
130
+ ## Relationships
131
+
132
+ | Relationship | Domain | Target | Description |
133
+ |-------------|--------|--------|-------------|
134
+ | `issuer_of` | organization | bond | Issuer issued the bonds |
135
+ | `trustee_of` | organization | bond | Trustee of the bond issue |
136
+ | `advisor_to` | organization | bond | BLX Group as rebate analyst; Orrick as bond counsel |
137
+ | `fund_of` | fund_account | bond | Fund account belongs to the bond issue |
138
+ | `holds_investment` | fund_account | financial_instrument | Fund holds a security as an investment |
139
+ | `party_to` | organization | legal_agreement | Entity is party to an agreement |
140
+ | `located_at` | organization | location | Organization's address |
141
+ | `predecessor_of` | legal_agreement | legal_agreement | Prior Report preceded current Report |
142
+
143
+ ## Events
144
+
145
+ | Event | Severity | Description |
146
+ |-------|----------|-------------|
147
+ | Rebate computation | medium | Periodic computation of arbitrage rebate liability |
148
+ | Bond issuance | high | Original issuance of the bonds (October 17, 1991) |
149
+ | Bond refunding | high | Refunding of prior 1985 Series F and G bonds |
150
+ | Fund valuation | medium | Valuation of fund accounts at computation date |
151
+ | Rebate payment determination | high | Determination that rebate payment is/isn't due |
152
+ | Report issuance | low | Issuance of this rebate analysis report |
153
+
154
+ ## Table Extraction
155
+
156
+ ### Schedule A — Summary of Rebate Analysis
157
+
158
+ Maps to `rebate_analysis` table config. Key column: Fund Description.
159
+ Each row becomes a `fund_account` entity with properties for status,
160
+ valuation, earnings, IRR, and excess earnings.
161
+
162
+ ### Schedule B — Sources & Uses of Funds
163
+
164
+ Maps to `sources_of_funds` and `uses_of_funds` table configs. Uses
165
+ `document_entity_from_title` mode to attach line items as properties
166
+ on the bond entity.
167
+
168
+ ### Security Holdings (Schedules C1, D1, F1, G1)
169
+
170
+ Maps to `security_tables` config. Key column: Security Type. Each
171
+ security becomes a `financial_instrument` entity scoped by fund
172
+ account title. Properties: par amount, coupon, maturity, yield, etc.
173
+
174
+ ### Cash Flow Tables (Schedules C2, D2, E1, F2, G2)
175
+
176
+ New table config needed. These are the largest tables — hundreds of rows
177
+ of deposit/withdrawal transactions for each fund account. Columns:
178
+ Date, Description, Cash Flow, Muni-Days/Computation Date, FV Factor
179
+ at bond yield, FV As Of at bond yield, FV Factor at IRR, FV As Of at IRR.
180
+
181
+ ## Citations
182
+
183
+ All extracted data should cite the specific schedule and page number
184
+ within the source PDF. The PDF filename serves as the document identifier.
@@ -0,0 +1,598 @@
1
+ # Dataset schema for BNY arbitrage rebate analysis reports.
2
+ #
3
+ # Extracts entities, properties, relationships, and events from Interim
4
+ # Arbitrage Rebate Analysis PDF documents prepared by BLX Group LLC for
5
+ # municipal bond issuers. BNY (Bank of New York Mellon) serves as trustee.
6
+ #
7
+ # Each report computes the arbitrage rebate liability under IRC Section 148
8
+ # for a bond issue across a computation period. Reports contain transmittal
9
+ # letters, legal opinions, notes/assumptions, summary schedules, and
10
+ # detailed per-fund cash flow and investment data.
11
+ #
12
+ # Uses the ml/extraction library with WithTableExtractor for combined
13
+ # entity + table extraction from PDF blobs via Gemini vision.
14
+
15
+
16
+ # These documents are structured compliance reports with a fixed format:
17
+ # transmittal letter, legal opinion, notes and assumptions, and financial
18
+ # schedules (A through G). Extract ONLY real-world entities — named
19
+ # organizations, the bond issue, fund accounts, and geographic locations.
20
+
21
+
22
+ # CRITICAL EXTRACTION RULES:
23
+
24
+ # - The bond issue is ONE financial_instrument entity. Use its full official
25
+ # name as stated on the cover page (e.g. "$142,235,000 New Jersey Housing
26
+ # and Mortgage Finance Agency Multifamily Housing Revenue Refunding Bonds
27
+ # (Presidential Plaza at Newport Project-FHA Insured Mortgages) 1991 Series 1").
28
+ # Do NOT extract the word "Bonds" alone as a separate entity.
29
+
30
+ # - Fund accounts are: Reserve I Account, Reserve II Account, Liquidity I
31
+ # Account, Liquidity II Account, Prior Rebate Liability, Revenue Account,
32
+ # Escrow Fund, Debt Service Reserve Account, Construction Account. Extract
33
+ # these by their proper names ONLY.
34
+
35
+ # - Do NOT extract any of the following as entities:
36
+ # * Schedule headings or titles (e.g. "Schedule A - Summary of Rebate
37
+ # Analysis", "Schedule C1 - Reserve I Account")
38
+ # * Table headers, column names, or row labels (e.g. "Fund Description",
39
+ # "Totals:", "Sources of Funds")
40
+ # * Document section names (e.g. "Transmittal Letter", "Notes and
41
+ # Assumptions", "Report", "engagement letter")
42
+ # * Amendment numbers (e.g. "AMENDMENT (NO. 002.00)")
43
+ # * Telex numbers, account numbers, or reference codes
44
+ # * The document title itself (e.g. "INTERIM ARBITRAGE REBATE ANALYSIS")
45
+ # * Legal citation references (e.g. "Section 5.6", "IRC Section 148")
46
+ # * Generic terms like "Prior Bonds" — use the full name instead
47
+
48
+ # - DO extract important related entities such as:
49
+ # * The issuer of the bond
50
+ # * related organizations such as real estate developers, important people, law firms, etc.
51
+ # * important events such as bond issuance, bond refunding, fund valuation, rebate payment determination, report issuance, etc.
52
+ # * important locations such as addresses, cities, and jurisdictions mentioned in the report.
53
+
54
+ # - IMPORTANT: Ensure that you extract important relationships between entities so that we are able
55
+ # to build a graph of the bond issue and its related entities.
56
+
57
+ # - Securities held in fund accounts (e.g. "Morgan IA", "Federated MM")
58
+ # are valid financial_instrument entities.
59
+
60
+ # - If this document is NOT an Interim Arbitrage Rebate Analysis (e.g. it
61
+ # is a Letter of Credit, trust indenture, or other document type), extract
62
+ # ZERO entities. Return an empty entities list.
63
+
64
+ name: "bny"
65
+ description: >-
66
+ Interim Arbitrage Rebate Analysis reports for municipal bond issues.
67
+ Documents contain bond details, fund account valuations, investment
68
+ holdings, cash flow tables, and rebate liability computations. Extract
69
+ the bond, its issuer, trustee, counsel, fund accounts, held securities,
70
+ and legal agreements. Each report is one observation of the bond's state
71
+ at a specific computation date.
72
+
73
+ extraction:
74
+ flavors: closed
75
+ properties: open
76
+ relationships: closed
77
+ attributes: closed
78
+ events: closed
79
+
80
+ # =============================================================================
81
+ # FLAVORS
82
+ # =============================================================================
83
+
84
+ flavors:
85
+ - name: "document"
86
+ description: "A source PDF document in the BNY dataset. Created programmatically, not by LLM extraction."
87
+ display_name: "Document"
88
+ mergeability: not_mergeable
89
+ strong_id_properties: ["bny_document_id"]
90
+ passive: true
91
+
92
+ - name: "organization"
93
+ description: "Companies, agencies, law firms, financial institutions, and government bodies named in the report."
94
+ display_name: "Organization"
95
+ mergeability: not_mergeable
96
+ examples:
97
+ - "New Jersey Housing and Mortgage Finance Agency"
98
+ - "BLX Group LLC"
99
+ - "Orrick, Herrington & Sutcliffe LLP"
100
+ - "BNY"
101
+ - "Lefrak Organization"
102
+
103
+ - name: "fund_account"
104
+ description: "Bond proceeds sub-accounts tracked for arbitrage rebate computation (e.g. reserve funds, liquidity accounts)."
105
+ display_name: "Fund Account"
106
+ mergeability: not_mergeable
107
+ examples:
108
+ - "Reserve I Account"
109
+ - "Reserve II Account"
110
+ - "Liquidity I Account"
111
+ - "Liquidity II Account"
112
+ - "Prior Rebate Liability"
113
+
114
+ - name: "financial_instrument"
115
+ description: "Bonds, notes, and securities. Includes the main bond issue being analyzed and securities held within fund accounts as investments of bond proceeds."
116
+ display_name: "Financial Instrument"
117
+ mergeability: not_mergeable
118
+ strong_id_properties: ["client_matter_number"]
119
+ examples:
120
+ - "New Jersey Housing and Mortgage Finance Agency Multifamily Housing Revenue Refunding Bonds 1991 Series 1"
121
+ - "Morgan IA"
122
+ - "Federated MM"
123
+
124
+ - name: "legal_agreement"
125
+ description: "Governing legal documents referenced in the report: arbitrage certificates, prior reports, engagement letters."
126
+ display_name: "Legal Agreement"
127
+ mergeability: not_mergeable
128
+ examples:
129
+ - "Certificate as to Arbitrage"
130
+ - "Prior Report"
131
+
132
+ - name: "location"
133
+ description: "Addresses, cities, and jurisdictions mentioned in the report."
134
+ display_name: "Location"
135
+ mergeability: not_mergeable
136
+ examples:
137
+ - "Trenton, NJ"
138
+ - "Dallas, TX"
139
+ - "New York, NY"
140
+
141
+ - name: "person"
142
+ description: "Officers, signatories, or other named individuals."
143
+ display_name: "Person"
144
+ mergeability: not_mergeable
145
+
146
+ # =============================================================================
147
+ # PROPERTIES
148
+ # =============================================================================
149
+
150
+ properties:
151
+ # --- Document-level properties ---
152
+
153
+ - name: "bny_document_id"
154
+ type: string
155
+ description: "Numeric document identifier from the PDF filename (e.g. 26889358, 5816087). Used as strong ID for document entities."
156
+ display_name: "BNY Document ID"
157
+ mergeability: not_mergeable
158
+ domain_flavors: ["document"]
159
+ passive: true
160
+
161
+ # --- Bond-level properties (document-level, one per report) ---
162
+
163
+ - name: "client_matter_number"
164
+ type: string
165
+ description: "BLX Group client matter number uniquely identifying this bond engagement (e.g. 42182-2748). Used as strong ID."
166
+ display_name: "Client Matter Number"
167
+ mergeability: not_mergeable
168
+ domain_flavors: ["financial_instrument"]
169
+ examples: ["42182-2748"]
170
+
171
+ - name: "bonds_name"
172
+ type: string
173
+ description: "The full name of the bond issue being analyzed in this report, exactly as it appears in the document title or cover page. This identifies which financial_instrument entity is the primary bond."
174
+ display_name: "Bonds Name"
175
+ mergeability: not_mergeable
176
+ domain_flavors: ["financial_instrument"]
177
+ extraction_config:
178
+ level: document
179
+ literal: {}
180
+
181
+ - name: "par_amount"
182
+ type: string
183
+ description: "Total par amount of the bond issue."
184
+ display_name: "Par Amount"
185
+ mergeability: not_mergeable
186
+ domain_flavors: ["financial_instrument"]
187
+ examples: ["$142,235,000"]
188
+
189
+ - name: "dated_date"
190
+ type: string
191
+ description: "Dated date of the bonds."
192
+ display_name: "Dated Date"
193
+ mergeability: not_mergeable
194
+ domain_flavors: ["financial_instrument"]
195
+
196
+ - name: "issue_date"
197
+ type: string
198
+ description: "Issue date of the bonds."
199
+ display_name: "Issue Date"
200
+ mergeability: not_mergeable
201
+ domain_flavors: ["financial_instrument"]
202
+
203
+ - name: "bond_yield"
204
+ type: string
205
+ description: "Arbitrage yield / allowable yield on investments (e.g. 7.420898%)."
206
+ display_name: "Bond Yield"
207
+ mergeability: not_mergeable
208
+ domain_flavors: ["financial_instrument"]
209
+
210
+ - name: "computation_period"
211
+ type: string
212
+ description: "The computation period covered by this report (e.g. October 17, 1991 through October 16, 2024)."
213
+ display_name: "Computation Period"
214
+ mergeability: not_mergeable
215
+ domain_flavors: ["financial_instrument"]
216
+
217
+ - name: "rebate_computation_date"
218
+ type: string
219
+ description: "End date of the computation period (e.g. October 16, 2024). This is the 'as of' date for all values in the report."
220
+ display_name: "Rebate Computation Date"
221
+ mergeability: not_mergeable
222
+ domain_flavors: ["financial_instrument"]
223
+ extraction_config:
224
+ level: document
225
+ literal: {}
226
+
227
+ - name: "cumulative_rebate_liability"
228
+ type: string
229
+ description: "Total cumulative rebate liability amount."
230
+ display_name: "Cumulative Rebate Liability"
231
+ mergeability: not_mergeable
232
+ domain_flavors: ["financial_instrument"]
233
+
234
+ - name: "rebate_payment_due"
235
+ type: string
236
+ description: "Rebate payment amount due to the United States."
237
+ display_name: "Rebate Payment Due"
238
+ mergeability: not_mergeable
239
+ domain_flavors: ["financial_instrument"]
240
+
241
+ - name: "return_on_investments"
242
+ type: string
243
+ description: "Weighted return on investments since the prior computation date."
244
+ display_name: "Return on Investments"
245
+ mergeability: not_mergeable
246
+ domain_flavors: ["financial_instrument"]
247
+
248
+ - name: "shortfall_pct"
249
+ type: string
250
+ description: "Shortfall percentage: return on investments minus bond yield."
251
+ display_name: "Shortfall Percentage"
252
+ mergeability: not_mergeable
253
+ domain_flavors: ["financial_instrument"]
254
+
255
+ - name: "actual_gross_earnings"
256
+ type: string
257
+ description: "Total actual gross earnings across all funds."
258
+ display_name: "Actual Gross Earnings"
259
+ mergeability: not_mergeable
260
+ domain_flavors: ["financial_instrument"]
261
+
262
+ - name: "allowable_gross_earnings"
263
+ type: string
264
+ description: "Total allowable gross earnings computed at the bond yield."
265
+ display_name: "Allowable Gross Earnings"
266
+ mergeability: not_mergeable
267
+ domain_flavors: ["financial_instrument"]
268
+
269
+ - name: "report_date"
270
+ type: string
271
+ description: "Date the report was issued."
272
+ display_name: "Report Date"
273
+ mergeability: not_mergeable
274
+ domain_flavors: ["financial_instrument"]
275
+
276
+ # --- Organization properties ---
277
+
278
+ - name: "org_type"
279
+ type: string
280
+ description: "Type of organization: government_agency, law_firm, financial_services, financial_institution, trust_company."
281
+ display_name: "Organization Type"
282
+ mergeability: not_mergeable
283
+ domain_flavors: ["organization"]
284
+
285
+ - name: "description"
286
+ type: string
287
+ description: "Short description or role of the entity in the deal."
288
+ display_name: "Description"
289
+ mergeability: not_mergeable
290
+ domain_flavors: ["organization", "legal_agreement"]
291
+
292
+ # --- Fund account properties (from Schedule A table extraction) ---
293
+
294
+ - name: "current_fund_status"
295
+ type: string
296
+ description: "Current status of the fund: Active or Inactive."
297
+ display_name: "Current Fund Status"
298
+ mergeability: not_mergeable
299
+ domain_flavors: ["fund_account"]
300
+
301
+ - name: "computation_date_valuation"
302
+ type: string
303
+ description: "Fair market value of the fund at the computation date."
304
+ display_name: "Computation Date Valuation"
305
+ mergeability: not_mergeable
306
+ domain_flavors: ["fund_account"]
307
+
308
+ - name: "gross_earnings"
309
+ type: string
310
+ description: "Total gross earnings for the fund."
311
+ display_name: "Gross Earnings"
312
+ mergeability: not_mergeable
313
+ domain_flavors: ["fund_account"]
314
+
315
+ - name: "internal_rate_of_return"
316
+ type: string
317
+ description: "Internal rate of return on the fund's investments."
318
+ display_name: "Internal Rate of Return"
319
+ mergeability: not_mergeable
320
+ domain_flavors: ["fund_account"]
321
+
322
+ - name: "excess_earnings"
323
+ type: string
324
+ description: "Excess earnings (negative means below yield). Applies to both the bond overall and individual fund accounts."
325
+ display_name: "Excess Earnings"
326
+ mergeability: not_mergeable
327
+ domain_flavors: ["financial_instrument", "fund_account"]
328
+
329
+ # --- Financial instrument properties (from security holdings tables) ---
330
+
331
+ - name: "instrument_par_amount"
332
+ type: string
333
+ description: "Par amount of the security held in a fund account."
334
+ display_name: "Par Amount"
335
+ mergeability: not_mergeable
336
+ domain_flavors: ["financial_instrument"]
337
+
338
+ - name: "coupon"
339
+ type: string
340
+ description: "Coupon rate of the security (e.g. 7.000% or Variable)."
341
+ display_name: "Coupon"
342
+ mergeability: not_mergeable
343
+ domain_flavors: ["financial_instrument"]
344
+
345
+ - name: "maturity_date"
346
+ type: string
347
+ description: "Maturity date of the security."
348
+ display_name: "Maturity Date"
349
+ mergeability: not_mergeable
350
+ domain_flavors: ["financial_instrument"]
351
+
352
+ - name: "settlement_date"
353
+ type: string
354
+ description: "Settlement date of the security."
355
+ display_name: "Settlement Date"
356
+ mergeability: not_mergeable
357
+ domain_flavors: ["financial_instrument"]
358
+
359
+ - name: "settlement_price"
360
+ type: string
361
+ description: "Settlement price of the security."
362
+ display_name: "Settlement Price"
363
+ mergeability: not_mergeable
364
+ domain_flavors: ["financial_instrument"]
365
+
366
+ - name: "yield"
367
+ type: string
368
+ description: "Yield on the security."
369
+ display_name: "Yield"
370
+ mergeability: not_mergeable
371
+ domain_flavors: ["financial_instrument"]
372
+
373
+ - name: "accreted_price"
374
+ type: string
375
+ description: "Accreted price of the security."
376
+ display_name: "Accreted Price"
377
+ mergeability: not_mergeable
378
+ domain_flavors: ["financial_instrument"]
379
+
380
+ - name: "accrued_interest"
381
+ type: string
382
+ description: "Accrued interest amount on the security."
383
+ display_name: "Accrued Interest"
384
+ mergeability: not_mergeable
385
+ domain_flavors: ["financial_instrument"]
386
+
387
+ - name: "value"
388
+ type: string
389
+ description: "Total value of the security (par + accrued interest)."
390
+ display_name: "Value"
391
+ mergeability: not_mergeable
392
+ domain_flavors: ["financial_instrument"]
393
+
394
+ # --- Legal agreement properties ---
395
+
396
+ - name: "agreement_type"
397
+ type: string
398
+ description: "Type of legal agreement: arbitrage_certificate, prior_report, engagement_letter."
399
+ display_name: "Agreement Type"
400
+ mergeability: not_mergeable
401
+ domain_flavors: ["legal_agreement"]
402
+
403
+ # --- Person properties ---
404
+
405
+ - name: "title"
406
+ type: string
407
+ description: "Person's title or role."
408
+ display_name: "Title"
409
+ mergeability: not_mergeable
410
+ domain_flavors: ["person"]
411
+
412
+ # =============================================================================
413
+ # RELATIONSHIPS
414
+ # =============================================================================
415
+
416
+ relationships:
417
+ - name: "appears_in"
418
+ description: "An entity appears in (is mentioned in) a source document."
419
+ display_name: "Appears In"
420
+ mergeability: not_mergeable
421
+ domain_flavors: ["organization", "fund_account", "financial_instrument", "legal_agreement", "location", "person"]
422
+ target_flavors: ["document"]
423
+ passive: true
424
+
425
+ - name: "issuer_of"
426
+ description: "An organization issued the bonds."
427
+ display_name: "Issuer Of"
428
+ mergeability: not_mergeable
429
+ domain_flavors: ["organization"]
430
+ target_flavors: ["financial_instrument", "legal_agreement"]
431
+
432
+ - name: "trustee_of"
433
+ description: "An organization serves as trustee of the bond issue."
434
+ display_name: "Trustee Of"
435
+ mergeability: not_mergeable
436
+ domain_flavors: ["organization"]
437
+ target_flavors: ["financial_instrument"]
438
+
439
+ - name: "advisor_to"
440
+ description: "An entity serves as advisor (rebate analyst, bond counsel) to another entity."
441
+ display_name: "Advisor To"
442
+ mergeability: not_mergeable
443
+ domain_flavors: ["organization", "person", "legal_agreement"]
444
+ target_flavors: ["financial_instrument", "legal_agreement", "organization"]
445
+
446
+ - name: "fund_of"
447
+ description: "A fund account belongs to the bond issue."
448
+ display_name: "Fund Of"
449
+ mergeability: not_mergeable
450
+ domain_flavors: ["fund_account"]
451
+ target_flavors: ["financial_instrument"]
452
+
453
+ - name: "holds_investment"
454
+ description: "A fund account holds a financial instrument as an investment."
455
+ display_name: "Holds Investment"
456
+ mergeability: not_mergeable
457
+ domain_flavors: ["fund_account"]
458
+ target_flavors: ["financial_instrument"]
459
+
460
+ - name: "party_to"
461
+ description: "An organization or person is a party to a legal agreement, bond issue, or letter of credit."
462
+ display_name: "Party To"
463
+ mergeability: not_mergeable
464
+ domain_flavors: ["organization", "person"]
465
+ target_flavors: ["legal_agreement", "financial_instrument"]
466
+
467
+ - name: "sponsor_of"
468
+ description: "An organization sponsors, develops, or is the principal behind a project, deal, fund, or another organization (e.g. real estate developer behind a housing project partnership)."
469
+ display_name: "Sponsor Of"
470
+ mergeability: not_mergeable
471
+ domain_flavors: ["organization"]
472
+ target_flavors: ["organization", "financial_instrument", "location"]
473
+
474
+ - name: "developer_of"
475
+ description: "An organization is the developer of a project, deal, fund, or another organization (e.g. real estate developer behind a housing project partnership)."
476
+ display_name: "Developer Of"
477
+ mergeability: not_mergeable
478
+ domain_flavors: ["organization"]
479
+ target_flavors: ["organization", "financial_instrument", "location"]
480
+
481
+ - name: "subsidiary_of"
482
+ description: "An organization is a subsidiary, affiliate, or controlled entity of another organization (e.g. a special purpose partnership controlled by a developer)."
483
+ display_name: "Subsidiary Of"
484
+ mergeability: not_mergeable
485
+ domain_flavors: ["organization"]
486
+ target_flavors: ["organization"]
487
+
488
+ - name: "borrower_of"
489
+ description: "An organization is the borrower, applicant, or account party on a financial instrument such as a letter of credit, loan, or bond issue."
490
+ display_name: "Borrower Of"
491
+ mergeability: not_mergeable
492
+ domain_flavors: ["organization"]
493
+ target_flavors: ["financial_instrument", "legal_agreement"]
494
+
495
+ - name: "beneficiary_of"
496
+ description: "An organization is the beneficiary of a financial instrument, letter of credit, or trust arrangement."
497
+ display_name: "Beneficiary Of"
498
+ mergeability: not_mergeable
499
+ domain_flavors: ["organization"]
500
+ target_flavors: ["financial_instrument", "legal_agreement"]
501
+
502
+ - name: "guarantor_of"
503
+ description: "An organization guarantees another organization's obligations or a financial instrument (e.g. letter of credit provider)."
504
+ display_name: "Guarantor Of"
505
+ mergeability: not_mergeable
506
+ domain_flavors: ["organization"]
507
+ target_flavors: ["organization", "financial_instrument"]
508
+
509
+ - name: "successor_to"
510
+ description: "An entity succeeded another entity in a role (e.g. successor trustee, bank name change, corporate merger)."
511
+ display_name: "Successor To"
512
+ mergeability: not_mergeable
513
+ domain_flavors: ["organization", "financial_instrument"]
514
+ target_flavors: ["organization", "financial_instrument"]
515
+
516
+ - name: "signatory_of"
517
+ description: "A person signed or executed a document or agreement on behalf of an organization."
518
+ display_name: "Signatory Of"
519
+ mergeability: not_mergeable
520
+ domain_flavors: ["person"]
521
+ target_flavors: ["legal_agreement", "financial_instrument", "organization"]
522
+
523
+ - name: "located_at"
524
+ description: "An entity is located at a geographic location."
525
+ display_name: "Located At"
526
+ mergeability: not_mergeable
527
+ domain_flavors: ["organization"]
528
+ target_flavors: ["location"]
529
+
530
+ - name: "predecessor_of"
531
+ description: "A prior report or agreement preceded the current one."
532
+ display_name: "Predecessor Of"
533
+ mergeability: not_mergeable
534
+ domain_flavors: ["legal_agreement", "financial_instrument", "organization"]
535
+ target_flavors: ["legal_agreement", "financial_instrument", "organization"]
536
+
537
+ - name: "head_of"
538
+ description: "A person is the head of an organization or location, e.g., President, CEO, or equivalent top leadership role"
539
+ display_name: "Head Of"
540
+ mergeability: not_mergeable
541
+ domain_flavors: ["person"]
542
+ target_flavors: ["organization", "location"]
543
+
544
+ - name: "is_director"
545
+ description: "A person is on the board of directors of an organization. Not to be used for heads of organizations."
546
+ display_name: "Director Of"
547
+ mergeability: not_mergeable
548
+ domain_flavors: ["person"]
549
+ target_flavors: ["organization"]
550
+
551
+ - name: "works_at"
552
+ description: "A person is employed by, or is a founder of an organization. Not to be used for heads or board members of organizations."
553
+ display_name: "Works At"
554
+ mergeability: not_mergeable
555
+ domain_flavors: ["person"]
556
+ target_flavors: ["organization"]
557
+
558
+
559
+ # =============================================================================
560
+ # EVENTS
561
+ # =============================================================================
562
+
563
+ events:
564
+ - name: "Rebate computation"
565
+ description: "Periodic computation of arbitrage rebate liability under IRC Section 148"
566
+ metadata: { severity: medium }
567
+
568
+ - name: "Bond issuance"
569
+ description: "Original issuance of the bonds"
570
+ metadata: { severity: high }
571
+
572
+ - name: "Bond refunding"
573
+ description: "Refunding or refinancing of prior bonds using proceeds from this issue"
574
+ metadata: { severity: high }
575
+
576
+ - name: "Fund valuation"
577
+ description: "Valuation of bond fund accounts at the computation date"
578
+ metadata: { severity: medium }
579
+
580
+ - name: "Rebate payment determination"
581
+ description: "Formal determination of the rebate payment amount owed to the IRS"
582
+ metadata: { severity: high }
583
+
584
+ - name: "Report issuance"
585
+ description: "Issuance of the rebate analysis report by BLX Group"
586
+ metadata: { severity: low }
587
+
588
+ - name: "LOC issuance"
589
+ description: "Issuance of a letter of credit providing credit enhancement or liquidity support"
590
+ metadata: { severity: high }
591
+
592
+ - name: "LOC amendment"
593
+ description: "Amendment to a letter of credit extending its validity, changing terms, or updating parties"
594
+ metadata: { severity: medium }
595
+
596
+ - name: "Party succession"
597
+ description: "Succession of a key deal party (e.g. trustee, bank, beneficiary) from one entity to another"
598
+ metadata: { severity: medium }
@@ -62,12 +62,14 @@ flavors:
62
62
  description: "A news article or press release being processed"
63
63
  display_name: "Article"
64
64
  mergeability: not_mergeable
65
+ strong_id_properties: ["newsdata_id"]
65
66
  passive: true
66
67
 
67
68
  - name: "publication"
68
69
  description: "A news publication or media outlet identified by its home URL"
69
70
  display_name: "Publication"
70
71
  mergeability: not_mergeable
72
+ strong_id_properties: ["homeUrl"]
71
73
  passive: true
72
74
 
73
75
  # =============================================================================
@@ -389,6 +391,14 @@ properties:
389
391
  domain_flavors: ["article"]
390
392
  passive: true
391
393
 
394
+ - name: "newsdata_id"
395
+ type: string
396
+ description: "Unique article identifier from the NewsData API"
397
+ display_name: "NewsData ID"
398
+ mergeability: not_mergeable
399
+ domain_flavors: ["article"]
400
+ passive: true
401
+
392
402
  - name: "title"
393
403
  type: string
394
404
  description: "Title of the entity"