TOE Engineering Presentation Series/Portal Architecture: Tasks, Documents & Messages

The Borrower Portal Drives Post-Application Fulfillment

Authenticated surface where borrowers complete tasks, upload documents, and communicate with lenders.

Every Portal Route Is Auth-Guarded and Pre-Loaded

Session check before render, parallel data fetch on entry.

ℹ️
Cached & parallel — loan and task data load together on entry, then every child route reads from cache.
Source Files
Guardsrc/routes/_auth.tsx
Auth Clientsrc/lib/auth-client.ts
Sessionsrc/lib/auth-session.ts
Loadersrc/tasks/loader.ts
Portal Pagesrc/tasks/portal-page.tsx
Task Routesrc/routes/_auth.tasks.$taskId.tsx
Statusessrc/lib/tasks.api.ts:80

Task Dispatch by Product Type

Each handler owns its UI, from file uploads to embedded vendor SDKs.

S3 Upload Pipeline
Select Files
Handler UI
Get Upload URL
Presigned from backend
Upload to S3
Direct to bucket
Confirm
Backend processes
Source Files
Identitysrc/tasks/government-id/
Incomesrc/tasks/income-documents/
Propertysrc/tasks/instant-pcr/
Employmentsrc/tasks/voie/voie.tsx
Liabilitiessrc/tasks/method/index.tsx
Dispatchersrc/tasks/task-detail.tsx
Uploadsrc/tasks/use-multiple-submit.ts
Presignborrower_tasks/s3.py
Submitborrower/views/document.py
Dispatchborrower_tasks/tasks.py

Documents and Messages

No realtime connection. Messages poll; documents refresh on demand.

ℹ️
Messages poll every 10s — documents refresh after user actions (upload, delete). No realtime connection needed.
Source Files
Documents UIsrc/documents/document-list.tsx
Documents APIsrc/lib/documents.api.ts
Documents Backendborrower/views/shared_documents.py
Messages UIsrc/messages/message-thread.tsx
Messages APIsrc/lib/messages.api.ts
Messages Backendborrower/views/file_chat.py
Unreadsrc/tasks/portal-page.tsx:50-54

End-to-End Lifecycle Across Three Systems

A task flows from lender order to decision re-evaluation.

ℹ️
Feedback loop — on task close, the portal invalidates cached loan + task data so the UI reflects the updated decision state immediately.
Source Files
Routeslc/app/borrower/routes.py
Authlc/app/borrower/decorator.py
Taskslc/app/borrower/views/tasks.py
Endpointssrc/lib/endpoints.ts
Invalidatesrc/tasks/task-detail.tsx:45-53
S3 + Textractborrower_tasks/s3.py

Portal Architecture at a Glance

How the borrower portal is structured.

Navigation

Keyboard Shortcuts

→ / Space
Next slide / reveal fragment
Previous slide / hide fragment
Home / End
First / last slide
F
Toggle fullscreen
?
Toggle this help
Esc
Close help
Comments