OPERAND STUDIO
RUNNING · OUR INBOX · EMAIL LEAD INTAKE

Firstline Email — every email lead caught, qualified, and acknowledged.

An email lead receiver and qualifier on n8n: inbound mail to the studio inbox is caught, normalised into one canonical lead object, qualified against a deterministic rule set, the owner is notified instantly, and an honest acknowledgement goes out. This is the system we run on our own inbox — the case study is us.

SITUATION

Leads arrive in a shared inbox, mixed with everything else.

Enquiries land at hello@operandstudio.com alongside bounces, newsletters, and vendor mail. Triage and first response are manual: someone has to open the inbox, recognise the lead, decide how warm it is, and reply — and until that happens, the prospect hears nothing.
BOTTLENECK

First response bound to whenever the inbox is next open.

Everything rode on attention:
SYSTEM

One workflow from inbox to acknowledgement — with a declared seam.

A single n8n workflow watches the inbox, filters out non-enquiries, normalises each lead into one canonical object, qualifies it against a deterministic rule set into HOT / WARM / COLD, pings the owner, and sends one honest acknowledgement. Between normalise and qualify sits a deliberate enrichment slot — the seam add-on packages plug into without touching the base.
One workflow. Ingress watches the hello@ inbox, normalise produces one canonical lead object, qualify scores it against a rule set into hot, warm or cold, notify pings the owner, and an honest acknowledgement goes out — with telemetry written back for every lead. Between normalise and qualify, an optional fail-open enrichment slot is the declared seam add-on packages plug into; empty by design, the base runs alone and add-ons never touch it.
THE CHAIN, IN ORDER
  • Ingress watches the studio inbox and filters to real enquiries — self-sent, workflow-sent, and obvious automated senders (bounces, no-replies) are excluded up front.
  • Normalise produces one canonical lead object. Fields the email doesn't state stay null — best-effort parsing, never fabrication.
  • The enrichment slot: an optional dispatch to an add-on workflow. Enriched fields merge over nulls only — an add-on can fill gaps but never overwrite a parsed fact. Slot empty or add-on down, the base proceeds unchanged.
  • Qualify scores each lead against a deterministic rule set — sender domain, message substance, enquiry keywords, fresh thread or reply — into HOT / WARM / COLD.
  • Notify pings the owner within one polling interval of ingest: band, sender, subject, one-line excerpt.
  • One plain-text acknowledgement goes out — honest wording, a human replies within one business day — one per thread, ever.
  • Telemetry writes back to the brick's own dedicated table: band, score, and the received / notified / acked timestamps. Deduplicated on message ID, so redelivery produces no duplicate ack, ping, or row.
Honest by construction

One acknowledgement per thread, ever. Parsed fields stay null when the email doesn’t say — nothing is fabricated to fill a form.

A seam, not a dependency

The enrichment slot is optional and fail-open: empty slot or a failed add-on, and the base brick proceeds unchanged.

Every lead leaves a trace

Band, score, and timestamps land in the brick’s own dedicated table — never shared with another system. Deduplicated, so redelivery can’t double-count.

OUTCOME

Measured, not promised.

The system's own telemetry write-back is the measurement instrument — every lead it handles leaves band, score, and timestamps in its table. The outcome section publishes from that record, not from claims.
TELEMETRY PENDING

The numbers land here when the observation window closes: median email-to-notify latency, median email-to-acknowledgement latency, and lead counts by band — pulled straight from the write-back table. Until then this section stays deliberately empty. No invented figures, ever.

PACKAGES

A base brick other packages stack onto.

The receiver and qualifier is the base — self-contained, rule-based, fully functional alone. The enrichment slot is its declared seam: add-on packages plug in there without touching the base.
Firstline — receiver / qualifier (BASE)This system — rule-based intake, qualification, owner notify, and an honest acknowledgement. Runs alone by design.BASE
Readout — LLM enrichment (ADD-ON)One LLM pass plugged into the enrichment seam — intent, band refinement, a suggested reply. The base stays untouched.ADD-ON
Talk about your lead intake →View the components on GitHub →