Pipelines, board, stage moves, dropdown fields and saved views
Rights 661-664. Dark by default: nothing changes for an org with no pipeline or fields. The board shares the grid's permission floor and filters, and each colum...
The lead's contact facts, Stop all outreach, and an organization's contact rules
GET **************** and its outcome, stop, resume, consent and check actions, under the same read gate as the Communications tab; /api/security/contact-rules f...
Keep the consent proof a lead source sends
An intake mapping can target consent.<key>. The values are written once the lead exists, on a new lead or on the lead the payload merged into, with the payload ...
A lead's Stop all outreach ends their drips, and an unsubscribe can set it
An unsubscribe is offered to the lead's Stop all outreach, which does nothing unless the organization turned it on. Mail to and from a lead now updates its last...
A board floor on each pipeline, and an index for a lead's loans
leads_from holds every board column to a range of (ORG_ID, DATE_CREATED): 14 seconds down to 3 ms on a market of 795,919 leads. Column already applied by hand; ...
The Automation Streams canvas and list (sales floor M6)
The canvas moves from /tasks to /settings/automation/[id] and /tasks now redirects to the list with a 307. It keeps the spring wires, glow and side panel, split...
Feed a lead's last contact from real calls, honestly
Two capabilities say what a provider really reports: whether calls connected and how long they ran. Call evidence is built from those, so a limited provider rec...
Switches for stage and loan sync, and a move's origin
Three lender switches, off by default: a stage follows its loans, loans follow a stage, and a person's stage move may reach a linked external loan. A transition...
Contact foundation: outcomes, last contact, stop all outreach, consent and the outreach check
Org-named call outcomes on fixed meanings, last attempt and conversation per lead in a new table fed from LeadCommunicationLinker, a lead-level Stop all outreac...
A lead's loans, and correcting a loan's deal or lead
The lead page shows the rollup across its deals, with each deal on its own and the least advanced loan on top, never one loan as the lead's. Loans in a deal tha...
A lead's loan rollup, and corrections to deals and leads
A lead holds many loans, so stop treating one as the lead's. - The legacy Arive path took the lead's newest application, which could already speak for anothe...
How a lead reads its loans
A lead shows the least advanced loan still in play. Loans that ended unfunded and unfinished archived loans are ignored, funded loans count, and the answer neve...
Stream, version, run and outbox tables, rights 665-666, and the lead-change tap
Dark until SecurityService declares the writer bean and an org publishes a stream. The outbox insert runs in its own savepoint so it can never fail the lead tra...
Pipeline, dropdown field and saved view tables, and rights 661-664
New tables only; leads is unchanged. Positions and dropdown answers use plain lead ids, so they sit in a soft-reference list the lead delete walks, apart from t...
Automation contract adds duplicate, the org pause and node config [skip ci]
Optional loan statuses in settings and the pipeline, and the program plan
The mortgage Automation tab gains an Extra loan statuses group. The board shows an optional status only while a loan sits in it, so lenders who never turn one o...
Drop the full status range check on loan_files
0-19 was exactly full, and the next LoanFileStatus is ordinal 20. Applied by hand on 2026-10-31; listed here so a rebuilt database loses it too.
Optional Need Docs, Ready for Submission and Closing Scheduled statuses
Three more stops a lender can add to its pipeline, each off until the organization turns it on, so no other lender sees them and no loan row can carry the new o...
Canonical templates draw spacers without zero-size text
38 templates drew colour bands and gaps as font-size:0 cells holding , which spam filters score as hidden text. EmailService rewrites these at send time f...
Add an alias domain through the mail-only door
The card posted to /api/security/domains, which refuses any organization that already has a domain, so adding one failed for everybody. It now uses ************...
A mail-only domain, exempt from the one-domain rule
An organization that already has a domain could not add an alias domain: POST /domains refuses a second root (ONE_DOMAIN_PER_ORG), and that is every organizatio...
Sign calendar invitations from an org domain as well
EmailSmtpService.send carried no domain signer, only sendAsMember did, so an invitation sent from an alias domain left unsigned while the member's ordinary mail...
An alias domain's senders may relay, and drop the dead Mailgun password
EmailService sends over port 25 from mynetworks without signing in, and relay_sender_domains refuses anything but kamocrm.com and kamouniverse.com with a 451. E...
Call and meeting notices settings; no "automated assistant" copy left in SI settings (TPNODISCLOSE)
Owner order 2026-10-29: SIs no longer introduce themselves up front. - Settings > Super Intelligence > Call and meeting notices (tab + menu entry + landing ca...
The website chat never volunteers that it is an SI and answers a sincere ask honestly (TPNODISCLOSE)
Owner order 2026-10-29, with the controller's rule: on the website chat the SI (or persona) never brings up what it is and never calls itself an SI or an AI; th...
An organization's call and meeting notices, declared for KamoInitializer (TPNODISCLOSE)
ai_org_voice_notices: the neutral recording notice (default ON) and whether SIs introduce themselves up front as virtual assistants (default OFF), one row per o...
Forget an invoice's expired card payment page
An abandoned Stripe Checkout page (it expires unpaid after 24 hours) stayed on the invoice for good, so the invoice looked mid-payment: it could not be updated ...
An updated invoice says so, and what changed, before anything else
Add a seat change to the customer's unpaid bill, and show updated invoices
- Change dialog: a third billing choice, "Add it to their unpaid bill", with the preview saying which invoice it updates and its new total, or that there is n...
Send an updated invoice, and show the customer everything they owe
- Sending an invoice updated since it last went out uses the new commerce.invoice_updated email: what changed, the old and new amounts, the new due date, an...
The updated-invoice email, and what else the customer owes
commerce.invoice_updated tells a customer their invoice was updated, what changed, the old and new amounts and the new due date, with the updated PDF. Both invo...
Updated invoices — later charges go onto the customer's unpaid bill
A seat or license change can now be billed OPEN_INVOICE: when it takes effect its prorated charge is added to the customer's sent, unpaid invoice, which is then...
Outbound mail stops looking like spam: a plain-text part, a real Message-ID, no unreachable Reply-To, no zero-font spacers
rspamd's scan of 76 recent kamouniverse.com messages, fixed where each is built: - MIME_HTML_ONLY (75/76): every body is now multipart/alternative with a text/...
An explicit alias at the default alias domain keeps the member on it
personalMailboxes() leaves out the primary mailbox's copy on an alias domain when the member holds an explicit alias at that address. When that copy was the org...
Add an alias domain end to end, guided for a non-technical owner
Settings -> Email -> Domains -> Alias domains: - Adding a domain the organization hasn't proved yet now adds it to the organization's domains and shows the on...
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.
