Strategy Decisions β Locked 2026-04-17
Mark's Y/N answers on the 10 hardest unsolved problems. Each answer locks a design decision. No more debate on these β they are now engine rules.
1. Two-layer gate: Sell-intent Γ Business-health β Y
Both layers must fire before a company reaches the shortlist. A healthy business whose owner isn't ready to sell is useless.
Engine build: separate scoring stacks. sell_intent_score and business_health_score each computed independently. Shortlist requires sell_intent_score > threshold_A AND business_health_score > threshold_B. No single-score blend.
2. No ZoomInfo-class revenue verification in v1 β Y
Accept we cannot reliably verify $15Mβ$50M revenue without paid data. Rank by probability-of-fit proxies: employees, locations, permits, certifications.
Engine build: revenue becomes a signal range, not a hard filter. Employee count Γ state Γ industry multiplier used as revenue proxy. No company hard-excluded for "unknown revenue."
3. Intuition weights Year 1, math after ~10 outcomes β Y
Ewing / CII / Mark judgment sets initial signal weights. Math takes over only after ~10 closed outcomes accumulate per signal. (Note: threshold lowered from 20 β 10 in Mark's answer.)
Engine build: signal_registry.current_weight is editable by humans in Year 1. review_performance() is allowed to run but weight updates are gated behind observations_count >= 10. Before 10, it only reports β doesn't mutate.
4. Partial positive outcomes β Y
"Took our call" = 0.3 credit. "Opened response letter" = 0.1 credit. Real closes = 1.0. Gives the math real data faster than waiting 12+ months.
Engine build: outcome_type enum includes call_taken, letter_opened, meeting_held, loi_received, closed_won, closed_lost. Each carries a credit_weight. Point-biserial correlation computed on the weighted sum, not binary closes.
5. ONE master DNC list, cross-vertical, permanent β Y
Single global do-not-contact table. Applied to every search, every vertical, every partner. Permanent.
Engine build: dnc_list table, columns: company_name, domain, address_hash, phone_hash, added_at, added_by, reason. Every selection query does NOT IN (SELECT ... FROM dnc_list). No exceptions per vertical.
6. NC owns signal design centrally β N (partners do NOT own signal lists)
Mark overrode the audit question. Next Chapter owns all signal design; partners don't design lists for their own verticals.
Engine build: signal_registry.added_by stays limited to Ewing / Mark / Claude. Partners provide input (what matters in their vertical) but do not have write access. This simplifies the system β no per-partner forks of the signal set.
7. Owner-operator vs investor detection BEFORE letter drops β Y
Investor-owned companies auto-skipped. Only owner-operators get the letter.
Engine build: ownership_type is a required signal, gathered before letter generation. Values: owner_operator, family, investor, pe_backed, public, unknown. Letter pipeline skips any target where ownership_type IN ('investor', 'pe_backed', 'public'). unknown requires human review.
8. Multi-vertical fits get ONE outreach to best-fit partner β Y
Protects the seller experience. A precaster who also does structural doesn't get two letters.
Engine build: partner_assignment table stores company_key β best_fit_partner_key with best_fit_score. Selection query dedupes across verticals. When a company qualifies for 2+ verticals, the highest best_fit_score wins.
9. PE-backed auto-excluded in v1 β Y
Even when signals are strong. V1 simplicity.
Engine build: identical to #7 β ownership_type = 'pe_backed' is a hard filter. Reconsider in v2 when we have data on PE responsiveness.
10. No auto-deprecation before N outcomes β Y
Engine cannot auto-deprecate any signal until it has seen at least N real outcomes tied to that signal. Protects against killing signals that haven't had a fair test.
Engine build: signal_registry.status transitions are gated. active β deprecated requires observations_count >= N AND negative_correlation_months >= M. N defaults to 10 (matches #3). Humans can still deprecate manually.
Summary β the design rules these 10 answers lock in
| # | Rule |
|---|---|
| 1 | Two-gate shortlist: intent AND health, both must fire |
| 2 | Revenue is a proxy, not a filter |
| 3 | Humans set weights in Year 1; math unlocks at 10 obs |
| 4 | Partial outcomes count; correlate on weighted sum |
| 5 | Global DNC, permanent, no exceptions |
| 6 | NC owns signal design; partners advise only |
| 7 | Owner-operator detection is pre-letter, not post-letter |
| 8 | One company, one outreach, one partner β ever |
| 9 | PE-backed = hard exclude in v1 |
| 10 | No auto-deprecate before 10 observations |
What Mark still needs to answer (the 25 MC questions)
The 25 multiple-choice questions are published but not yet answered. Those lock the how of each signal β units, cadence, source preference. Once answered, the registry is fully specified and gatherer build can begin without further rules debate.