CRE lending · production service
An enrichment service that researches like an analyst and never sends
A service that ran daily in production: research a live investor cohort from public sources, score its own research, draft the outreach, and write it to the CRM for a named human to send. The system sent nothing, by design.
Problem
The fund’s investor-relations team faced the standard cold-outreach dilemma: generic messages are cheap and ignored, and properly researched ones cost an analyst hours per contact. The quality bar came from a real artifact: the single best cold message anyone at the firm had received, researched deeply enough to reference the recipient’s own projects and stated opinions. The question was whether a pipeline could hit that bar for a real institutional-investor cohort, inside the same governance rails as everything else on the platform I had just built.
What it is
A research-and-drafting pipeline that ran daily and on demand against live investor and broker cohorts. For each contact it researches from public sources, scores how much it actually found on a four-level depth scale, drafts an email, and writes the draft and its “why now” signals back into the CRM as structured properties. A rep-facing tool reads those properties and pre-fills the message for human review. The pipeline has no send path at all, so the zero in the stat block describes the code and not the usage: there is nowhere for a send to happen.
Key decisions
- Research depth gates what may be drafted. Level 4 means the person’s own words: posts, talks, stated opinions. Only that unlocks a LinkedIn DM, because a DM built on career data alone reads as automation to the person receiving it. Level 2, firm-level context only, produces an email with a caveat and a flag for manual research. The operating rule was written into the skill: a level-3 message on solid career data beats a level-4 message propped up by a throwaway quote.
- Every enrichment produces an audit trail. One per contact: sources consulted, facts marked verified versus inferred, and gaps. A finding that fails verification (freshness, attribution, reliability) is recorded as discarded: the work is documented, but the claim never enters the draft. Unsourced claims do not ship.
- The CRM integration is one versioned data contract. A single JSON payload holds the draft, the signals, and the audit link. The reading tool checks the version first; an unknown or missing version means “treat as un-enriched and fall back to the plain template,” so a contract change degrades gracefully and the rep’s screen keeps working. The property set was trimmed from a planned 12 fields to 6, under a single test: a field exists only if the CRM itself must query, sort, or filter on it.
- Cost discipline runs before the first API call. A quality gate drops out-of-range contacts (including, on one run, my own test record, correctly rejected for being under the AUM floor) so deep research is never spent where no message should go. A daily cap, a 30-day staleness rule with input-hash invalidation, and a per-call credit ledger keep spend bounded and attributable.
- One approved sender persona, held by a named human. Drafts are written for a single reviewed voice. That was a governance decision, and it was recorded as one at the time. The same invariants as the rest of the platform apply: the system of record wins, and nothing reaches an external inbox without a person choosing to send it.
Evaluation
The numbers I can stand behind are operational: a 57-contact first live cohort, a 40-per-day enrichment cap, four depth levels, an audit trail for every enriched contact, and a six-field contract surface. Named IR staff reviewed and sent some of the drafted messages. I have no reply or meeting numbers. Outreach results belonged to the IR team and were never wired into this pipeline’s telemetry, so nobody on my side ever saw them.
Limits
The engagement ended with the pipeline running daily in production; I have no post-exit visibility, so I claim the handoff state and nothing after it. The cohort is small and institutional, chosen deliberately: this was high-value, low-volume outreach where one bad message costs more than fifty unsent ones. The drafting was the easy half of this. The work went into making “no unsourced claim ships” and “the system cannot send” true by construction, so the people reviewing the drafts could stop reading them like a lawyer.