Internal signed-document download + recipient delegation fields
- GET **************** streams the executed (flattened) PDF for an org-owned envelope (404 until fully signed). - RecipientSummary carries **************** ...
Product picker for the non-QM run trigger
Replaces the plain productId input with a product selector populated from the org's active catalog (non-QM products first, NON-QM chip), falling back to the pla...
Proxy the org product catalog for the run-trigger picker
GET **************** (operator+org gated; org-scoped by the downstream query, passthrough) → MLOSPricingService product list.
Disclosure void/sync/resend UI, workflow-template authoring, non-QM run, non-doc vendor orders, in-place config edit
Steward console UI for the remaining audited gaps: - #3/#8/#12/#17 DisclosuresSection: Void live native envelopes; 'Refresh status' hydrates per-recipient sta...
Steward disclosure void + status-sync + resend (native eSign)
- Void (#3): POST /esign-envelopes/{id}/void voids the live KAMO_NATIVE envelope in ESigService THEN mirrors the local stub to EsignStatus.VOIDED (stub demote...
Proxy vendor-order cancel (staff, loan-bound)
Expose POST **************** — staff-only, org resolved server-side, and the order must belong to THIS application's loan (verified against the loan's order lis...
Surface recipient decoder reason + internal resend endpoint
- RecipientSummary now carries decoderReason + decoderdAt (persisted by the decoder ceremony but previously omitted from every projection), so a compliance-...
Proxy steward write/read gaps — AUS **************** lock lifecycle events, LLPA blast-radius, eClose RON-fallback + workflow-template publish/detail, loan clearability
Closes the SecurityService side of a batch of verified proxy gaps where an MLOS engine capability existed but no browser-reachable proxy did: - underwriting: G...
Proxy closing-package assemble (light up the eClose write side)
POST **************** (operator-gated, org-stamped) → MLOSDocOrchestration assembler: resolves the tenant closing-workflow template as of the closing date + mat...
Transparent loan close-readiness endpoint (real milestones)
GET /mortgage-apps/{uid}/readiness (party-gated) → a weighted composite of REAL, explainable milestones (submitted / documents satisfied / conditions cleared / ...
Borrower payment-estimate endpoint (full PITIA, safe subset)
GET **************** (party-gated) → the borrower's estimated full monthly housing payment + components, a BORROWER-SAFE subset of the underwriting qualificatio...
Extract self-employment income from K-1 and P&L statements
K1 and PL_STMT previously returned DOC_TYPE_NOT_SUPPORTED; add vision prompts (employment.employerName + employment.wagesAnnual) so a self-employed borrower's K...
Borrower request-rate-lock → steward pipeline queue
POST **************** (party-gated): the borrower asks to lock their rate; recorded as an OPEN non-blocking PRICING LoanCondition so it lands in the steward's p...
Borrower rate-lock status endpoint (LOCKED/FLOATING)
GET /mortgage-apps/{uid}/rate-lock (party-gated) → the loan's SAFE lock posture: LOCKED (rate + expiry) when an active, non-expired commitment exists, else FLOA...
Lock lookup by loan file (join through scenario)
**************** — locks key on scenario, so resolve a loan's locks via MlosLoanScenario.loanFileUid. Backs the borrower/steward 'is this loan rate-locked?' rea...
Steward rate-lock proxy — lock-decision + commit an eligible result
MlosCapitalMarketsController gains POST /lock-decision (preview) and POST /locks (commit) via MlosCapitalMarketsClient; the commit is a deliberate HUMAN steward...
Borrower e-signature surface — real native sign links, no stub
GET **************** (party-gated) lists the loan's real KAMO_NATIVE disclosure/closing envelopes + recipient status via ESigService; POST **************** mint...
Internal mint-sign-link primitive for first-party signing surfaces
POST **************** re-mints a recipient's access token and RETURNS the signing deep-link (no invite-email round-trip), so the MLOS borrower portal can hand a...
WS3 vendor-order proxy — steward places/reads third-party orders
Add MlosVendorClient (X-Internal-Auth → MLOSVendorService /api/vendor) + mlos.vendor.url config, and app-scoped endpoints: GET /{uid}/vendor-orders (operator vi...
Borrower-safe my-conditions projection for the portal conditions view
GET /{uid}/my-conditions (party- or operator-gated) returns a narrow BorrowerConditionView **************** — never the internal actor/notes fields the steward ...
Per-borrower section GET endpoints to hydrate the capture UIs
Add listPerBorrower (requireView, party-gated) + GET list endpoints for **************** returning {rows:[...]}. These back the new URLA borrower capture sectio...
Borrower section read methods for other-income/expense/REO/gift capture
The per-borrower repeating sections were write-only; add read projections **************** so the borrower capture UIs can hydrate existing rows via GET endpoin...
Full credit-vendor abstraction + real reseller adapters
Production tri-merge credit rail. The abstraction now passes the FULL 9-digit SSN (decrypted at order time from the borrower's encrypted record) + co-borrower f...
Borrower clear-to-close proxy
GET **************** — party-gated; resolves loanFileUid from the app and relays MLOSDocService's clear-to-close readiness.
Accept X-***-Token for mobile clients in OTKPreAuthFilter
per-tab session id as X-***-Token (matching **************** When present (and no X-OTK), resolve the session non-consumingly and set the same request attribute...
Route /api/email + /api/support through the api host
(EmailService) and Support (MediaService, same upstream as /api/media) were unrouted → 404. Add both forwards and fix email.service.url from a localhost default...
Steward-triggered agency-AUS run proxy
Adds POST **************** — the steward "Run AUS" trigger the read-only underwriting console lacked. Gated on operator (GD); the organizationId and acting memb...
Self-hosted expo-updates headers for Mobile Copilot OTA
expo-protocol-version:1 + expo-sfv-version:0 response headers that the expo-updates client requires and static MinIO cannot emit. Longer path prefix wins over t...
VendorOrder + VendorOrderEvent entities for WS3 vendor-order spine
The greenfield 3rd-party order-of-record **************** SCRA). VendorOrder = partial-WORM async order (ClosingArtifact idiom: opaque vendorKey/externalRef, fr...
Stamp document own-date to freshness clock (WS1 activation)
After vision extraction, propagate the document's own effective date (asset.statementPeriodEnd for bank/broker/retirement, employment.payPeriodEnd for paystubs)...
MortgageAmortization — monthly P&I from loan terms (WS6 support)
The one PITI component not stored on the loan. Standard fully-amortizing formula P·r·(1+r)^n/((1+r)^n−1); zero rate degrades to straight-line; non-positive prin...
ClosingReadinessEvaluator — loan-level clear-to-close gate
Rolls a loan's obligations up to the funding question the end-to-end gap analysis raised ("service the loan all the way to funding"): clear-to-close iff zero ad...
QualifyingRatioEngine — the reproducible dti keystone (WS6)
Composes the four cores (income, liabilities, PITI/DTI, reserves) into ONE QualifyingSnapshot: qualifying income, reconciled monthly debt, assembled PITIA, fron...
ReservesCalculator — eligible-asset haircuts → PITIA months (WS6)
Derives reserve months from actual assets with standard agency haircuts — liquid deposits 100%, brokerage 70%, vested retirement 60%, gift/borrowed excluded — d...
PitiDtiCalculator — PITI assembly + front/back DTI (WS6)
Pure ratio core completing the DTI trio with LiabilityReconciler + the income core: PITIA = P&I + taxes + HOI + HOA + MI + flood; front = PITIA / income; back =...
QualifyingIncomeCalculator — base + variable core (WS5)
Pure/deterministic income core: base salaried = conservative lowest-of available evidence (paystub / W-2 / VOE); variable = 2-yr average with a declining-income...
LiabilityReconciler — agency payment-inclusion rules (WS6 core)
Pure/stateless computer turning each liability into the monthly payment that counts against DTI, with a cited rationale: omitted/paid-off excluded, leases alway...
Explicit-period quantity spec for delta successors
RequirementQuantity gains an explicit periods list (+ deltaJson builder); when present it IS the required set, so a successor can be scoped to "just send August...
**************** as the single period-key source
Adds periodKeyFor(date) so the write-path (satisfier stamping) and the coverage evaluator key periods identically; evaluator now delegates to it. Pure/additive,...
Period-coverage primitives for period-aware document collection
The pure, additive foundation of period-aware collection (doc 06 §4) — the first slice of the bank-statement "collect only the months I don't have yet" fix. Zer...
Replace forked chat with hosted <kamo-chat> embed; delete legacy proxy widget
Swaps the forked AI/live-support React chat (PublicChatWidget + AiChatPanel + LiveSupportPanel + the /api/chat/** server proxy routes) for the hosted, self-them...
Add install-QR (self-hosted APK) to Setup Mobile App tab
Install/Sign-in toggle: "Install" shows a QR to the signed release APK on the new phone can download+sideload it; "Sign in" keeps the password-gated OTK flow.
Web Chat Integration design customizer + live preview
Adds a Customize dialog to the Web Chat Integration tab: an editor form (colors, copy, layout, behavior, AI prompt) on the left and an instant, non-interactive ...
Web Chat Integration tab — list, create, snippet (BFF + UI)
Phase 2 core of the Web Chat Integration settings tab: BFF routes proxying to the Phase-1a MediaService CRUD, a typed client, and the /settings/features/chat ta...
Kamo-register honors software auth logo + name
- DynamicMetaLoader: read software identity + auth selectors from config.json, resolve tab title, persist auth logo/name state to sessionStorage - brand.ts + ...
Kamo-login honors software auth logo + tab title
- DynamicMetaLoader: read software identity + auth selectors from config.json, set tab title from resolved name (authNameBrandSource), persist auth-logo state...
LabelManager software identity UI + internal tab title
- Company Info: software name/short-name + login/register name + tab-title selectors - Branding: software full/simple logo uploads, override toggles, and per-su...
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.
