Real estate technology companies handle some of the most legally sensitive data flows in any software vertical: mortgage disclosures with sub-72-hour clocks, anti-kickback prohibitions that reach into referral fee structures, fair housing obligations that attach to algorithmic tenant-screening outputs, and anti-money-laundering beneficial ownership rules that FinCEN is now extending to all-cash residential transactions.
The cloud iPaaS problem is acute here. When a MORTGAGE_TECH_SAAS vendor routes a Loan Estimate PDF through Zapier to trigger a CRM update, that PDF contains borrower PII subject to RESPA and TRID. When a PROPERTY_MANAGEMENT_SAAS vendor uses Make.com to automate tenant screening decisions, the decisioning data becomes subject to Fair Housing Act §3604 disparate-impact analysis — and the vendor's cloud automation log is discoverable in HUD complaints. When a TITLE_ESCROW_TECH platform routes FinCEN beneficial ownership verification data through an iPaaS workflow, that data leaves the controlled GLBA/BSA environment.
Self-hosted n8n deployed inside your VPC keeps all of this inside your compliance boundary. Here are five production-ready workflows every PropTech/CRETech SaaS vendor should run.
Tier Segmentation: Know Your Compliance Footprint
{
"name": "PropTech Tier Classification",
"nodes": [
{
"type": "n8n-nodes-base.webhook",
"name": "Customer Signed Up",
"parameters": {
"path": "proptech-signup",
"httpMethod": "POST"
}
},
{
"type": "n8n-nodes-base.code",
"name": "Classify Tier + Flags",
"parameters": {
"jsCode": "\nconst t = $json.tier || 'PROPTECH_STARTUP';\nconst flags = {\n MLS_PLATFORM_SAAS: ['RESPA_SECTION_9_IDX_DATA', 'FAIR_HOUSING_ACT_LISTING_DISPLAY', 'SOC2_REQUIRED'],\n MORTGAGE_TECH_SAAS: ['RESPA_APPLICABLE', 'TRID_SUBJECT', 'CFPB_HMDA_REPORTER', 'RESPA_SECTION_8_KICKBACK_RISK', 'SOC2_REQUIRED', 'GLBA_APPLICABLE'],\n PROPERTY_MANAGEMENT_SAAS: ['FAIR_HOUSING_ACT_SUBJECT', 'RESPA_SECTION_9_REQUIRED_PROVIDER', 'SOC2_REQUIRED'],\n TITLE_ESCROW_TECH: ['RESPA_SECTION_8_FEE_PROHIBITION', 'FINCEN_CDD_SUBJECT', 'FIRPTA_WITHHOLDING_REQUIRED', 'SOC2_REQUIRED', 'GLBA_APPLICABLE'],\n COMMERCIAL_CRE_SAAS: ['FINCEN_CDD_SUBJECT', 'FINCEN_GTO_SUBJECT', 'SEC_REG_D_IF_SYNDICATION', 'SOC2_REQUIRED'],\n PROPTECH_MARKETPLACE: ['FAIR_HOUSING_ACT_SUBJECT', 'RESPA_SECTION_8_KICKBACK_RISK', 'FINCEN_AML_IF_PAYMENTS', 'SOC2_REQUIRED'],\n PROPTECH_STARTUP: ['SOC2_REQUIRED', 'RESPA_REVIEW_NEEDED', 'FAIR_HOUSING_REVIEW_NEEDED']\n};\nreturn [{json: {tier: t, flags: flags[t] || flags['PROPTECH_STARTUP'], customer_email: $json.email, company: $json.company}}];\n"
}
},
{
"type": "n8n-nodes-base.switch",
"name": "Route by Tier",
"parameters": {
"mode": "rules",
"rules": {
"values": [
{
"conditions": {
"string": [
{
"value1": "={{$json.tier}}",
"operation": "equals",
"value2": "MORTGAGE_TECH_SAAS"
}
]
},
"outputKey": "mortgage"
},
{
"conditions": {
"string": [
{
"value1": "={{$json.tier}}",
"operation": "equals",
"value2": "TITLE_ESCROW_TECH"
}
]
},
"outputKey": "title"
},
{
"conditions": {
"string": [
{
"value1": "={{$json.tier}}",
"operation": "equals",
"value2": "PROPERTY_MANAGEMENT_SAAS"
}
]
},
"outputKey": "propman"
},
{
"conditions": {
"string": [
{
"value1": "={{$json.tier}}",
"operation": "equals",
"value2": "COMMERCIAL_CRE_SAAS"
}
]
},
"outputKey": "cre"
},
{
"conditions": {
"string": [
{
"value1": "={{$json.tier}}",
"operation": "equals",
"value2": "MLS_PLATFORM_SAAS"
}
]
},
"outputKey": "mls"
}
]
}
}
},
{
"type": "n8n-nodes-base.gmail",
"name": "MORTGAGE_TECH Welcome \u2014 TRID + RESPA \u00a78",
"parameters": {
"subject": "Welcome to [Your Platform] \u2014 TRID, RESPA \u00a78, and Your Compliance Architecture",
"message": "Your platform processes Loan Estimates and Closing Disclosures subject to TRID's 3-business-day delivery windows (12 CFR \u00a71026.19). Any cloud automation node that touches these documents must be inside your GLBA-compliant environment. We deploy entirely inside your VPC. Your CFPB examination file starts here.",
"toList": "={{$json.customer_email}}"
}
},
{
"type": "n8n-nodes-base.gmail",
"name": "TITLE_ESCROW Welcome \u2014 RESPA \u00a78 + FinCEN CDD",
"parameters": {
"subject": "Welcome \u2014 RESPA \u00a78 Fee Prohibition and FinCEN CDD Beneficial Ownership Architecture",
"message": "Title and escrow platforms carry dual exposure: RESPA \u00a78(a) prohibits kickbacks for referrals of settlement services (12 USC \u00a72607), and FinCEN's CDD Rule (31 CFR \u00a71010.230) requires beneficial ownership verification for legal entity customers. Routing either data set through a cloud iPaaS creates a BSA/AML audit trail outside your controlled environment. Your compliance architecture overview is attached.",
"toList": "={{$json.customer_email}}"
}
},
{
"type": "n8n-nodes-base.gmail",
"name": "PROPERTY_MGMT Welcome \u2014 Fair Housing Act \u00a73604",
"parameters": {
"subject": "Welcome \u2014 Fair Housing Act \u00a73604 and Algorithmic Tenant Screening Compliance",
"message": "Property management platforms that automate tenant screening decisions are subject to HUD's fair lending guidance on disparate-impact liability under Fair Housing Act \u00a73604. Automated screening workflows must be auditable. Our self-hosted deployment keeps your decisioning logs inside your environment \u2014 HUD complaints cannot reach a subpoena into a third-party cloud vendor for your screening data.",
"toList": "={{$json.customer_email}}"
}
},
{
"type": "n8n-nodes-base.gmail",
"name": "COMMERCIAL_CRE Welcome \u2014 FinCEN CDD + GTO",
"parameters": {
"subject": "Welcome \u2014 FinCEN CDD Beneficial Ownership and Geographic Targeting Orders for CRE",
"message": "Commercial real estate platforms handling syndication or all-cash transactions are subject to FinCEN's CDD Rule beneficial ownership verification (31 CFR \u00a71010.230) and FinCEN Geographic Targeting Orders (GTOs) for cash transactions above $300K in covered MSAs. Routing KYC/CDD data through cloud automation creates BSA audit exposure. Our architecture keeps beneficial ownership data inside your BSA-compliant environment.",
"toList": "={{$json.customer_email}}"
}
},
{
"type": "n8n-nodes-base.gmail",
"name": "MLS/Startup Welcome",
"parameters": {
"subject": "Welcome to [Your Platform]",
"message": "Thanks for joining. Your compliance review checklist \u2014 covering RESPA applicability, Fair Housing Act listing-display obligations, and state real estate licensing requirements \u2014 is included in your onboarding pack.",
"toList": "={{$json.customer_email}}"
}
}
]
}
Workflow 1: RESPA/TRID/HMDA/Fair Housing Deadline Tracker
RESPA and TRID have some of the shortest notification windows in any regulated industry — the TRID Loan Estimate must be delivered within 3 business days of application, and the Closing Disclosure within 3 business days of consummation. Missing these clocks triggers CFPB enforcement action and private right of action.
{
"name": "PropTech Compliance Deadline Tracker",
"nodes": [
{
"type": "n8n-nodes-base.scheduleTrigger",
"name": "Daily 07:00 UTC",
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 7 * * *"
}
]
}
}
},
{
"type": "n8n-nodes-base.googleSheets",
"name": "Read Compliance Deadlines",
"parameters": {
"operation": "readRows",
"sheetId": "YOUR_SHEET_ID",
"range": "Deadlines!A2:G"
}
},
{
"type": "n8n-nodes-base.code",
"name": "Classify Urgency",
"parameters": {
"jsCode": "\nconst today = new Date();\nconst results = [];\nfor (const row of $input.all()) {\n const d = row.json;\n const due = new Date(d.due_date);\n const days = Math.ceil((due - today) / 86400000);\n let urgency = 'WATCH';\n if (days < 0) urgency = 'OVERDUE';\n else if (days <= 1) urgency = 'CRITICAL'; // TRID 3-business-day clock\n else if (days <= 3) urgency = 'URGENT';\n else if (days <= 7) urgency = 'WARNING';\n else if (days <= 14) urgency = 'NOTICE';\n results.push({json: {...d, days_remaining: days, urgency}});\n}\nreturn results.filter(r => ['OVERDUE','CRITICAL','URGENT','WARNING'].includes(r.json.urgency));\n"
}
},
{
"type": "n8n-nodes-base.slack",
"name": "Slack #compliance Alert",
"parameters": {
"channel": "#compliance",
"text": "={{$json.urgency}}: {{$json.deadline_type}} due in {{$json.days_remaining}}d \u2014 {{$json.owner}} \u2014 {{$json.notes}}"
}
}
],
"deadline_types": [
"TRID_LOAN_ESTIMATE_3_BUSINESS_DAY (12 CFR \u00a71026.19(e)(1)(iii))",
"TRID_CLOSING_DISCLOSURE_3_BUSINESS_DAY (12 CFR \u00a71026.19(f)(1)(ii))",
"RESPA_SECTION_8_ANNUAL_REVIEW (12 CFR Part 1024)",
"CFPB_HMDA_LAR_MARCH_1 (12 USC \u00a72803 \u2014 annual LAR submission)",
"CFPB_HMDA_QUARTERLY_REPORTER_45_DAY (large-volume reporters)",
"FINCEN_CDD_BENEFICIAL_OWNERSHIP_VERIFICATION (31 CFR \u00a71010.230)",
"FINCEN_GTO_SAR_30_DAY (FinCEN Geographic Targeting Order)",
"FIRPTA_WITHHOLDING_20_DAY (IRC \u00a71445 \u2014 Form 8288 filing)",
"FAIR_HOUSING_HUD_COMPLAINT_10_DAY (HUD investigation response)",
"EQUAL_CREDIT_OPPORTUNITY_ACT_30_DAY (ECOA adverse action notice)",
"SOC2_TYPE2_ANNUAL_RENEWAL",
"STATE_REAL_ESTATE_LICENSE_RENEWAL"
]
}
Why self-hosted matters: CFPB examination requests for HMDA LAR data require you to produce records within days. If your LAR data flows through a cloud iPaaS for transformation, the CFPB can issue a Civil Investigative Demand directly to that vendor — outside your legal team's control.
Workflow 2: PropTech API Health Monitor
TRID's 3-business-day delivery clock starts at application receipt. If your Loan Estimate generation endpoint is down at 11:59 PM on day 1, you're in violation by morning.
{
"name": "PropTech API Health Monitor",
"nodes": [
{
"type": "n8n-nodes-base.scheduleTrigger",
"name": "Every 10 Minutes",
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "*/10 * * * *"
}
]
}
}
},
{
"type": "n8n-nodes-base.code",
"name": "Define Endpoints",
"parameters": {
"jsCode": "\nreturn [\n {json: {name: 'loan_estimate_api', url: 'https://api.yourplatform.com/health/loan-estimate', standard: 'TRID 12 CFR \u00a71026.19 \u2014 3-biz-day delivery clock', tier: 'MORTGAGE_TECH_SAAS'}},\n {json: {name: 'hmda_lar_api', url: 'https://api.yourplatform.com/health/hmda', standard: 'CFPB HMDA 12 USC \u00a72803 \u2014 annual LAR submission', tier: 'MORTGAGE_TECH_SAAS'}},\n {json: {name: 'title_search_api', url: 'https://api.yourplatform.com/health/title', standard: 'RESPA \u00a78 settlement service delivery chain', tier: 'TITLE_ESCROW_TECH'}},\n {json: {name: 'beneficial_owner_api', url: 'https://api.yourplatform.com/health/cdd', standard: 'FinCEN CDD Rule 31 CFR \u00a71010.230', tier: 'TITLE_ESCROW_TECH'}},\n {json: {name: 'tenant_screening_api', url: 'https://api.yourplatform.com/health/screening', standard: 'Fair Housing Act \u00a73604 \u2014 disparate impact audit trail', tier: 'PROPERTY_MANAGEMENT_SAAS'}}\n];\n"
}
},
{
"type": "n8n-nodes-base.httpRequest",
"name": "Check Each Endpoint",
"parameters": {
"url": "={{$json.url}}",
"method": "GET",
"timeout": 5000,
"continueOnFail": true
}
},
{
"type": "n8n-nodes-base.if",
"name": "Non-200?",
"parameters": {
"conditions": {
"number": [
{
"value1": "={{$json.statusCode}}",
"operation": "notEqual",
"value2": 200
}
]
}
}
},
{
"type": "n8n-nodes-base.slack",
"name": "Alert #proptech-ops",
"parameters": {
"channel": "#proptech-ops",
"text": "ENDPOINT DOWN: {{$json.name}} \u2014 {{$json.standard}} \u2014 compliance clock risk if down >15min"
}
},
{
"type": "n8n-nodes-base.googleSheets",
"name": "Log to SLA Sheet",
"parameters": {
"operation": "appendRow",
"sheetId": "YOUR_SHEET_ID",
"columns": {
"mappingMode": "defineBelow",
"value": {
"ts": "={{$now}}",
"endpoint": "={{$json.name}}",
"status": "DOWN",
"standard": "={{$json.standard}}"
}
}
}
}
]
}
Workflow 3: RESPA §8 Kickback & Referral Fee Audit Pipeline
RESPA §8(a) (12 USC §2607) prohibits giving or accepting any fee, kickback, or thing of value for referrals of settlement service business. The CFPB has pursued enforcement actions against platforms that built referral-fee structures into their SaaS pricing — including vendor participation fees, preferred provider listings, and co-marketing arrangements.
{
"name": "RESPA Section 8 Referral Fee Audit",
"nodes": [
{
"type": "n8n-nodes-base.scheduleTrigger",
"name": "Weekly Monday 08:00",
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 8 * * 1"
}
]
}
}
},
{
"type": "n8n-nodes-base.googleSheets",
"name": "Read Partnership Agreements",
"parameters": {
"operation": "readRows",
"sheetId": "YOUR_SHEET_ID",
"range": "Partnerships!A2:H"
}
},
{
"type": "n8n-nodes-base.code",
"name": "Flag RESPA \u00a78 Risk Patterns",
"parameters": {
"jsCode": "\nconst HIGH_RISK_PATTERNS = [\n 'referral fee', 'referral payment', 'per-referral', 'per referral',\n 'preferred provider fee', 'placement fee', 'co-marketing payment',\n 'lead fee', 'closing fee split', 'settlement service fee'\n];\nconst results = [];\nfor (const row of $input.all()) {\n const agreement = (row.json.agreement_type || '').toLowerCase();\n const notes = (row.json.notes || '').toLowerCase();\n const combined = agreement + ' ' + notes;\n const matched = HIGH_RISK_PATTERNS.filter(p => combined.includes(p));\n if (matched.length > 0 || row.json.respa_reviewed !== 'YES') {\n results.push({json: {\n ...row.json,\n respa_risk_patterns: matched,\n needs_legal_review: matched.length > 0 || row.json.respa_reviewed !== 'YES'\n }});\n }\n}\nreturn results;\n"
}
},
{
"type": "n8n-nodes-base.if",
"name": "Has RESPA Risk?",
"parameters": {
"conditions": {
"boolean": [
{
"value1": "={{$json.needs_legal_review}}",
"operation": "equal",
"value2": true
}
]
}
}
},
{
"type": "n8n-nodes-base.slack",
"name": "Alert Legal #respa-review",
"parameters": {
"channel": "#respa-review",
"text": "RESPA \u00a78 REVIEW NEEDED: {{$json.partner_name}} \u2014 patterns flagged: {{$json.respa_risk_patterns}} \u2014 agreement date: {{$json.agreement_date}} \u2014 assign to GC by EOW"
}
},
{
"type": "n8n-nodes-base.googleSheets",
"name": "Log to Audit Sheet",
"parameters": {
"operation": "appendRow",
"sheetId": "YOUR_SHEET_ID",
"columns": {
"mappingMode": "defineBelow",
"value": {
"ts": "={{$now}}",
"partner": "={{$json.partner_name}}",
"patterns": "={{$json.respa_risk_patterns}}",
"status": "PENDING_LEGAL_REVIEW"
}
}
}
}
]
}
RESPA §8 enforcement note: The CFPB and state attorneys general have pursued actions against PropTech platforms that structured preferred-provider marketplace fees as "marketing" arrangements. The test is whether the fee is tied to referrals of settlement service business — not whether it's labeled a marketing fee.
Workflow 4: Fair Housing Act Disparate Impact Monitor
HUD's disparate impact rule (24 CFR Part 100) creates liability for housing practices that disproportionately exclude protected classes even without discriminatory intent. Automated tenant screening workflows that use algorithmic filters must be regularly audited for disparate impact — and the audit logs must be inside your controlled environment.
{
"name": "Fair Housing Disparate Impact Alert",
"nodes": [
{
"type": "n8n-nodes-base.scheduleTrigger",
"name": "Weekly Friday 17:00",
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 17 * * 5"
}
]
}
}
},
{
"type": "n8n-nodes-base.postgres",
"name": "Query Screening Outcomes",
"parameters": {
"query": "\nSELECT\n applicant_segment,\n COUNT(*) AS total_applications,\n SUM(CASE WHEN decision = 'APPROVED' THEN 1 ELSE 0 END) AS approved,\n SUM(CASE WHEN decision = 'DENIED' THEN 1 ELSE 0 END) AS denied,\n ROUND(100.0 * SUM(CASE WHEN decision = 'APPROVED' THEN 1 ELSE 0 END) / COUNT(*), 1) AS approval_rate_pct\nFROM tenant_screening_decisions\nWHERE created_at >= NOW() - INTERVAL '7 days'\nGROUP BY applicant_segment\nORDER BY approval_rate_pct\n"
}
},
{
"type": "n8n-nodes-base.code",
"name": "Calculate Adverse Impact Ratio",
"parameters": {
"jsCode": "\nconst rows = $input.all().map(r => r.json);\nif (rows.length < 2) return [{json: {alert: false, reason: 'insufficient data'}}];\nconst rates = rows.map(r => ({segment: r.applicant_segment, rate: parseFloat(r.approval_rate_pct)}));\nconst maxRate = Math.max(...rates.map(r => r.rate));\nconst results = [];\nfor (const r of rates) {\n const adverseImpactRatio = r.rate / maxRate;\n // 4/5ths rule: ratio < 0.80 triggers disparate impact scrutiny\n if (adverseImpactRatio < 0.80) {\n results.push({json: {\n ...r,\n max_approval_rate: maxRate,\n adverse_impact_ratio: adverseImpactRatio.toFixed(3),\n threshold: 0.80,\n fha_flag: 'DISPARATE_IMPACT_REVIEW_REQUIRED',\n regulation: 'Fair Housing Act \u00a73604 + HUD 24 CFR \u00a7100.500'\n }});\n }\n}\nreturn results.length > 0 ? results : [{json: {alert: false, message: 'No disparate impact flags this week'}}];\n"
}
},
{
"type": "n8n-nodes-base.if",
"name": "Flag Triggered?",
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json.fha_flag}}",
"operation": "equals",
"value2": "DISPARATE_IMPACT_REVIEW_REQUIRED"
}
]
}
}
},
{
"type": "n8n-nodes-base.slack",
"name": "Alert #fair-housing-compliance",
"parameters": {
"channel": "#fair-housing-compliance",
"text": "FHA DISPARATE IMPACT FLAG: segment={{$json.segment}} approval_rate={{$json.approval_rate_pct}}% vs max={{$json.max_approval_rate}}% \u2014 adverse impact ratio={{$json.adverse_impact_ratio}} (below 0.80 threshold) \u2014 HUD 24 CFR \u00a7100.500 review required by legal"
}
},
{
"type": "n8n-nodes-base.gmail",
"name": "Email General Counsel",
"parameters": {
"toList": "gc@yourcompany.com",
"subject": "Fair Housing Act Disparate Impact Review Required \u2014 Weekly Screening Audit",
"message": "Automated screening analysis flagged segment {{$json.segment}} with adverse impact ratio {{$json.adverse_impact_ratio}} (4/5ths rule threshold: 0.80). Full screening data for the period is in the compliance Postgres instance. Review required per FHA \u00a73604 + HUD \u00a7100.500 before next screening cycle."
}
}
]
}
Workflow 5: Weekly PropTech Compliance KPI Briefing
{
"name": "Weekly PropTech KPI Briefing",
"nodes": [
{
"type": "n8n-nodes-base.scheduleTrigger",
"name": "Monday 08:00 UTC",
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 8 * * 1"
}
]
}
}
},
{
"type": "n8n-nodes-base.postgres",
"name": "Query Platform KPIs",
"parameters": {
"query": "\nSELECT\n COUNT(DISTINCT customer_id) FILTER (WHERE tier = 'MORTGAGE_TECH_SAAS') AS mortgage_tech_accounts,\n COUNT(DISTINCT customer_id) FILTER (WHERE tier = 'TITLE_ESCROW_TECH') AS title_escrow_accounts,\n COUNT(DISTINCT customer_id) FILTER (WHERE tier = 'PROPERTY_MANAGEMENT_SAAS') AS propman_accounts,\n COUNT(DISTINCT customer_id) FILTER (WHERE tier = 'COMMERCIAL_CRE_SAAS') AS cre_accounts,\n SUM(mrr_usd) AS total_mrr_usd,\n COUNT(*) FILTER (WHERE trid_flag_open = TRUE) AS trid_open_flags,\n COUNT(*) FILTER (WHERE respa_review_pending = TRUE) AS respa_review_pending,\n COUNT(*) FILTER (WHERE fha_disparate_impact_flag = TRUE) AS fha_flags_open,\n COUNT(*) FILTER (WHERE fincen_cdd_pending = TRUE) AS fincen_cdd_pending,\n COUNT(*) FILTER (WHERE hmda_lar_status != 'CURRENT') AS hmda_lar_issues\nFROM proptech_accounts\nWHERE active = TRUE\n"
}
},
{
"type": "n8n-nodes-base.code",
"name": "Build HTML Email",
"parameters": {
"jsCode": "\nconst d = $input.first().json;\nconst html = `\n<h2>FlowKit PropTech/CRETech Weekly KPI \u2014 ${new Date().toISOString().split('T')[0]}</h2>\n<h3>Platform Accounts</h3>\n<table border=\"1\" cellpadding=\"6\">\n<tr><th>Tier</th><th>Accounts</th></tr>\n<tr><td>MORTGAGE_TECH_SAAS</td><td>${d.mortgage_tech_accounts}</td></tr>\n<tr><td>TITLE_ESCROW_TECH</td><td>${d.title_escrow_accounts}</td></tr>\n<tr><td>PROPERTY_MANAGEMENT_SAAS</td><td>${d.propman_accounts}</td></tr>\n<tr><td>COMMERCIAL_CRE_SAAS</td><td>${d.cre_accounts}</td></tr>\n<tr><td><strong>Total MRR</strong></td><td><strong>$${Number(d.total_mrr_usd).toLocaleString()}</strong></td></tr>\n</table>\n<h3>Compliance Open Items</h3>\n<table border=\"1\" cellpadding=\"6\">\n<tr><th>Item</th><th>Open</th></tr>\n<tr><td>TRID disclosure flags</td><td>${d.trid_open_flags}</td></tr>\n<tr><td>RESPA \u00a78 reviews pending</td><td>${d.respa_review_pending}</td></tr>\n<tr><td>FHA disparate impact flags</td><td>${d.fha_flags_open}</td></tr>\n<tr><td>FinCEN CDD pending</td><td>${d.fincen_cdd_pending}</td></tr>\n<tr><td>HMDA LAR issues</td><td>${d.hmda_lar_issues}</td></tr>\n</table>`;\nreturn [{json: {html, subject: 'PropTech/CRETech Weekly KPI \u2014 ' + new Date().toISOString().split('T')[0]}}];\n"
}
},
{
"type": "n8n-nodes-base.gmail",
"name": "Email CEO + BCC CCO",
"parameters": {
"toList": "ceo@yourcompany.com",
"ccList": "cco@yourcompany.com",
"subject": "={{$json.subject}}",
"message": "={{$json.html}}"
}
}
]
}
Self-Hosting: Why PropTech Data Cannot Transit Cloud iPaaS
| Data Type | Regulation | Cloud iPaaS Risk | Self-Hosted Fix |
|---|---|---|---|
| Loan Estimate / Closing Disclosure | TRID 12 CFR §1026.19 | CFPB CID to vendor | VPC-internal delivery pipeline |
| HMDA LAR applicant data | CFPB HMDA 12 USC §2803 | Examination subpoena | On-prem Postgres + n8n |
| RESPA §8 referral records | 12 USC §2607 / HUD 24 CFR Part 1024 | CFPB enforcement discovery | Audit log inside GRC boundary |
| Beneficial ownership / CDD | FinCEN 31 CFR §1010.230 | BSA/AML audit exposure | BSA-compliant environment |
| Tenant screening decisions | FHA §3604 / HUD §100.500 | HUD complaint discovery | Disparate impact audit log in VPC |
| FIRPTA withholding records | IRC §1445 / IRS Form 8288 | IRS examination subpoena | Tax document pipeline isolated |
The RESPA §8 enforcement argument is architectural: A preferred-provider marketplace that routes referral-fee payment records through Zapier creates an external audit trail the CFPB can reach via Civil Investigative Demand without notifying your legal team. Self-hosted n8n keeps the entire settlement-service payment audit log inside your GLBA-compliant environment.
Get These Workflows
All five workflows — Tier Onboarding Drip, Compliance Deadline Tracker, RESPA §8 Referral Audit, Fair Housing Disparate Impact Monitor, and Weekly KPI Briefing — are available as import-ready JSON at stripeai.gumroad.com.
The full FlowKit bundle (15 compliance-ready n8n workflow templates) is at stripeai.gumroad.com.
All workflow JSON is import-ready. Adjust sheet IDs, Postgres connection, Slack channel names, and Gmail addresses before deploying. Test with sample data before connecting to production systems. This is workflow engineering documentation, not legal advice — consult qualified real estate counsel for RESPA and Fair Housing Act compliance.
Top comments (0)