Umbra Group / Studio / CRM & Pipeline
← Identity v1.0 · Pipeline
Studio Infra Kit · Pipeline Runbook

CRM and
the six-stage pipeline.

One Airtable base, four tables, six stages. Every lead, engagement, outreach thread, and touchpoint flows through the same shape — so the dashboard, the weekly review, and the qualification rubric all read from one source of truth.

Companion to USI-RB-01 §06 (Phase 3 abridged) and USO-ST-04 (the operational logic). This runbook is the deep-dive: tables, fields, formulas, views, Linear bridge, and the Superhuman snippet pack that runs day-to-day outreach.

Doc-IDUSI-RB-03
LayerPipeline
Duration~4 hours
StatusLive
01

How to use this runbook.

The pipeline is the bloodstream of the Studio. Everything else — finance, capacity planning, lead-gen retro — reads off it.

Build it once at Day 0. After that, the only changes should be (a) adding a new outreach pattern, (b) tweaking the qualification rubric in §04, or (c) adding a new view for a new question you keep asking. Resist schema sprawl — new fields are a tax on every future row.

The order matters — Leads before Engagements (an Engagement links to a Lead), Engagements before Outreach (Outreach references the active Engagement, if any), Outreach before Touchpoints (Touchpoints belong to an Outreach thread). Building tables in this order means every link field has something to link to.

02

The six stages.

Every Lead and Engagement lives in exactly one stage. The single-select field is the spine — views, automations, and the Kanban all key off it. From USO-ST-04 §02.

01 · Signal
Signal
A name surfaced — from outreach, intro, inbound, or research. Not yet qualified.
02 · Qualify
Qualify
A 30-min call held. ICP fit, urgency, and budget shape captured.
03 · Scope
Scope
A specific workflow identified. Discovery scope drafted with the buyer.
04 · Proposal
Proposal
SOW + pricing sent. Awaiting decision.
05 · Contract
Contract
MSA + SOW countersigned. Kick-off scheduled.
06 · Active
Active
Engagement underway. Reads from the Engagements table, not Leads.

Two terminal states sit outside the spine: Lost (with reason captured) and Nurture (re-evaluate in 90 days). Anything in Nurture for more than 180 days auto-moves to Lost.

03

Base architecture.

~25 minutes

Four tables, linked. The base is named Studio · Pipeline and lives under the umbra.group Airtable workspace.

TableOne row =Primary fieldLinks to
LeadsA person or account in the pipeline (pre-Active).Lead NameOutreach (many)
EngagementsA signed engagement (Active or completed).Engagement CodeLeads (one), Touchpoints (many)
OutreachA single outbound thread or referral pursuit.Thread SubjectLeads (one), Touchpoints (many)
TouchpointsA single email, call, meeting, or message exchanged.Touchpoint IDOutreach (one) or Engagement (one)
Step 01Create the base.~10 min
  1. In Airtable, create a new base in the umbra.group workspace. Name: Studio · Pipeline.
  2. Choose Start from scratch — the templates carry baggage.
  3. Rename the default Table 1 to Leads. Add three more tables: Engagements, Outreach, Touchpoints.
  4. Set the base color to Green (matches Studio accent in the picker that the brain remembers).
Step 02Set base permissions.~10 min
  • Workspace SSO: enforce Workspace login. No personal Gmail allowed.
  • Base sharing: invite-only. Default new members to Read only.
  • Studio Lead: Owner.
  • Engagement contributors: Editor on the base, but lock down the Leads table to Comment-only via field/table permissions.
§ §03 gate
Four empty tables, base-level permissions set, SSO enforced. If you can invite a test contractor and they land at Read-only, base architecture is done.
04

Leads table.

~45 minutes

The Leads table is the widest. Every field earns its place by feeding either a view, an automation, or the qualification rubric.

FieldTypePurpose
Lead NameSingle linePrimary. Person + Company, e.g. J. Smith · Acme Insurance.
CompanySingle lineAccount name, normalized.
RoleSingle lineBuyer's title.
StageSingle selectSignal, Qualify, Scope, Proposal, Contract, Active, Nurture, Lost. Color each.
ICP TierSingle selectA (perfect fit), B (good fit), C (edge case), D (out of ICP). See rubric below.
SourceSingle selectCold, Warm intro, Inbound, Conference, Referral, Other.
IndustrySingle selectInsurance, FinServ, Healthcare ops, Legal ops, Content ops, Pro services, Other.
HeadcountSingle select<100, 100-500, 500-2000, 2000+.
Workflow HintLong textThe specific workflow they hinted at, in their words.
Qualification ScoreFormulaSee formula below. 0-10 scale.
OwnerCollaboratorWhoever holds the relationship. Almost always Abe at start.
Next ActionSingle lineThe exact next thing to do. Past tense not allowed.
Next Action DateDateWhen that action is due.
Last TouchDateAuto-set by automation when a Touchpoint is logged. See §07.
OutreachLinkTo Outreach table. Many.
EngagementLinkTo Engagements table. One, when stage hits Active.
Lost ReasonSingle selectBudget, Timing, Fit, Competitor, No-response, Other. Required when Stage = Lost.
NotesLong textFree-form. Append-only by convention.

Qualification Score formula

A lightweight numeric rubric to surface the highest-fit leads in any view. Tune the weights as the ICP sharpens.

IF({Headcount}="100-500", 3,
  IF({Headcount}="500-2000", 3,
    IF({Headcount}="2000+", 1, 0)))
+
IF(OR({Industry}="Insurance",
       {Industry}="FinServ",
       {Industry}="Healthcare ops",
       {Industry}="Legal ops",
       {Industry}="Content ops"), 3, 0)
+
IF(LEN({Workflow Hint})>20, 2, 0)
+
IF(OR({Source}="Warm intro", {Source}="Referral"), 2, 0)

Then map the formula output to ICP Tier via a separate single-select that the operator confirms after the qualify call. The formula suggests; the operator decides.

Color coding (single select)

  • Signal — gray. Qualify — blue. Scope — purple. Proposal — yellow. Contract — orange. Active — green. Nurture — teal. Lost — red.
§ §04 gate
Add three test rows representing one A-tier, one B-tier, and one D-tier lead. Confirm the formula returns sensible scores. If the A-tier scores below 7 or the D-tier above 3, retune the weights before moving on.
05

Engagements table.

~30 minutes

An Engagement is created the moment a contract is countersigned. The corresponding Lead row stays put for historical record but is no longer the source of truth for project status.

FieldTypePurpose
Engagement CodeFormulaPrimary. {Client Short} & "-" & {Year} & "-" & {Sequence}. E.g. ACME-2026-01.
Client ShortSingle line4-6 char shortcode, e.g. ACME.
Client FullSingle lineFull legal name on the contract.
YearFormulaYEAR(TODAY()) at row creation, then frozen.
SequenceNumberMonotonic per client per year. Manually set.
LeadLinkBack to the originating Leads row.
TypeSingle selectLighthouse Sprint, Discovery-only, Retainer, Workshop.
StatusSingle selectActive, Paused, Complete, Cancelled.
Start DateDateKick-off date.
Target EndDateContracted end date.
Actual EndDateSet on Status = Complete.
Fee TotalCurrencyTotal contract value (USD).
Fee RecognizedCurrencySum of invoiced milestones, manually updated.
Patterns UsedMulti-selectWhich library patterns were applied. Drives the pattern-frequency report.
Outcome MetricLong textThe agreed measurable outcome from the SOW.
Outcome ResultLong textFilled at handoff, with deltas vs. baseline.
TouchpointsLinkTo Touchpoints table.
NotesLong textAppend-only.

The Engagement Code formula gives a stable filename-safe identifier that gets reused on Drive folders, contracts, invoices, and Linear project keys.

06

Outreach table.

~30 minutes

One row per outbound thread. A Lead can have multiple Outreach rows over time (e.g. a cold thread that died, then a warm-intro thread six months later). Sequencing logic lives in USI-OPS-OUTREACH; this table is the data spine.

FieldTypePurpose
Thread SubjectSingle linePrimary. Mirrors the email subject line.
LeadLinkTo Leads.
PatternSingle selectCold Intro, Warm Intro, 5-day Follow-up, Re-engagement, Inbound Reply, Other.
ChannelSingle selectEmail, LinkedIn, Intro, Conference, Other.
OpenedDateDate thread was opened.
Last TouchpointRollupMAX({Touchpoints > Date}).
Days Since TouchFormulaDATETIME_DIFF(TODAY(), {Last Touchpoint}, 'days').
OutcomeSingle selectIn-progress, Replied-positive, Replied-objection, No-reply, Closed-won, Closed-lost.
TouchpointsLinkTo Touchpoints.
NotesLong textPersonalization context, intro source, etc.

Why a separate table? Because a Lead's relationship with the Studio spans multiple campaigns over years. Pinning everything to the Leads row creates a long-text mess; one Outreach row per thread keeps the history auditable.

07

Touchpoints table.

~25 minutes

The most granular table. One row per individual exchange — a sent email, a received reply, a held call, a Loom shared. Touchpoints are the substrate the rest of the pipeline aggregates against.

FieldTypePurpose
Touchpoint IDAutonumberPrimary. Sequential.
DateDateWhen the touchpoint happened.
DirectionSingle selectOutbound, Inbound.
TypeSingle selectEmail, Call, Meeting, Loom, DM, Other.
OutreachLinkTo Outreach (or blank if linked to Engagement).
EngagementLinkTo Engagements (or blank if linked to Outreach).
SummaryLong textOne paragraph max. What happened, what was said, what's next.
SentimentSingle selectPositive, Neutral, Objection, No-response.
OwnerCollaboratorWho logged it.

Last Touch automation

Set up an Airtable automation that, when a Touchpoint is created with an Outreach link, updates the linked Lead's Last Touch field to {Date} and the Outreach row's Outcome if the Sentiment is decisive.

  1. Trigger: When record created on Touchpoints.
  2. Condition: {Outreach} is not empty.
  3. Action: Update the linked Outreach row's {Last Touchpoint} rollup auto-refreshes; manually update {Outcome} only if sentiment is Positive or Objection.
  4. Action: Find the Lead via Outreach → Lead, update its {Last Touch}.
  5. Test by manually adding a Touchpoint and confirming both downstream rows update.
§ Discipline
Touchpoints are only useful if logged within 24h of the actual exchange. If a touchpoint is logged from memory three weeks later, the sentiment is wrong and the rollup misleads the next decision. Log within the day, or don't log at all.
08

Pipeline views.

~30 minutes

Views are the operating UI. Build these eight; resist adding more until a recurring question can't be answered from one of them.

ViewTableTypeFilterGroup / Sort
Pipeline KanbanLeadsKanbanStage ≠ Lost AND Stage ≠ ActiveGroup by Stage
This WeekLeadsGridNext Action Date ≤ TODAY+7Sort by Next Action Date asc
A-Tier HotLeadsGridICP Tier = A AND Stage ∈ (Qualify, Scope, Proposal)Sort by Last Touch desc
StaleLeadsGridStage ≠ Lost AND Last Touch < TODAY-21Sort by Last Touch asc
Active EngagementsEngagementsGridStatus = ActiveSort by Target End asc
Outreach QueueOutreachGridOutcome = In-progress AND Days Since Touch ≥ 5Sort by Days Since Touch desc
Pattern FrequencyEngagementsPivotPivot Patterns Used × Year
Lost ReasonsLeadsPivotStage = LostPivot Lost Reason × Quarter

Kanban setup

  1. On the Leads table, click + Create view → Kanban.
  2. Stack by: Stage.
  3. Card fields: Lead Name, Company, ICP Tier, Qualification Score, Next Action, Next Action Date.
  4. Hide the Lost and Active stacks (filter, above) — they bloat the board.
  5. Drag-to-move enabled. Moving a card updates the Stage field.

Stale view automation

Add an automation: every Monday at 8am, send the operator an email summarizing the Stale view. If a lead has been silent >21 days, decide once: re-engage, move to Nurture, or mark Lost.

09

The Linear bridge.

~20 minutes

The CRM tracks relationships. Linear tracks delivery. The bridge between them is the Engagement Code — identical string in both systems.

Step 01Provision a Linear team per Engagement.~5 min
  1. On Stage = Active, create a Linear team named {Engagement Code}. E.g. ACME-2026-01.
  2. Set the team's prefix to the same code (so issues read ACME-2026-01-1, etc.).
  3. Add the engagement contributors. Default everyone else to no access.
Step 02Seed the standard project structure.~10 min

Every Lighthouse engagement gets four Linear projects on Day 0 of kick-off, mirroring the four Sprint phases:

  • Phase 1 · Discovery
  • Phase 2 · Redesign
  • Phase 3 · Build
  • Phase 4 · Handoff

Use the saved Linear template Lighthouse Engagement Template — it pre-creates these four with the standard issue checklist from USL-PB-01..04.

Step 03Pin the Engagement Code in both directions.~5 min
  1. In the Linear team description, paste the Airtable Engagement record URL.
  2. In the Airtable Engagement row's Notes field, paste the Linear team URL.
  3. From now on, Linear is the single source of truth for delivery state. Airtable Engagement Status only flips to Complete when Phase 4 ships.
§ Discipline
Don't track delivery tasks in Airtable. Don't track lead state in Linear. Each system has one job. The Engagement Code is the only foreign key between them.
10

Superhuman snippets.

~30 minutes

Snippets are the operational shortcut that makes outreach sustainable. Each snippet maps to an Outreach Pattern; using it auto-fills the body and inserts the variables.

TriggerPatternUse when
;introCold IntroFirst-touch cold email to an A or B-tier lead.
;warmWarm IntroSent after a referrer connects you and the lead.
;follow55-day Follow-upFive business days after Cold Intro, no reply.
;reengRe-engagement90+ days after a Nurture stamp.
;qualifyQualify ReplyReplying to a positive reply — book the 30-min.
;scopeScope RecapAfter a Qualify call, recapping the workflow they described and proposing Discovery.
;sowSOW SendSending the SOW and asking for sign-off.
;kickKick-offPost-signature, scheduling Day 0 of the engagement.
;lostGraceful LostClosing the loop on a polite no.

Snippet authoring rules

  • Every snippet has at least one {{personalization}} placeholder. If a snippet sends without an edit, it's not personalized enough.
  • No more than 5 sentences. Above that, the read-rate falls off a cliff.
  • Always include a one-sentence ask. "Worth a 30-min call next week?" is the right shape.
  • Sign with Abe · Umbra Studio · umbrastudio.com — full signature lives in Superhuman default, snippets sign off with this short form.
  • Source the canonical text from umbra-studio-outreach-emails.docx; snippets are mirrors, not divergent copies.

Setup

  1. In Superhuman: Settings → Snippets → New Snippet.
  2. For each row in the table above, paste the canonical body from the outreach docx.
  3. Mark the placeholder spans with Superhuman's variable syntax so the cursor lands on each one in turn.
  4. Add the trigger string. Test by typing it in a new email and confirming the body fills.
  5. Re-export the snippet pack to studio-shared Drive every quarter so a new device can re-import.
§ Don't
Don't send a snippet without editing. Recipients can spot a template instantly. The snippet is scaffolding — the personalization is the actual outreach. If you find yourself sending unedited snippets, the quality bar has slipped and the response rate will follow within two weeks.
11

Pipeline checklist.

Daily · 15 min

  1. Open the This Week view. Clear or reschedule any Next Actions due today.
  2. Log every Touchpoint from the past 24h with sentiment.
  3. Process inbox — any positive reply triggers a Stage update before noon.

Weekly · 30 min · Monday morning

  1. Open the Pipeline Kanban. Walk every column left to right; each card needs a Next Action with a date.
  2. Open the Stale view. For each lead, decide once: re-engage, Nurture, or Lost.
  3. Open the Outreach Queue. Send any 5-day follow-ups due this week.
  4. Open the Active Engagements view. Confirm each engagement has a current Linear sprint.

Monthly · 60 min

  1. Audit field discipline: any Lead missing ICP Tier, Source, or Industry? Backfill.
  2. Review Lost Reasons pivot. If >40% of losses are Budget, the pricing conversation is happening too late in the sequence.
  3. Review Pattern Frequency pivot. Patterns that haven't been used in two engagements may be ripe for retirement; patterns used in >5 are candidates for productization.
  4. Confirm Snippet pack hasn't drifted from the canonical outreach doc.

Quarterly · 90 min

  1. Re-tune the Qualification Score weights based on which leads converted.
  2. Archive Engagements that completed this quarter. Move them to a Status = Complete view; don't delete.
  3. Run a base-wide audit for orphan rows (Outreach without Lead, Touchpoint without parent). Fix.
  4. Export a CSV snapshot of all four tables to studio-shared/Pipeline/Snapshots/. This is the rollback point if a schema change goes sideways.
§ Bottom line
The pipeline is only as accurate as the touchpoints logged inside 24 hours. Ten minutes a day on field discipline saves an hour of triage every Monday and prevents the entire system from drifting into theatre. Treat the daily checklist as the single highest-leverage habit in the Studio.