Complete end-to-end data flow visualization showing how a borrower's name travels from origination in DigiFi through the entire PorchPass Medallion Architecture
Dealer employee enters borrower information into the loan application form. The first name "Jane" is captured in the DigiFi borrower object.
DigiFi fires a webhook to PorchPass API when the application is created. The webhook contains the full application payload including borrower data.
The REST API immediately pushes the webhook payload to a Pub/Sub queue. This ensures reliability - if processing fails, the message can be retried.
A Go consumer service pulls messages from Pub/Sub. First action: archive the raw JSON to GCS Bronze bucket before any processing.
📦 GCS: webhooks/digifi/
Consumer parses the webhook JSON, encrypts PII fields using AES-256,
and inserts into the borrowers table.
🗄️ borrowers pii_first_name pii_last_name 🔐 PII ENCRYPTED
The borrower record links to the application via application_id FK.
When the loan funds, a loan_borrowers junction record is created.
🗄️ applications 🗄️ loan_borrowers 🗄️ loans
Data replicates to the read replica within seconds. BI tools and Airflow read from the replica to protect primary database performance.
Replication lag: < 1 second
Daily at 7:00 AM, Airflow extracts borrower data from Postgres read replica, decrypts PII (within secure boundary), and loads to BigQuery.
Borrower name lands in BigQuery Gold layer, joined with loan data to create denormalized views for reporting.
📊 gold.borrowers 📊 gold.dim_loan_performance 📊 gold.investor_loan_tape
Business users access borrower data through Superset dashboards. The borrower name appears in loan performance reports, investor tapes, and operational dashboards.