Coverage for apps/communications/seed_data.py: 100%

2 statements  

« prev     ^ index     » next       coverage.py v7.17.0, created at 2026-11-04 14:06 +0000

1MERGE_FIELDS = [ 

2 {"key": "borrowerFirstName", "label": "Borrower first name", "sample": "Alex"}, 

3 {"key": "borrowerName", "label": "Borrower full name", "sample": "Alex Rivera"}, 

4 {"key": "loanNumber", "label": "Loan number", "sample": "LMN-24101"}, 

5 {"key": "loanOfficer", "label": "Loan officer", "sample": "Timothy Reed"}, 

6 {"key": "loanOfficerPhone", "label": "LO phone", "sample": "(561) 555-0142"}, 

7 {"key": "loanAmount", "label": "Loan amount", "sample": "$400,000"}, 

8 {"key": "rate", "label": "Note rate", "sample": "6.625%"}, 

9 {"key": "stage", "label": "Current stage", "sample": "Approved w/ Cond."}, 

10 {"key": "propertyState", "label": "Property state", "sample": "FL"}, 

11 {"key": "company", "label": "Company", "sample": "Lumen Lending"}, 

12] 

13 

14SEED_TEMPLATES = [ 

15 { 

16 "name": "Application received", 

17 "channel": "email", 

18 "category": "Lifecycle", 

19 "trigger": "stage:APPLICATION_INTAKE", 

20 "subject": "We've received your application, {{borrowerFirstName}}", 

21 "body": "Hi {{borrowerFirstName}},\n\nThanks for applying with {{company}}. Your loan {{loanNumber}} is in our hands and your loan officer {{loanOfficer}} will reach out shortly.\n\nYou can track everything in your borrower portal.\n\n— {{loanOfficer}}, {{loanOfficerPhone}}", 

22 "system": True, 

23 "auto_send": True, 

24 }, 

25 { 

26 "name": "Pre-approval issued", 

27 "channel": "email", 

28 "category": "Lifecycle", 

29 "trigger": "stage:PREAPPROVED", 

30 "subject": "You're pre-approved 🎉", 

31 "body": "Great news {{borrowerFirstName}} — you're pre-approved on loan {{loanNumber}} for up to {{loanAmount}}. Let's find your home.\n\n{{loanOfficer}} · {{loanOfficerPhone}}", 

32 "system": True, 

33 "auto_send": True, 

34 }, 

35 { 

36 "name": "In qualification", 

37 "channel": "email", 

38 "category": "Lifecycle", 

39 "trigger": "stage:QUALIFICATION", 

40 "subject": "We're reviewing your file ({{loanNumber}})", 

41 "body": "Hi {{borrowerFirstName}},\n\nWe're verifying the details on loan {{loanNumber}} to get you fully qualified. We'll reach out if we need anything.\n\n— {{loanOfficer}}", 

42 "system": True, 

43 "auto_send": True, 

44 }, 

45 { 

46 "name": "File in setup", 

47 "channel": "email", 

48 "category": "Lifecycle", 

49 "trigger": "stage:LOAN_SETUP", 

50 "subject": "Your loan is being set up", 

51 "body": "Hi {{borrowerFirstName}},\n\nYour file {{loanNumber}} is now in processing and being prepared for disclosures. No action needed yet.\n\n— {{loanOfficer}}", 

52 "system": True, 

53 "auto_send": True, 

54 }, 

55 { 

56 "name": "Disclosures ready to sign", 

57 "channel": "email", 

58 "category": "Lifecycle", 

59 "trigger": "stage:DISCLOSURE_SENT", 

60 "subject": "Action needed: review & e-sign your disclosures", 

61 "body": "Hi {{borrowerFirstName}},\n\nYour initial disclosures for loan {{loanNumber}} are ready. Please review and e-sign them in your portal within 3 business days to keep things on track.\n\nThank you,\n{{loanOfficer}}", 

62 "system": True, 

63 "auto_send": True, 

64 }, 

65 { 

66 "name": "Submitted to underwriting", 

67 "channel": "email", 

68 "category": "Lifecycle", 

69 "trigger": "stage:UNDERWRITING_SUBMITTED", 

70 "subject": "Your loan is with underwriting", 

71 "body": "Hi {{borrowerFirstName}},\n\nGood progress — loan {{loanNumber}} is now in underwriting. We'll let you know as soon as we hear back.\n\n— {{loanOfficer}}", 

72 "system": True, 

73 "auto_send": True, 

74 }, 

75 { 

76 "name": "Conditional approval", 

77 "channel": "email", 

78 "category": "Lifecycle", 

79 "trigger": "stage:APPROVED_WITH_CONDITION", 

80 "subject": "Conditional approval — a few items needed", 

81 "body": "Hi {{borrowerFirstName}},\n\nLoan {{loanNumber}} is conditionally approved! The underwriter needs a few more documents. Please check your portal and upload them so we can clear your file.\n\n— {{loanOfficer}}", 

82 "system": True, 

83 "auto_send": True, 

84 }, 

85 { 

86 "name": "Clear to close", 

87 "channel": "email", 

88 "category": "Lifecycle", 

89 "trigger": "stage:CLEAR_TO_CLOSE", 

90 "subject": "You're Clear to Close! 🎉", 

91 "body": "Congratulations {{borrowerFirstName}}! Loan {{loanNumber}} is CLEAR TO CLOSE. We'll reach out to schedule your signing appointment.\n\n— {{loanOfficer}}, {{loanOfficerPhone}}", 

92 "system": True, 

93 "auto_send": True, 

94 }, 

95 { 

96 "name": "Loan funded", 

97 "channel": "email", 

98 "category": "Lifecycle", 

99 "trigger": "stage:LOAN_FUNDED", 

100 "subject": "Your loan has funded — congratulations! 🏡", 

101 "body": "Congratulations {{borrowerFirstName}}!\n\nLoan {{loanNumber}} has officially funded. It's been a pleasure working with you.\n\n— {{loanOfficer}}", 

102 "system": True, 

103 "auto_send": True, 

104 }, 

105 { 

106 "name": "Rate locked (SMS)", 

107 "channel": "sms", 

108 "category": "Milestones", 

109 "trigger": "loan:locked", 

110 "body": "{{borrowerFirstName}}, your rate is locked at {{rate}} on loan {{loanNumber}}. — {{loanOfficer}}, {{company}}", 

111 "system": True, 

112 "auto_send": True, 

113 }, 

114 { 

115 "name": "Clear to close (SMS)", 

116 "channel": "sms", 

117 "category": "Lifecycle", 

118 "trigger": "stage:CLEAR_TO_CLOSE", 

119 "body": "Great news {{borrowerFirstName}} — loan {{loanNumber}} is Clear to Close! We'll call to schedule signing. — {{company}}", 

120 "system": True, 

121 "auto_send": True, 

122 }, 

123]