Background watermark on available/history/credits, centered on content card
Adds <BackgroundWatermark> to the shared LeadsCreditLayout content card (behind the table/list, above it via z-index) so /leads/available, /leads/history, and /...
Add 6 persisted mortgage fields (debts, taxes, insurance, HOA, current payment, borrower age)
Org Background Watermark setting (None/Full/Simple)
Adds a "Background Watermark" radio field to Settings > Essential > behavior-labeling > Branding that controls which logo (or none) renders as the faint backgro...
Add bgWatermark branding field to Organization
Nullable String column (NONE|FULL|SIMPLE) driving the per-org background logo watermark preference; null resolves to FULL on the client. Merged in patchOrganiza...
Closing-forecast read passthrough (operator-gated, org from session)
Add "My Wallpapers" shortcut next to the background switch
The dedicated wallpaper editor was reachable from My Account but not from the home page. Adds a frosted "My Wallpapers" pill to the left of the top-right Backgr...
Recompute P(fund) action on the Capital & Risk console
Steward button rebuilds the pipeline-funding projections from the live pipeline (POST passthrough, org from session) then reloads the fan/KPIs. Gives the flagsh...
Steward passthrough to recompute pipeline-funding P(fund) projections
POST **************** → MlosCapitalMarketsClient (X-Internal-Auth, org stamped from session) → MLOSCapitalMarketsService recompute. Operator-gated like the othe...
Dedicated full-width wallpaper editor page
Adds **************** — a full-bleed, inline (no-popup) wallpaper editor, and moves all upload/gallery curation off the My Account tab. - New "cinematic Stage"...
On-demand LIGHT-tier AI summary on the Scenario Workspace Insights card
'AI summary' button posts the factual scenario to **************** → the org's configured provider. Graceful: no provider → deterministic rule-based insights st...
Scenario-insights endpoint — LIGHT-tier AI narrative via the org's provider
POST **************** takes a factual (estimated) scenario summary, calls MlosAiClient.text(orgId, prompt, LIGHT) through the org's configured AI provider, retu...
Lead Scenario Workspace — LO pre-qualification workbench on the mortgage lead
Right-side panel on /leads/view for mortgage leads: 14 modular tools (Summary, Eligibility, Payment, DTI, Affordability, Down-Payment/Rate comparison, Cash-to-C...
Tier-aware internal text completion (POST /api/ai/internal/text)
Mirrors the vision path: selectTextProvider picks the org's active provider tagged with the requested cost tier (LIGHT/MEDIUM/HEAVY), falling back by priority; ...
MlosAiClient — the sanctioned tiered AI entrypoint for MLOS
Best-effort text()/vision() at a cost tier through the org's configured provider (AIService internal endpoints). Returns Optional.empty on no-provider/error so ...
Surface borrower-stated financials on the lead mortgage panel
Adds a 'Borrower-stated financials' subsection (estimated income/credit, purchase price, down payment, refi balance/cash-out) to /leads/view mortgage details, l...
Persist borrower-stated financials + phone onto the mortgage lead
ClaimedFactsDTO gains purchasePrice, downPayment, currentLoanBalance, cashOutAmount and phone; PortalLeadService.applyFacts maps them onto LeadClaimMortgage / t...
Mortgage lead carries borrower-stated financials (income, credit, purchase price, down payment, refi balance/cash-out)
Surfaces the existing **************** and adds four stated columns to LeadClaimMortgage; wires DTOs (read/update/create), the history field registry, and LeadS...
Process member uploads like org bg + gate by new rights
- New ImageResizeClient runs member background uploads through the SAME post-processing as org backgrounds (POST **************** and stores the result as ....
Gate My-Profile backgrounds by the new rights + member/org slideshow
- Gate the My Profile "Background & Theme" section by MANAGE_OWN_BACKGROUND_IMAGES (self) / **************** (others); let a background-admin open another m...
Add Manage Own / Others Background Images rights (General group)
Adds MANAGE_OWN_BACKGROUND_IMAGES (165) and **************** (166) to RoleRightType, serviceType null so they land in the General settings group (mirrors the ST...
Notify the assigned loan officer when a loan's borrower docs are all received
Fires LOAN_DOCS_READY_LO at the satisfy points alongside the borrower DOC_COMPLETE. Resolves the LO via loanFile -> **************** -> Member; self-guarded to ...
LOAN_DOCS_READY_LO canonical template — notify assigned LO when a loan's docs are all in
Assign a loan officer to a deal from the originator section
The read-only Loan Originator section now has a loan-officer picker (org members via /members/names) + Assign, calling PUT **************** at the transaction l...
Provider config fields for cloud mail access
Add the config inputs the EmailService resolver reads to authenticate cloud mailboxes: - Google Workspace: service-account key (JSON) for domain-wide-delegation...
Route all cloud providers' mail through IMAP/SMTP with OAuth2 (XOAUTH2)
Cloud providers (Microsoft 365, Exchange Online, Google Workspace, Zoho, IceWarp) inherited read/send from **************** but the resolver never populated IMA...
Deal-scope a vault upload from the account documents tab
The upload dialog now offers an optional "Deal" selector (the account's transactions); choosing one stamps loanTransactionId so a time-sensitive doc (credit rep...
Vault upload can deal-scope a document (loanTransactionId)
The vault upload now accepts an optional loanTransactionId, stamped onto the MemberDocument so a time-sensitive doc (credit report / bank statement) can be boun...
Per-device background switch — plain gradient or org photo slideshow
Adds a two-icon switch top-right (under the trial pill; it rises into the pill's place once the trial ends) to choose the console background: - Plain gradient (...
Freeze the originator snapshot at initial Loan Estimate (Reg Z/TRID)
Completes the originator lifecycle: a shared resolveProjection() now feeds BOTH the live read projection and the freeze (no drift). On issuing an INITIAL_LE dis...
Transaction-first pipeline — PrimeReact expandable rows
Replaces the flat loan grid with a PrimeReact DataTable of TRANSACTIONS that start collapsed and expand IN PLACE to their member loans (no two-click drawer), so...
Re-add the trial pill top-right (color-swapped NavPri pill)
Keeps the trial line in the masthead status strip and re-adds a prominent pill in the top-right so an org's trial mode stays obvious. It's the NavPri expanded t...
Live "insert between" while dragging, not just drop-to-swap
Previously the order only changed on drop, so it read as swapping into a slot. Now the list re-flows live as you drag: dnd-kit onDragOver moves the dragged opti...
Sibling-loan switcher on the application view
A transaction can group multiple loans; the app header now shows a switcher to jump between the deal's sibling loans (hidden for single-loan deals) instead of o...
LoanFileDTO.loanTransactionId (app view knows its deal)
Surfaces the loan's transaction so the /applications view can show/switch sibling loans. Verified: mvn install clean.
**************** (FE type)
Mirrors the backend field for the pipeline Transaction # column. Verified: tsc --noEmit clean.
Surface transactionNumber on TransactionSummaryDTO (pipeline Transaction #)
The per-transaction pipeline row now carries the human transaction number. Verified: mvn compile clean.
Originator projection resolves the per-state license
Completes the live originator projection: the assigned LO's StewardLicense (NMLS_MLO) for the SUBJECT PROPERTY's state (from property.address.subdivision, norma...
Drag-and-drop to rearrange launchpad options, saved per member
Members can now reorder their home options by dragging, and the arrangement is persisted server-side per member (survives reloads and follows them across device...
Make Materials the first tab + default landing; remove Overview
Overview tab removed; Materials is now first. The /marketing index redirects to the first accessible tab (Materials by default), so anyone opening Marketing lan...
Live originator projection — org + assigned LO, on read
GET /mortgage-apps/{uid} now overlays a LIVE, system-managed originator projection (computed on read, never stored) unless the row is frozen: org name/NMLS/addr...
Loan Originator section is read-only / system-managed
The Loan Originator card no longer hand-edits URLA §9 data (the duplication of **************** it was re-capturing). It renders read-only: a LIVE projection of...
Transaction-level loan-officer assignment + transaction number
ensureTransactionForApp now stamps an org-unique transactionNumber (TXN-<uid>). New **************** + PUT /mortgage-apps/transactions/ {uid}/loan-officer sets ...
Originator/transaction-first columns (@Order 90)
Additive nullable columns + org-unique transaction-number index for the MLOS originator/transaction refactor: mlos_loan_transaction (transaction_number + assign...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.