Nenda kwenye maudhui
KAMOUniverse

Mabadiliko

Nini kipya.

Kila kuboresha jukwaa, kama ni meli.

  1. · SecurityService

    Expose full geo fields + city-scene profile API

    - geoip/me now returns **************** (already loaded by the single block+location lookup, previously discarded) — powers city scenes and client personalization at zero new query cost. - CitySceneryService/Controller: GET /scenery/profile/{state}/{city} returns the city's sampled scene factors, materializing a PENDING row on first sight (portal renders the state scene meanwhile); resolves coordinates from the gazetteer, a caller lat/lon hint, or a stated-property ZIP. Internal PATCH overrides rail for curated art direction (X-Internal-Auth, constant-time).

  2. · kamo-shared-library

    CitySceneProfile entity + GeoLite city-lookup indexes for city-based portal scenes

    - CitySceneProfile (city_scene_profile): per-city environmental scene factors (terrain/relief/silhouette, climate/koppen, hydrology, RESOLVE ecoregion + flora palette, land-cover mix, built/dark-sky) as a versioned JSONB contract, materialized cold-path from the KamoUniverse earth tiles. UUID pk, PENDING→READY status, art_overrides layer, generator_version for re-sample. - GeoLiteBlock: geo_name_id + postal_code indexes so a gazetteer city / stated ZIP resolves to a representative coordinate; block/location repos gain the finders. - Fixed two stale count-pinned tests (ImageAssocType roster, canonical templates).

  3. · SecurityService

    E-consent with WRITTEN ESIGN Act text + the real credit-bureau adapter rail — no owner input required

    E-CONSENT: full ESIGN Act §101(c) disclosure authored in-code (scope of consent, right to paper copies, right to withdraw + effect, contact upkeep, hardware/software requirements, affirmative-act clause) as the default v1 DisclosureText, auto-seeded per org — a TENANT customizes by inserting a higher version (multi-tenant by construction, platform owner never in the loop). Capture = WORM ConsentRecord on the borrower's own LoanParty (created if absent): body sha256, disclosure version, WEB_CHECKBOX, IP, device; grant and withdraw both recorded, withdrawal never blocks the loan. Party-gated — consent is the borrower's own act, no operator bypass. CREDIT: CreditBureauAdapter SPI on the tenant's CREDIT vendor rail (MortgageProviderResolver — never hardcoded): StubCreditAdapter only when a tenant explicitly configures STUB; MismoRestCreditAdapter as the catch-all real-vendor adapter (MISMO 2.4 soft tri-merge over HTTPS, Basic auth from the config's clientId + AES-GCM-decrypted secret, CREDIT_SCORE parsing both attribute orders) — adding a bureau = adding a bean. Every order persists a Connection audit row **************** the credit-ledger reads; every non-orderable state is an HONEST status (NOT_CONFIGURED / ENDPOINT_NOT_CONFIGURED / CREDENTIALS_NOT_CONFIGURED / VENDOR_NOT_SUPPORTED / BORROWER_INCOMPLETE / VENDOR_ERROR), never a fabricated score.

  4. · SecurityService

    Daraja la Akaunti - hundi ya barua pepe, usajili wa mtumiaji uliopo, usajili wa portal

    Msafiri wa Mmiliki: Baada ya funnel kukamata jina kamili + kuwasiliana, funguo za hatua inayofuata EMAIL./portal/account/check ?;///prepare-signin inathibitisha password kisha masharti ya uanachama katika PORTAL org kabla ya kiwango kuingia (kwa hivyo kikao kinabeba MjumbeID hii ya org kwa kuunganisha / kukuza seam); Usajili hujenga mtumiaji chini ya PLATFORM org (kamocrm) na uanachama katika BOTH orgs (sehemu ya org + usalama kioo), jina kamili la kisheria (prefix/middle/suffix) + preferred (AKA) + simu, barua pepe alama kuthibitishwa ( Kila mmoja wao alilipwa fidia mara mbili ya kile alichotakiwa kulipa. Kuthibitisha-click lango itakuwa yatima kuongoza). Madai ya Ukweli wa faida [TD="width: 456"] [FONT=&](2)[/FONT][FONT=&]Bila kuathiri masharti ya kifungu kidogo (1) Wasiliana na kadi wakati inaingia pool kukubali.

  5. · SecurityService

    Closing eSign through the NATIVE engine — envelopes actually send now

    Recording a disclosure e-sign envelope was v1 metadata-only. Now, when the tenant's ESIGN vendor rail resolves to KAMO_NATIVE (per-market integrations config — never hardcoded), the envelope is SENT via ESigService's non-metered platform endpoint (contextType=DISCLOSURE, contextId=envelope id): signers = the loan's URLA borrowers with an email (primary carries memberId), invites go out immediately, and the disclosure row is patched **************** Every non-sendable case stays an honest metadata row with the reason surfaced to the steward in the response (ESIGN_NOT_CONFIGURED / EXTERNAL_VENDOR_PENDING / NO_TEMPLATE / NO_SIGNERS_WITH_EMAIL / NATIVE_SEND_FAILED) — never a fake SENT.

  6. · ESigService

    Non-metered internal platform-envelopes endpoint — DISCLOSURE-context signing rail

    Platform-internal envelopes (mortgage disclosure/closing signing) are product, not the tenant's programmatic API usage: tagged MANUAL so completed signatures never count toward the metered overage. Same X-Internal-Auth + X-Org-Id authorization; optional X-Member-Id rides into createdBy.

  7. · kamo-shared-library

    LOAN STATUS UPDATE template ya canonical - mkopaji aliarifiwa katika kila hatua ya mkopo

  8. · SecurityService

    Leads-first resume rail — signed magic links, contact recovery, lead snapshot

    - PortalResumeService: 30-day HMAC token (PRESUME|guid|orgId|exp, keyed off the cluster internal.auth.secret — no new secret); mails RESUME_PORTAL_LINK. - POST /portal/resume/send (visitor's own link), /resume/redeem (token → guid for the portal to rebind as its httpOnly cookie), /resume/recover (lookup by email case-insensitive or exact phone; always acks ok:true — enumeration-safe). - GET /portal/lead: claimed-facts snapshot (exact inverse of applyFacts) so a fresh device rehydrates the funnel from the server-side lead. - PortalUrls extracts the myloan.<root> origin resolution shared with the meet-your-LO email.

  9. · kamo-shared-library

    RESUME PORTAL LINK template ya canonical - kiungo chako cha uchawi kuendelea kwenye kifaa chochote

  10. · SecurityService

    Expose US state/region from GeoLite lookups

    GeoLookupResult gains subdivisionCode/subdivisionName (GeoLite2 subdivision_1 = US state incl. DC; territories PR/GU/VI/AS/MP arrive as countryCode with no usable subdivision, so callers branch on countryCode first). GET /api/security/geoip/me now returns region_code/region_name/city alongside the country fields — the KamoMLOS portal uses it to pick the visitor's initial state scene.

  11. · SecurityService

    Anonymous GET /portal/assigned-lo - Kukubali utambulisho wa LO kwa uongozi wa guid

    Inawezesha kadi ya juu ya kulia ya LO wakati LO inakubali Kiongozi (pre-login, kabla ya matumizi): guid header + org jeshi → kuongoza → Kwa mfano, Muhammad Bin Isma’il Bukhari katika Sahih yake Jz.

  12. · SecurityService

    'Meet your loan officer' — the borrower hears the moment their lead is accepted

    Kwa kukubali (ASSIGNED), barua pepe bora ya MEET YOUR LO kwa mkopaji wa kuongoza wa mikopo: kukubali LO Jina halisi + NMLS + barua pepe + kiungo kinachoendelea. Watangulizi wake ni pamoja na:- Majina ya. Kamwe kushindwa kukubali.

  13. · kamo-shared-library

    MEET_YOUR_LO canonical template — borrower intro when an LO accepts their lead

  14. · SecurityService

    The lead→application conversion seam — POST /portal/promote

    The funnel was a closed loop: nothing ever converted the portal lead into an application (blank mints only — no sourceLead, no seeded fields, no LO inheritance). promoteToApplication: merge GUID (idempotent) → reuse-or-createFromLead (URLA seeded from stated facts, sourceLead set) → link the member's ACCOUNT (party authz keys on it — createFromLead never set it) → ensureTransaction (inherits the accepted loan officer).

  15. · kamo-internal

    Member tooltip shows last active datetime + time ago

    Interaction Center member rows now show a two-line tooltip: availability status plus when the member was last active — 'Active now' while online, otherwise 'Last active: <datetime> (3D 9H 32M)' sourced from MediaService's new durable last-seen presence keys. Time-ago recomputes on each hover and ticks every 30s while open.

  16. · MediaService

    Nyakati za mwisho za kuonekana + mwisho wa wingi

    Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... Alikumbuka wakati wa uhai wake. Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... (orgId + ts, 400d TTL) juu ya kuunganisha / kuvunja moyo / kuunganisha na kufungua [TD="width: 456"] [FONT=&](2)[/FONT][FONT=&]Bila kuathiri masharti ya kifungu kidogo (1) Wanachama wa chombo.

  17. · SecurityService

    Borrower pricing-quote endpoint — party-gated, integration-config-gated

    POST **************** caller must be a loan party (or pipeline steward); resolves the tenant's PRICING_PPE integration — NOT_CONFIGURED / EXTERNAL_VENDOR_PENDING are honest statuses; only KAMO_NATIVE_PPE relays into the real PPE. Org/loanFile/borrowers server-stamped; FICO fact defaults from the lead's STATED credit estimate. Kills the need for the portal's hardcoded rate wherever the tenant wires the native engine.

  18. · kamo-shared-library

    **************** (borrower quote candidate set)

  19. · SecurityService

    Integrations-status endpoint — the portal's honest view of the org's vendor wiring

    GET **************** per-category **************** runtimeVendor from the market integrations config via the runtime resolver. Session-gated; no secrets.

  20. · kamo-shared-library

    The doc-04 vendor RUNTIME — MortgageProviderResolver + VendorTypeBridge

    The integrations tab wrote MortgageProviderConfig rows nothing consumed at runtime. Resolver: (org, VendorCategory) → activation-gated, profile-scoped, first-enabled provider (fail-closed empty → callers render honest not-connected states). Bridge: config vendorKey → locked ConnectionVendor at the adapter boundary (doc 04 §5 — the locked enum is never edited; keys without a peer route MLOS-side).

  21. · SecurityService

    AI vision document extraction — docs → org's vision provider → VerifiedFact(OCR)

    The first producer of VerifiedFactSource.OCR: POST **************** reads a vault document (bank **************** ID) with the ORG'S OWN configured vision provider (MlosAiClient, MEDIUM tier) via a short-lived HMAC-signed public URL (VaultDocUrlSigner keyed off internal.auth.secret; VaultDocPublicController re-verifies org+vault assoc, no-store) and records每 extracted field as an evidence-backed VerifiedFact with per-field confidence. Party + confused-deputy + app-party authz; best-effort by contract (no provider/unreadable → status, never 5xx). Reconcile then applies facts to the URLA. The AI reads — it never decides.

  22. · kamo-shared-library

    Real verified-fact reconciliation — evidence facts now populate the URLA

    Replaces the M3a log-only stub: asset.* facts (grouped per source document) become Asset rows and employment.* facts become Employment rows via BorrowerSectionService, idempotently (same institution+last4 / same employer → skipped on re-run; W-2 annual wages ÷ 12 → monthly base). identity.* facts are deliberately HELD for human review — OCR never silently overwrites a borrower's typed legal identity.

  23. · SecurityService

    ClaimedFactsDTO carries the FULL mortgage lead (35 fields)

    Adds the 16 fields the portal structurally couldn't send (monthlyDebts, taxes, insurance, HOA, currentPayment, sellerCredits, renovationCost, borrowerAge, isVeteran, currentLoanType, isRepresented, agent block, addressDetails) + applyFacts mappings. The portal can now populate every column a loan officer sees on the CRM lead.

  24. · kamo-internal

    Company NMLS ID field in org Company Info

    Edit + read row + hydration + PUT (nmlsId). Feeds the borrower portal footer trust pill and the originator projection's company NMLS.

  25. · kamo-shared-library

    NmlsId is patchable — the company NMLS finally has a write path

    Organization.nmlsId (SAFE Act identifier feeding the originator projection's originatorOrgNmlsId and the borrower portal's verified-license pill) was readable everywhere but writable nowhere. Whitelist it in patchOrganization (trimmed; blank clears).

  26. · kamo-internal

    Mortgage fields as 3 column panes on the Client Lead Data tab (reuse form via layout prop)

    Add layout?: 'tabs' | 'panes' to MortgageFieldsComponent (default 'tabs', byte-identical to the existing Mortgage Workshop rendering). editControls, loanFields, borrowerFields, and subjectPropertyFields are lifted verbatim into consts so 'panes' mode can render the same 3 field groups as side-by-side Cards with one shared edit header, no tabs, no What-If slot. Mount it on the Contact Info (Client Lead Data) tab in LeadViewClient, gated on marketConfig?.subType === 'RESIDENTIAL_MORTGAGE', wired to the same 'mortgage' pane lock and **************** the Mortgage Workshop tab already uses.

  27. · kamo-internal

    Make What-If Studio its own pane below the form (drop the 4th tab)

    Removes the "What-If Studio" sub-tab; the Scenario Sandbox now renders as its own pane below the Loan/Borrower/Subject Property form. Retitled "Scenario Sandbox (What-if Studio)" so there's no double header.

  28. · kamo-internal

    Address-field layout + move agent block to Borrower tab + Payment above Eligibility

    - Subject Property: Address + Address Details half-width side by side; City/State/Zip on one row (md 5/4/3, Zip narrowest). - Move buyer's-agent block (Represented/Agency/Agent*) to the Borrower tab. - Outputs right column: Payment Estimator above the Eligibility Snapshot.

  29. · kamo-internal

    Add savable Seller Credits field to the Loan tab

  30. · kamo-shared-library

    Add sellerCredits field + @JsonIgnoreProperties tolerance on lead request DTOs

    Picha zote na Wizara ya Mambo ya Ndani ya Nchi. .................................................................... UpdateLeadRequest/LeadDTO MortgageFieldsDTO + Mjenzi wa LeadDTO Huduma ya kuongoza huunda / kuboresha, na hadithi ya kuongoza Kwa mujibu wa takwimu (mortgage.sellerCredits). Kwa bahati mbaya, hakuna hasara. Hasara ya Sync Kusubiri kuthibitishwa kwa shamba-id. Zaidi ya hayo,[hariri | hariri chanzo] Kwa mfano, *** (Jumla ya 24 Bidhaa kwa Vitunguu) Kwa hivyo jibu-shape mashamba maombi DTOs si kubeba (k.m. Mikopo ya dhamana kamba enum mirror) si tena 400 mikopo kuokoa na Kwa mfano, ***

Ulimwengu wako unasubiri.

Kuanza bure katika dakika. Ongeza bidhaa wakati wowote wewe ni tayari - hakuna uhamiaji, hakuna logins mpya.

Bure milele - hakuna kadi ya mkopo inahitajika