Diamond Equity Investments · Chicago
Every email Diamond Equity Investments Chicago sends goes out in one of two shells. Each is a branded frame around a single empty well — everything around the well is already done.
/client and /team, fill three tokens, send. Extensionless — .html 308-redirects here, and a client that does not follow redirects gets no body. Canonical source is melockhart/diamond-equity-investments → packages/brand-templates/src/chicago/html-shell/. Edit there, never here.Sellers, leads and lenders. Full centred lockup, the tagline, the postal address and the unsubscribe. Identical for every agent — a seller should not care which system wrote to them. CAN-SPAM applies, so the address and the opt-out are load-bearing.
Fills: {{preheader}} {{{emailBody}}} {{contactId}}
DEI staff — agent output, handoffs and ops reporting. Compact bar naming the sending agent, and a well that styles tables so a rollup arrives ruled and tabular. No tagline, no postal address, no unsubscribe: internal mail is not commercial email.
Fills: {{agent}} {{preheader}} {{{emailBody}}}
The Well is the blank template. A truly empty shell renders as chrome with a void between the rules: you cannot see where content goes, how much room it has, or that there is a region at all. The Well marks that region, so the blank shows its own structure. Delete the outline and write in its place.
House convention across every Opscend property. The DEI Realty shells use it too.
The 77 rows in Notion's Templates (CSA) are plain text with newlines, with a raw opt-out footer glued on the end — 74 of the 77 carry one. Dropped in untouched, every one sends a run-on paragraph with two unsubscribe links, because the shell provides its own.
scripts/shell.mjs strips the legacy footer, converts plain text to paragraphs, and repairs newlines that sit inside a <p>. Run node scripts/shell.mjs --selftest — 23 assertions against the four shapes actually stored.
import { renderShell } from './scripts/shell.mjs'
renderShell({ shell: 'client', body, preheader, contactId })
renderShell({ shell: 'team', body, preheader, agent: 'LUA' })
Give it /agent.txt — the complete contract in plain text: which shell to pick, the four normalization steps, the token list, the checks to run before sending, and what must not be changed. Self-contained, so an agent does not need the repository.
“Use the HTML shell” on its own is not actionable: the normalization step is what stands between a stored template and a correct email, and it lives in scripts/shell.mjs inside a private repo.
The only three templates without an opt-out footer are exactly the three addressed to an acquisition manager — Video Testimonial Layer-3, Manager-Alternate-Time, Manager-Confirmed. Those are team-shell mail; the other 74 are client. suggestShell(body) returns that call. Where the workflow already knows the recipient, trust the workflow.