Demo lender auto-loads when no real tenant resolves
The reason "still not branded" — no real tenant org existed for the hostname being tested, so the SSR fetch returned null and every lender-facing surface fell t...
Make the lender the primary brand, not an accent
Reframes the borrower-facing app from "Kamo product with lender accents" to "lender's product, Kamo as the engine." Every surface now leads with the lender's id...
Migration for borrower-facing brand + disclosure columns
Adds the seven nullable columns the kamo-shared-library Organization entity now declares (TAGLINE / NMLS_ID / PHONE_SUPPORT / EMAIL_SUPPORT / EQUAL_HOUSING_DISC...
Emit lender brand + disclosure fields into per-org config.json
Two changes that finish the kamo-los borrower-facing branding pipeline: 1. OrganizationController gains a public GET /api/security/org/domain/{host} endpoin...
Add borrower-facing brand + disclosure fields to Organization
Seven new nullable columns powering the lender-branded surfaces in kamo-los's borrower app: - TAGLINE — marketing line shown on the brand-intro spl...
Deep org-theming integration across every borrower surface
Executes the full plan from the org-theming analysis: every CTA, glow, progress bar, focus ring, ambient orb, chat surface, header logo, and attribution line no...
Make org branding loud — animated splash, ribbon, glow, footer
The subtle 1px accent ribbon and header logo weren't doing enough to celebrate the lender's brand. Now every hero surface delivers a real brand arrival moment. ...
Port org-scheme theming from kamo-internal so borrower surfaces pick up lender branding
Ports the subdomain-driven org-theme system from kamo-internal into kamo-los, scoped down to what makes sense for an unauthenticated borrower-facing surface (no...
Port public chat support from kamo-marketing, restyled for aurora theme
Brings the AI + live-support chat widget from kamo-marketing into the borrower-facing app, recoloured to the kamo-los aurora palette (surface-base / ink / auror...
Layered scene with parallax, ambient motion, real atmosphere
The first cut shipped a tiny static SVG behind an aggressive vignette, so EMPTY_LOT looked like a blank screen. Replace it with a real layered scene that actual...
Replace 3D world with 2D illustrated journey
Kill the procedural three.js scene end-to-end and rebuild the borrower's visual journey as a flat, accessible, mobile-friendly module that ships with full SSR s...
Infinite ground tiers + horizon depth + proper lawn signs
Ground — no more cube - SkyDome: 420 m back-side sphere coloured to the active TOD horizon, sits behind drei <Sky> so any seam at the camera corners is filled...
Cinematic 3D pass — postprocessing, materials, geometry, motion, weather
The 7-day analysis from the chat, executed: Day 1 — Foundations: - @react-three/postprocessing added: EffectComposer with SMAA, N8AO (ambient occlusion), Blo...
Real 3D environment + neighbourhood scenery + bolder home CTAs
3D scene was generic procedural boxes on a flat plane. Brought it up to a believable neighbourhood: - WorldScene: add drei <Environment preset="sunset"> for im...
3D cinematic journey + 10 personalities + persona homes
Major UI overhaul to lean into the existing 3D world rather than overlaying 2D chrome on top of it. - Rewrite Home with animated wall lerps, swinging front doo...
12 remaining waypoint sheets + 8 ceremony scene impls
Phase C foundation — every waypoint and ceremony slug in the spec now has a real, statically-prerendered surface. Stub adapters back the connect-first flows; UR...
M3a foundation — connections client, hooks, 2 hero waypoint sheets
Front-end half of the M3a connect-first foundation that the shared-lib Connection + VerifiedFact backend just landed. - lib/los/connections-client.ts — typed c...
MortgageConnectController — connections + verified-facts + reconcile endpoints
Exposes the connect-first capture surface at **************** - GET/POST /connections + POST /connections/{id}/complete - GET/POST /verified-facts + POST /verif...
Connection + VerifiedFact foundation for connect-first capture
Adds the M3a backend foundation for vendor connections and provenance-tracked verified facts. Stub-only end-to-end — real vendor SDK wiring (Plaid, Persona, ATT...
Frame the legacy URLA wizard inside JourneyShell
Phase A of the borrower-journey hand-off: the 3D world stays in view while the borrower works through every section. On wide viewports (≥xl) the world fills a s...
World becomes homepage — / serves the 3D scene, /start is the conversational porch, /journey paths flattened to /persona /waypoints/[id] /ceremonies/[id]
Borrower lands directly in the new experience on the public URL instead of the legacy conversational landing. Homepage CTA flips between 'Start your application...
LawnSigns r3f component + SignSheet + CompareMode + demo signs wired into SceneRoot
Programs-client + hooks (useProgramCatalog, useSetPersona, useSetSelectedProgram, useLiveProgramScores)
Add MortgageProgramController — list programs, set persona, set selected program
ProgramSeederRunner - seed 17 baseline LoanProgramCode programs (idempotent)
Repositories, DTOs, ProgramService (read-only catalog with naive overlay merge)
Add lenderModel column (additive; null = BROKER default at app layer)
Add Program + OrgProgramOverride entities (catalog + per-org overlay)
Ceremony stage + registry (8 placeholders) + /journey/ceremonies/[id] route
Add LOS enum types (status, role, persona, program, lender model)
Document myloan alias for KamoLOS
Adds `myloan` to the SUBDOMAINS recognition list and rewrites the comment to make the list's purpose explicit (it's documentary; the dynamic Traefik log scan is...
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.
