Remember Quick Tips open/closed per USER across all pages
The help column's visibility was stored in a single global localStorage key, so it wasn't scoped to the user. Introduce useQuickTipsVisible, keyed by user id (n...
Proactive checklist generation + pipeline doc summary
- Generate the scenario document checklist at APPLICATION_TAKEN (MortgagePipelineController transition hook) so it exists the moment a loan enters the pipelin...
Standardize Quick Tips help column + de-slop reference page
- Rename the help side-column title to "Quick Tips" everywhere (SettingsView reads **************** whose value is now "Quick Tips"). - Add a shared HelpConte...
Nested sub-options so deeper items (e.g. Settings sub-topics) are reachable
The sub-option menu only rendered one level, so a sub-option that itself has sub-options (Settings topics → sub-topics) was inaccessible. - NavToolButton now r...
Member-configurable navigation — drag options between rail & top bar, expandable rail, per-member layout
Turn the two hardcoded navs (NavPri/NavTop) into a data-driven, per-member system. - Single nav registry (navRegistry) + pure resolver (resolveNavLayout) enfor...
**************** self-heal
Idempotent re-link of every borrower on a loan to its account-party, callable from the document surfaces so an upload can always resolve the borrower's vault pa...
Document vault tab — parties, requirements, satisfy/accept/reject
- AccountDocumentsTab: per-borrower-party view of the account's document vault and per-loan requirements. Upload once, satisfy every loan (satisfy-across); st...
Proxy the vault-backed requirement surface
- MlosDocClient: POST verbs (generate, satisfy, accept, reject, satisfy-across) + enriched loan/party reads over X-Internal-Auth. - MortgageAppController /{ui...
Account-borrower-party link service + vault finders
- **************** find-or-create the reusable account-party (document-vault shared-human key) for each loan Borrower; dedup ssn4+dob, else primary→account....
Transaction drill-in drawer in the pipeline
Clicking a multi-loan deal opens a right drawer showing the group status + each member loan (borrower, property, loan status), each clickable through to the loa...
Transaction detail endpoint GET ****************
Returns one deal group's rolled-up summary + each member loan's AppMortgageSummaryDTO (drill-in for the per-transaction pipeline). Operator view or a party to t...
P4 member document vault backend (reusable docs across loans)
- MemberDocumentService: upload a doc ONCE at AccountBorrowerParty scope → ImageService creates an Img in the auto-created imaging-member-vault bucket *******...
Per-transaction pipeline — list per deal, not per loan (owner req)
ApplicationsPipelineConsole now lists ONE row per LoanTransaction (its representative loan + any not-yet-grouped legacy loans), with a pinned 'Deal / Status' co...
KamoMLOS portal default-product designation in vendors-products (#11)
A star toggle on each product designates the org's single KamoMLOS portal auto-assign product (single-active). Gated via GET /lead-vendors/mlos-readiness: shown...
P3 default-product designation backend (single-active) + operator readiness
- **************** designates ONE LeadVendorProduct as the org's KamoMLOS portal auto-assign product; single-active (demotes any other, org-scoped, fail-close...
P2c leads-first portal backend
- MortgageVerticalResolver: resolves an org's RESIDENTIAL_MORTGAGE LeadMarket, MORTGAGE CommerceMarket, designated default LeadVendorProduct, and EFFECTIVE PO...
Account-merge admin UI (MERGE_ACCOUNTS)
AccountManager gains a Merge Accounts action (gated by **************** select exactly two customer accounts, pick the survivor, optionally keep the duplicate's...
P2a account-merge tool + P2b transaction backend
P2a — admin account merge (owner requirement A), gated by MERGE_ACCOUNTS: - AccountMergeService: reparents EVERY account_uid child via native UPDATE (bypasses J...
P1 entity foundation — lead-first / account-centric / transaction-grouped refactor
NEW entities (additive; KI runs DDL): - TransactionGroupStatus enum + LoanTransactionStatusDeriver: derived group lifecycle (Created→…→Completed) rolled up fr...
Borrower self-service authorization (loan-party IDOR guard)
A borrower is a plain org Member with no operator LOS rights; they may act on the ONE application they are a party to — and only that one. Layered guard: operat...
Borrower loan-party ownership on AppMortgageService
Adds the ownership primitives for borrower self-service (a borrower is a plain org Member with no operator LOS rights): - createBlankOwnedByMember(orgId, member...
Borrower-journey column + intake filter in the loan pipeline
The sub=pipeline datagrid (ApplicationsPipelineConsole) now shows pre-app-taken borrower-journey progress so org employees can review an application's status as...
Pre-app-taken borrower-journey endpoint for the operator pipeline
New GET **************** (LOS_VIEW_PIPELINE) returns per-DRAFT borrower-intake progress so pipeline stewards can watch a loan take shape while the borrower is s...
LOS controllers accept per-borrower *** sessions (doc03 §0.1)
BaseLosController now resolves the caller's session via CallerSessionResolver (X-OTK-validated attribute FIRST — operators/BFF unchanged — then a first-party **...
LOE-Core server-authoritative program scorer + /programs/scores (doc03 §9 Phase 2)
Ports the KamoMLOS client scorer (lib/los/scoring.ts) into SecurityService LOE-Core: LoeCoreScorer scores the org's effective program catalog (baseline deep-mer...
Seed the 17 real program rulesets (doc03 §9 Phase 1)
Migrates the authoritative ProgramRuleset data from the KamoMLOS client ruleset files into **************** (17 codes, extracted faithfully) and replaces Progra...
Real deep-merge for org program-ruleset overrides (doc03 §9 Phase 0)
Replaces the M2 last-write-wins mergeOverlay placeholder (which silently discarded the authoritative baseline on any org override) with a recursive JSON deep-me...
MlosExtractedCandidate staging entity for the ingestion pipeline (D48)
The terminal per-field output of MLOSIngestionService's parser: a staged, reviewable extraction candidate (segment/source-doc FK, targetEntity, fieldPath, cellR...
Isolated best-effort profile write-back for legal-wall paths (D47)
mergeFactsBestEffort runs the enrichment write-back in its OWN transaction (REQUIRES_NEW) so a failure can never roll back the caller's transaction — the safe w...
State Based Licensing section on member my-profile
New SectionCard (NMLS ID + per-state licensed table with actively- providing checkbox and renewal/expiry dates, renewal<=expiry validated). Gated by ***********...
Member state-licensing API + license-aware lead availability
Add MemberStateLicensingController (GET/PUT /api/security/members/{id}/ state-licensing) gated by STATE_LICENSING_* rights with server-side renewal<=expiry vali...
State-based member licensing + lead-acceptance gate
Reuse mlos.legal StewardLicense as the single per-member/per-state NMLS registry (add activelyProvidingBusiness). Add member-level Member.nmlsId. Add General-Pe...
Add Source to the mappable lead fields
Lead 'source' is shown on the lead detail page but was missing from the import field list; add it (path 'source') now that the backend importer + CreateLeadRequ...
Map an imported column to the lead `source` field
Add case "source" to setDirectFieldOnCreateRequest so the mapping path 'source' is honored.
Add importable `source` field to CreateLeadRequest + persist it in createLead
The Lead has a free-text `source` (shown/edited on the lead detail page) but it was not importable — CreateLeadRequest had no source field, so createLead never ...
Add ScenarioProfileSource.PRICING for scenario-writer FICO/ratio write-back (D45)
Canonical scenario-fact spine — genesis deriver + factsJson populate + write-back + overlay matcher (D45)
D1/D45 broadens BorrowerScenarioProfile consumption. Populates the dormant factsJson and makes it the shared source of truth for borrower/loan facts: - Scenari...
Channel applicability rules collection CRUD — completes §3.2 config
createChannelRule/update/delete on the D31 flat-collection spine (profile-level, org fail-closed, WORM change-log); controller /channel-rules GET/POST/PUT (dele...
Product enablement config — per-program single-active, effective-dated
**************** (program-scoped demote-then-insert) + reads; controller /product-enablements GET (active per program) / PUT (publish). Body carries programId, ...
Policies tab — effective-dated pricing/capital/servicing config
New MortgagePoliciesTab: current active version + publish-new-version form + version history for each of the three effective-dated policies; configTypes/configA...
Effective-dated profile policies — pricing/capital/servicing publish
New MlosPolicyWriteService (isolated; its own repos so the config-collection write- service is untouched): single-active demote-then-insert versioning on the sa...
VersionedProfilePolicy interface for effective-dated policies
Pricing/Capital/ServicingPolicy implement it so one publish routine drives the single-active demote-then-insert versioning.
Investor delivery + commitment rule sub-editors
The expanded investor row gains Delivery (funding behavior / execution path / remittance) and Commitment (type / min pull-through % / pair-off) editors alongsid...
InvestorConfig delivery + commitment rule sub-collections CRUD
**************** (+update/delete) on the D31 config spine (org fail-closed via the parent investor, WORM change-log per row); controller /investors/{id}/deliver...
Investor credit-box overlay sub-editor
MortgageInvestorsTab's expanded investor row gains an OverlayEditor (FICO/LTV/DTI/ reserves/doc/geo tightening + comparator + optional program + effective windo...
InvestorConfig credit-box overlay sub-collection CRUD
**************** on the D31 config spine (org fail-closed via the parent investor, WORM change-log per row, configVersion defaults 1); controller /investors/{id...
Right-attached full-height sub-nav + higher-contrast text
- Move the section sub-nav from the left to a right-attached, full-height panel that scrolls independently; the header + form content take the remaining width...
Loan pipeline as Mortgage sub-tab + light theme
- Add ApplicationsPipelineConsole: a /leads-style advanced AG-Grid datagrid of mortgage applications at a loan level (status filter tabs, filter row, quick ...
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
