gemcap-be-common 1.3.8 → 1.3.10

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 (72) hide show
  1. package/db/new-summary.js +3 -3
  2. package/db/new-summary.ts +3 -3
  3. package/helpers/excel.helper.js +6 -2
  4. package/helpers/excel.helper.ts +19 -12
  5. package/package.json +1 -1
  6. package/public/emails/black_feather/broker-report.html +13 -0
  7. package/public/emails/black_feather/daily-updates.html +10 -0
  8. package/public/emails/black_feather/financial-external-on-stop.html +19 -0
  9. package/public/emails/black_feather/financial-external-until-stop_date.html +18 -0
  10. package/public/emails/black_feather/financial-internal.html +13 -0
  11. package/public/emails/black_feather/interest-statement-only-term.html +17 -0
  12. package/public/emails/black_feather/interest-statement.html +16 -0
  13. package/public/emails/black_feather/internal-inconsistent.html +13 -0
  14. package/public/emails/black_feather/loan-upload.html +9 -0
  15. package/public/emails/black_feather/notification.html +13 -0
  16. package/public/emails/black_feather/password-reset.html +29 -0
  17. package/public/emails/black_feather/plaid-reminder.html +24 -0
  18. package/public/emails/black_feather/prospect-form-reminder.html +16 -0
  19. package/public/emails/black_feather/prospect-form.html +17 -0
  20. package/public/emails/black_feather/signature-financial-only.html +48 -0
  21. package/public/emails/black_feather/signature-financial.html +55 -0
  22. package/public/emails/black_feather/signature-goat.html +21 -0
  23. package/public/emails/black_feather/signature.html +55 -0
  24. package/public/emails/black_feather/simple-mail.html +9 -0
  25. package/public/emails/broker-report.html +13 -0
  26. package/public/emails/daily-updates.html +10 -0
  27. package/public/emails/financial-external-on-stop.html +19 -0
  28. package/public/emails/financial-external-until-stop_date.html +18 -0
  29. package/public/emails/financial-internal.html +13 -0
  30. package/public/emails/gemcap/broker-report.html +13 -0
  31. package/public/emails/gemcap/daily-updates.html +10 -0
  32. package/public/emails/gemcap/financial-external-on-stop.html +19 -0
  33. package/public/emails/gemcap/financial-external-until-stop_date.html +18 -0
  34. package/public/emails/gemcap/financial-internal.html +13 -0
  35. package/public/emails/gemcap/interest-statement-only-term.html +17 -0
  36. package/public/emails/gemcap/interest-statement.html +18 -0
  37. package/public/emails/gemcap/internal-inconsistent.html +13 -0
  38. package/public/emails/gemcap/loan-upload.html +9 -0
  39. package/public/emails/gemcap/notification.html +13 -0
  40. package/public/emails/gemcap/password-reset.html +29 -0
  41. package/public/emails/gemcap/plaid-reminder.html +24 -0
  42. package/public/emails/gemcap/prospect-form-reminder.html +16 -0
  43. package/public/emails/gemcap/prospect-form.html +17 -0
  44. package/public/emails/gemcap/signature-financial-only.html +74 -0
  45. package/public/emails/gemcap/signature-financial.html +74 -0
  46. package/public/emails/gemcap/signature-goat.html +18 -0
  47. package/public/emails/gemcap/signature.html +74 -0
  48. package/public/emails/gemcap/simple-mail.html +9 -0
  49. package/public/emails/interest-statement-only-term.html +17 -0
  50. package/public/emails/interest-statement.html +18 -0
  51. package/public/emails/internal-inconsistent.html +13 -0
  52. package/public/emails/loan-upload.html +9 -0
  53. package/public/emails/notification.html +13 -0
  54. package/public/emails/password-reset.html +29 -0
  55. package/public/emails/plaid-reminder.html +24 -0
  56. package/public/emails/prospect-form-reminder.html +16 -0
  57. package/public/emails/prospect-form.html +17 -0
  58. package/public/emails/signature-financial-only.html +48 -0
  59. package/public/emails/signature-financial.html +55 -0
  60. package/public/emails/signature-goat.html +21 -0
  61. package/public/emails/signature.html +55 -0
  62. package/public/emails/simple-mail.html +9 -0
  63. package/public/images/black_feather/gradient.png +0 -0
  64. package/public/images/black_feather/logo.png +0 -0
  65. package/public/images/gemcap/gradient.png +0 -0
  66. package/public/images/gemcap/logo.png +0 -0
  67. package/public/images/plaid-reminder-instruction.png +0 -0
  68. package/public/plaid/connect.html +27 -0
  69. package/public/plaid/connect.js +64 -0
  70. package/services/loan-transactions.service.js +0 -2
  71. package/services/loan-transactions.service.ts +0 -2
  72. package/tsconfig.tsbuildinfo +1 -1
package/db/new-summary.js CHANGED
@@ -167,9 +167,9 @@ const styleRowData = (rows, style) => {
167
167
  return rows.map((row) => {
168
168
  return Object.entries(row).map(([key, v]) => {
169
169
  return {
170
- v,
171
- t: borrowerSummaryRowFields[key].t,
172
- z: borrowerSummaryRowFields[key].z,
170
+ v: v != null ? v : '',
171
+ t: v != null ? borrowerSummaryRowFields[key].t : 's',
172
+ z: v != null ? borrowerSummaryRowFields[key].z : undefined,
173
173
  ...(style ? { s: style } : {}),
174
174
  };
175
175
  });
package/db/new-summary.ts CHANGED
@@ -239,9 +239,9 @@ const styleRowData = (
239
239
  return rows.map((row) => {
240
240
  return Object.entries(row).map(([key, v]) => {
241
241
  return {
242
- v,
243
- t: borrowerSummaryRowFields[key].t,
244
- z: borrowerSummaryRowFields[key].z,
242
+ v: v != null ? v : '',
243
+ t: v != null ? borrowerSummaryRowFields[key].t : 's',
244
+ z: v != null ? borrowerSummaryRowFields[key].z : undefined,
245
245
  ...(style ? { s: style } : {}),
246
246
  } as IExcelJsCell;
247
247
  });
@@ -67,7 +67,7 @@ const convertDataToFile = async (dataToConvert) => {
67
67
  return XLSX.write(wb, { bookType: 'xlsx', type: 'buffer' });
68
68
  };
69
69
  exports.convertDataToFile = convertDataToFile;
70
- const convertDataToFileWithStyleOld = async (dataToConvert, options) => {
70
+ const checkData = (dataToConvert) => {
71
71
  for (const [sheetName, data] of Object.entries(dataToConvert)) {
72
72
  data.forEach((row, rowIndex) => {
73
73
  row.forEach((cell, colIndex) => {
@@ -75,11 +75,14 @@ const convertDataToFileWithStyleOld = async (dataToConvert, options) => {
75
75
  console.warn(`❌ Invalid numeric cell at ${sheetName} [${rowIndex}, ${colIndex}]:`, cell);
76
76
  }
77
77
  if (cell.v === Infinity) {
78
- console.log('❌ Infinity ', sheetName, `[${rowIndex}, ${colIndex}]:`, { v: cell.v });
78
+ console.warn('❌ Infinity ', sheetName, `[${rowIndex}, ${colIndex}]:`, { v: cell.v });
79
79
  }
80
80
  });
81
81
  });
82
82
  }
83
+ };
84
+ const convertDataToFileWithStyleOld = async (dataToConvert, options) => {
85
+ checkData(dataToConvert);
83
86
  const wb = XLSXStyle.utils.book_new();
84
87
  wb.Props = {
85
88
  Title: 'data',
@@ -106,6 +109,7 @@ const convertDataToFileWithStyleOld = async (dataToConvert, options) => {
106
109
  };
107
110
  exports.convertDataToFileWithStyleOld = convertDataToFileWithStyleOld;
108
111
  const convertDataToFileWithStyle = async (dataToConvert, options) => {
112
+ checkData(dataToConvert);
109
113
  const workbook = new exceljs_1.default.Workbook();
110
114
  workbook.creator = 'Black Feather';
111
115
  workbook.created = new Date();
@@ -59,6 +59,21 @@ export const convertDataToFile = async (dataToConvert: { [sheetName: string]: an
59
59
  return XLSX.write(wb, { bookType: 'xlsx', type: 'buffer' });
60
60
  };
61
61
 
62
+ const checkData = (dataToConvert: { [sheetName: string]: IExcelDataCellWithStyles[][] | IExcelJsCell[][] }) => {
63
+ for (const [sheetName, data] of Object.entries(dataToConvert)) {
64
+ data.forEach((row, rowIndex) => {
65
+ row.forEach((cell, colIndex) => {
66
+ if (cell.t === 'n' && typeof cell.v !== 'number') {
67
+ console.warn(`❌ Invalid numeric cell at ${sheetName} [${rowIndex}, ${colIndex}]:`, cell);
68
+ }
69
+ if (cell.v === Infinity) {
70
+ console.warn('❌ Infinity ',sheetName, `[${rowIndex}, ${colIndex}]:`, { v: cell.v });
71
+ }
72
+ });
73
+ });
74
+ }
75
+ }
76
+
62
77
  export const convertDataToFileWithStyleOld = async (
63
78
  dataToConvert: { [sheetName: string]: IExcelDataCellWithStyles[][] },
64
79
  options?: {
@@ -71,18 +86,7 @@ export const convertDataToFileWithStyleOld = async (
71
86
  },
72
87
  ) => {
73
88
 
74
- for (const [sheetName, data] of Object.entries(dataToConvert)) {
75
- data.forEach((row, rowIndex) => {
76
- row.forEach((cell, colIndex) => {
77
- if (cell.t === 'n' && typeof cell.v !== 'number') {
78
- console.warn(`❌ Invalid numeric cell at ${sheetName} [${rowIndex}, ${colIndex}]:`, cell);
79
- }
80
- if (cell.v === Infinity) {
81
- console.log('❌ Infinity ',sheetName, `[${rowIndex}, ${colIndex}]:`, { v: cell.v });
82
- }
83
- });
84
- });
85
- }
89
+ checkData(dataToConvert);
86
90
 
87
91
  const wb = XLSXStyle.utils.book_new();
88
92
  wb.Props = {
@@ -121,6 +125,9 @@ export const convertDataToFileWithStyle = async (
121
125
  };
122
126
  },
123
127
  ): Promise<Buffer> => {
128
+
129
+ checkData(dataToConvert);
130
+
124
131
  const workbook = new ExcelJS.Workbook();
125
132
  workbook.creator = 'Black Feather';
126
133
  workbook.created = new Date();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gemcap-be-common",
3
- "version": "1.3.8",
3
+ "version": "1.3.10",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -0,0 +1,13 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ <p>Dear ${BORROWER_NAME}</p>
5
+
6
+ <p>Attached is your commission statement for ${MONTH}. We aim to pay broker commissions by 12th of the month, but this is subject to collections and loan performance.</p>
7
+
8
+ <p>Thank you for your business and supporting the growth of Black Feather.</p>
9
+
10
+ ${signature}
11
+
12
+ </body>
13
+ </html>
@@ -0,0 +1,10 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ <p>New files have been uploaded:</p>
5
+ ${borrowerTables}
6
+
7
+ ${signature}
8
+
9
+ </body>
10
+ </html>
@@ -0,0 +1,19 @@
1
+ <html lang="en">
2
+ <body>
3
+ <p style="color: #ff0000">
4
+ PRIORITY
5
+ </p>
6
+ <p>Dear ${BORROWER_NAME}</p>
7
+ <p>
8
+ <b>We have sent you ${REMINDER_COUNTER} reminders regarding the unpaid statement.</b>
9
+ The outstanding balance on your statement of ${ORIGINAL_BALANCE} is ${AMOUNT_OUTSTANDING}.
10
+ </p>
11
+ <p style="color: #ff0000">
12
+ Black Feather reserves the right to stop funding all new draw requests. You are required to contact
13
+ portfolio@blackfeatherfunding.com immediately to discuss next steps.
14
+ </p>
15
+
16
+ ${signature}
17
+
18
+ </body>
19
+ </html>
@@ -0,0 +1,18 @@
1
+ <html lang="en">
2
+ <body>
3
+ <p>Dear ${BORROWER_NAME}</p>
4
+ <p><b>Reminder ${REMINDER_COUNTER}</b></p>
5
+ <p>
6
+ The outstanding balance on your statement of ${ORIGINAL_BALANCE} is ${AMOUNT_OUTSTANDING}. As previously communicated, to make it easier for you, we will settle this payment by adding it to your loan balance. We will do this transaction on 7th.
7
+ </p>
8
+ <p>
9
+ If you intend to pay by wire transfer please inform us prior to sending the payment and make the payment prior to the 7th.
10
+ </p>
11
+ <p>
12
+ Please remember to update your loan balance when submitting your next borrowing base to reflect this transaction.
13
+ </p>
14
+
15
+ ${signature}
16
+
17
+ </body>
18
+ </html>
@@ -0,0 +1,13 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ ${text}
5
+
6
+ <br>
7
+
8
+ ${borrowerTable}
9
+
10
+ ${signature}
11
+
12
+ </body>
13
+ </html>
@@ -0,0 +1,17 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ <p>Dear ${BORROWER_NAME}</p>
5
+
6
+ <p>Attached is your ${MONTH} INTEREST STATEMENT.</p>
7
+
8
+ <p>
9
+ To avoid penalty, please arrange transfer (Account Number: 80009785264, Routing: 322271627) by 7th.
10
+ Please confirm in writing to finance@blackfeatherfunding.com and portfolio@blackfeatherfunding.com how you intend to pay on or before the 6th.
11
+ We thank you for your business and the ongoing relationship.
12
+ </p>
13
+
14
+ ${signature}
15
+
16
+ </body>
17
+ </html>
@@ -0,0 +1,16 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ <p>Dear ${BORROWER_NAME}</p>
5
+
6
+ <p>Attached is your ${MONTH} INTEREST STATEMENT.</p>
7
+
8
+ <p>
9
+ To make settlement of the statement easier we will make payment through an automatic addition to the revolver loan balance. The loan balance will reflect the statement on or around the 1st. There is no option to pay by wire transfer.
10
+ We thank you for your business and the ongoing relationship.
11
+ </p>
12
+
13
+ ${signature}
14
+
15
+ </body>
16
+ </html>
@@ -0,0 +1,13 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ ${text}
5
+
6
+ <br>
7
+
8
+ ${borrowerTable}
9
+
10
+ ${signature}
11
+
12
+ </body>
13
+ </html>
@@ -0,0 +1,9 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ ${emailText}
5
+
6
+ ${signature}
7
+
8
+ </body>
9
+ </html>
@@ -0,0 +1,13 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ <p>To ${recipientName}</p>
5
+ <p>To ensure compliance under the loan agreements, the following documents are due from you:</p>
6
+ ${items}
7
+ ${hasPastDueItems}
8
+ <p>Please log into the portal (https://analytics.traxabl.com) to upload the above documents on or before the due date.</p>
9
+
10
+ ${signature}
11
+
12
+ </body>
13
+ </html>
@@ -0,0 +1,29 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ <p>Welcome to Black Feather!</p>
5
+ <p>
6
+ You are receiving this email because you have been added assigned responsibilities under the Black Feather loan for compliance items.
7
+ </p>
8
+ <p>
9
+ Going forward you will receive emails from the compliance department setting out the upcoming reporting needs.
10
+ </p>
11
+ <p>
12
+ Please click this <a href="https://analytics.traxabl.com">link</a> to start the initial set up of your account.
13
+ </p>
14
+
15
+ <table style="width:385.3pt;border-collapse:collapse" cellspacing="0" cellpadding="0" border="0">
16
+ <tr>
17
+ <th style="border: 2px solid black">login</th>
18
+ <th style="border: 2px solid black">temporary password</th>
19
+ </tr>
20
+ <tr>
21
+ <td style="border: 1px solid black; text-align: center">${username}</td>
22
+ <td style="border: 1px solid black; text-align: center">${password}</td>
23
+ </tr>
24
+ </table>
25
+
26
+ ${signature}
27
+
28
+ </body>
29
+ </html>
@@ -0,0 +1,24 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ <p>
5
+ Dear Borrower
6
+ </p>
7
+ <p>
8
+ Our records show that you have not logged into Plaid through our analytics tool. It is a requirement under the loan
9
+ agreements to provide online read-only access to the bank accounts – Plaid is the system used for this. Plaid only
10
+ grants Black Feather read only access to your bank account. This is typically a one-time set up.
11
+ </p>
12
+
13
+ <b>How to set Plaid access up</b>
14
+ <ol>
15
+ <li>Log into <a href="https://analytics.traxabl.com/">analytics.traxabl.com</a></li>
16
+ <li>Scroll to “Log into Plaid” (see picture)</li>
17
+ <img src="cid:plaid-instruction" />
18
+ <li>Click the log into plaid and follow the onscreen instructions.</li>
19
+ </ol>
20
+
21
+ ${signature}
22
+
23
+ </body>
24
+ </html>
@@ -0,0 +1,16 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ <p>Dear ${CONTACT_NAME}</p>
5
+
6
+ <p>You are requested to review your application${HAS_EMPTY_FIELDS}${FILE_INFO}.</p>
7
+
8
+ <a href="${LINK}">${LINK}</a>
9
+
10
+ <p>We look forward to receiving your due diligence information and working with you. Failure to provide due diligence on
11
+ a timely basis will result in delays to your loan application being processed.</p>
12
+
13
+ ${signature}
14
+
15
+ </body>
16
+ </html>
@@ -0,0 +1,17 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ <p>Dear ${CONTACT_NAME}</p>
5
+
6
+ <p>To advance your loan application, please complete the details in this link. The link is available for 10 days.
7
+ Anybody with this link can update the due diligence and application form during this period.</p>
8
+
9
+ <a href="${LINK}">${LINK}</a>
10
+
11
+ <p>We look forward to receiving your due diligence information and working with you. Failure to provide due diligence on
12
+ a timely basis will result in delays to your loan application being processed.</p>
13
+
14
+ ${signature}
15
+
16
+ </body>
17
+ </html>
@@ -0,0 +1,48 @@
1
+ <br>
2
+ <p>Regards,</p>
3
+ <br>
4
+
5
+ <table>
6
+ <tbody>
7
+ <tr>
8
+ <td>
9
+ <table>
10
+ <tbody>
11
+ <tr>
12
+ <td></td>
13
+ </tr>
14
+ <tr>
15
+ <td></td>
16
+ </tr>
17
+ <tr>
18
+ <td><span style="color: #321900; font-weight: bold">Finance Department</span></td>
19
+ </tr>
20
+ </tbody>
21
+ </table>
22
+
23
+ <table>
24
+ <tbody>
25
+ <tr>
26
+ <td><span style="color: #7d7f85; font-weight: bold">e:</span></td>
27
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;finance@blackfeatherfunding.com</td>
28
+ </tr>
29
+ </tbody>
30
+ </table>
31
+
32
+ <table>
33
+ <tbody>
34
+ <tr>
35
+ <td><span style="color: #7d7f85; font-weight: bold">The Lighter way to do Lending ™</span></td>
36
+ </tr>
37
+ <tr>
38
+ <td><span style="color: #7d7f85; font-weight: bold">2222 N Alamo St San Antonio, TX 78215</span></td>
39
+ </tr>
40
+ </tbody>
41
+ </table>
42
+ </td>
43
+ <td>
44
+ <img src="https://black-feather-public.s3.us-east-2.amazonaws.com/logo.png" alt="My Image">
45
+ </td>
46
+ </tr>
47
+ </tbody>
48
+ </table>
@@ -0,0 +1,55 @@
1
+ <br>
2
+ <p>Regards,</p>
3
+ <br>
4
+
5
+ <table>
6
+ <tbody>
7
+ <tr>
8
+ <td>
9
+ <table>
10
+ <tbody>
11
+ <tr>
12
+ <td><span style="color:#321900; font-weight: bold; font-size: 20.0pt">Scott Mills</span></td>
13
+ <td></td>
14
+ </tr>
15
+ <tr>
16
+ <td></td>
17
+ <td></td>
18
+ </tr>
19
+ <tr>
20
+ <td><span style="color: #321900; font-weight: bold">Chief Financial Officer</span></td>
21
+ <td></td>
22
+ </tr>
23
+ </tbody>
24
+ </table>
25
+
26
+ <table>
27
+ <tbody>
28
+ <tr>
29
+ <td><span style="color: #7d7f85; font-weight: bold">t:</span></td>
30
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;210.660.3326</td>
31
+ </tr>
32
+ <tr>
33
+ <td><span style="color: #7d7f85; font-weight: bold">e:</span></td>
34
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scott@blackfeatherfunding.com</td>
35
+ </tr>
36
+ </tbody>
37
+ </table>
38
+
39
+ <table>
40
+ <tbody>
41
+ <tr>
42
+ <td><span style="color: #7d7f85; font-weight: bold">The Lighter way to do Lending ™</span></td>
43
+ </tr>
44
+ <tr>
45
+ <td><span style="color: #7d7f85; font-weight: bold">2222 N Alamo St San Antonio, TX 78215</span></td>
46
+ </tr>
47
+ </tbody>
48
+ </table>
49
+ </td>
50
+ <td>
51
+ <img src="https://black-feather-public.s3.us-east-2.amazonaws.com/logo.png" alt="My Image">
52
+ </td>
53
+ </tr>
54
+ </tbody>
55
+ </table>
@@ -0,0 +1,21 @@
1
+ <br>
2
+
3
+ <table>
4
+ <tbody>
5
+ <tr>
6
+ <td>
7
+
8
+ <table>
9
+ <tbody>
10
+ <tr>
11
+ <td><span style="color: #7d7f85; font-weight: bold">The Lighter way to do Lending ™</span></td>
12
+ </tr>
13
+ </tbody>
14
+ </table>
15
+ </td>
16
+ <td>
17
+ <img src="https://black-feather-public.s3.us-east-2.amazonaws.com/logo.png" alt="My Image">
18
+ </td>
19
+ </tr>
20
+ </tbody>
21
+ </table>
@@ -0,0 +1,55 @@
1
+ <br>
2
+ <p>Regards,</p>
3
+ <br>
4
+
5
+ <table>
6
+ <tbody>
7
+ <tr>
8
+ <td>
9
+ <table>
10
+ <tbody>
11
+ <tr>
12
+ <td><span style="color:#321900; font-weight: bold; font-size: 20.0pt">Scott Mills</span></td>
13
+ <td></td>
14
+ </tr>
15
+ <tr>
16
+ <td></td>
17
+ <td></td>
18
+ </tr>
19
+ <tr>
20
+ <td><span style="color: #321900; font-weight: bold">Chief Compliance Officer</span></td>
21
+ <td></td>
22
+ </tr>
23
+ </tbody>
24
+ </table>
25
+
26
+ <table>
27
+ <tbody>
28
+ <tr>
29
+ <td><span style="color: #7d7f85; font-weight: bold">t:</span></td>
30
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;210.660.3326</td>
31
+ </tr>
32
+ <tr>
33
+ <td><span style="color: #7d7f85; font-weight: bold">e:</span></td>
34
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scott@blackfeatherfunding.com</td>
35
+ </tr>
36
+ </tbody>
37
+ </table>
38
+
39
+ <table>
40
+ <tbody>
41
+ <tr>
42
+ <td><span style="color: #7d7f85; font-weight: bold">The Lighter way to do Lending ™</span></td>
43
+ </tr>
44
+ <tr>
45
+ <td><span style="color: #7d7f85; font-weight: bold">2222 N Alamo St San Antonio, TX 78215</span></td>
46
+ </tr>
47
+ </tbody>
48
+ </table>
49
+ </td>
50
+ <td>
51
+ <img src="https://black-feather-public.s3.us-east-2.amazonaws.com/logo.png" alt="My Image">
52
+ </td>
53
+ </tr>
54
+ </tbody>
55
+ </table>
@@ -0,0 +1,9 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ ${emailText}
5
+
6
+ ${signature}
7
+
8
+ </body>
9
+ </html>
@@ -0,0 +1,13 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ <p>Dear ${BORROWER_NAME}</p>
5
+
6
+ <p>Attached is your commission statement for ${MONTH}. We aim to pay broker commissions by 12th of the month, but this is subject to collections and loan performance.</p>
7
+
8
+ <p>Thank you for your business and supporting the growth of Black Feather.</p>
9
+
10
+ ${signature}
11
+
12
+ </body>
13
+ </html>
@@ -0,0 +1,10 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ <p>New files have been uploaded:</p>
5
+ ${borrowerTables}
6
+
7
+ ${signature}
8
+
9
+ </body>
10
+ </html>
@@ -0,0 +1,19 @@
1
+ <html lang="en">
2
+ <body>
3
+ <p style="color: #ff0000">
4
+ PRIORITY
5
+ </p>
6
+ <p>Dear ${BORROWER_NAME}</p>
7
+ <p>
8
+ <b>We have sent you ${REMINDER_COUNTER} reminders regarding the unpaid statement.</b>
9
+ The outstanding balance on your statement of ${ORIGINAL_BALANCE} is ${AMOUNT_OUTSTANDING}.
10
+ </p>
11
+ <p style="color: #ff0000">
12
+ Black Feather reserves the right to stop funding all new draw requests. You are required to contact
13
+ portfolio@blackfeatherfunding.com immediately to discuss next steps.
14
+ </p>
15
+
16
+ ${signature}
17
+
18
+ </body>
19
+ </html>
@@ -0,0 +1,18 @@
1
+ <html lang="en">
2
+ <body>
3
+ <p>Dear ${BORROWER_NAME}</p>
4
+ <p><b>Reminder ${REMINDER_COUNTER}</b></p>
5
+ <p>
6
+ The outstanding balance on your statement of ${ORIGINAL_BALANCE} is ${AMOUNT_OUTSTANDING}. As previously communicated, to make it easier for you, we will settle this payment by adding it to your loan balance. We will do this transaction on 7th.
7
+ </p>
8
+ <p>
9
+ If you intend to pay by wire transfer please inform us prior to sending the payment and make the payment prior to the 7th.
10
+ </p>
11
+ <p>
12
+ Please remember to update your loan balance when submitting your next borrowing base to reflect this transaction.
13
+ </p>
14
+
15
+ ${signature}
16
+
17
+ </body>
18
+ </html>
@@ -0,0 +1,13 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ ${text}
5
+
6
+ <br>
7
+
8
+ ${borrowerTable}
9
+
10
+ ${signature}
11
+
12
+ </body>
13
+ </html>
@@ -0,0 +1,13 @@
1
+ <html lang="en">
2
+ <body>
3
+
4
+ <p>Dear ${BORROWER_NAME}</p>
5
+
6
+ <p>Attached is your commission statement for ${MONTH}. We aim to pay broker commissions by 12th of the month, but this is subject to collections and loan performance.</p>
7
+
8
+ <p>Thank you for your business and supporting the growth of GemCap.</p>
9
+
10
+ ${signature}
11
+
12
+ </body>
13
+ </html>