Case study 03 / AI → operational workflow

SFC Outreach Engine

AI research and drafting inside a controlled prospecting process. Code held the explicit rules; a person held the final send decision.

ContextSolve First Consulting’s own prospecting workflow
My workWorkflow design and implementation
Systemsn8n · OpenAI · Google Places · Google Sheets · Gmail

Prospect preparation is a chain of decisions

For Solve First Consulting, preparing relevant outreach meant finding businesses, excluding poor candidates, locating a usable contact, researching fit, drafting a credible message and remembering what happened. I built an n8n workflow to connect those stages across APIs and SaaS systems.

The design qualified candidates before spending deeper research effort. It preserved records so later runs could account for prior drafts, sent mail and disqualifications. The output for a prospect was a Gmail draft, not an autonomous send.

Six-stage outreach architecture: reconcile, configure, discover, research contacts and companies, draft, then hand off to a person
A simplified view of the implemented workflow. Google Sheets supplies configuration and operational records; human review sits beyond automated draft creation. Open the diagram.

A connected operating sequence

01 · Reconcile

Inspect prior outreach records and look for sent Gmail messages that match unresolved drafts.

02 · Configure

Read the active industry, geography, exclusions and research volume for the day.

03 · Discover

Use Google Places, bounded pagination, normalization, deduplication and pre-ranking to build a candidate set.

04 · Research

Use AI to investigate decision-maker contacts and company fit, with explicit gates before deeper work.

05 · Draft

Apply industry guidance and research context to prepare a personalized message.

06 · Record

Create a Gmail draft, write an outreach record and assemble an internal summary for review.

AI judgment, deterministic control

Models handled interpretation: contact research, company research, evidence synthesis, fit assessment and drafting. JavaScript handled defined rules: exclusions, normalization, deduplication, pagination, contact-tier routing, score thresholds, readiness checks and persistence.

The contact research prompt forbade guessed email addresses and requested source URLs. Code rejected missing, masked or syntactically unusable addresses and enforced the A/B/C contact-tier gate. That check was a routing control, not independent proof that a model’s source claim was true or that an address would deliver.

Company research produced a fit score and a pain hypothesis framed as a possibility, not a diagnosis. The cleaner normalized scores and required a threshold of at least 70 plus a usable contact address before drafting. Later checks required a recipient, subject and body before Gmail draft creation.

Models interpreted. Code enforced explicit rules. A person decided whether to send.

The last step stayed human

The workflow prepared Gmail drafts and an internal summary for John to review. It did not contain an automated prospect-send action. The person reviewing the draft could verify the research, edit the message, discard it or choose to send it in Gmail.

That boundary matters because a polished draft can still be wrong in substance or tone. The system supported the decision without hiding it.

What the artifacts show

The supplied n8n export contains 49 connected nodes spanning configuration, discovery, contact evaluation, company research, drafting, logging and reconciliation. The screenshots below show the front and back of that workflow. Open either image for a closer look.

Front half of n8n workflow showing reconciliation, schedule and exclusions, Google Places discovery and pagination
Front half: prior state, configuration, exclusions and discovery. Open image.
Back half of n8n workflow showing contact and company research, drafting, Gmail draft creation and records
Back half: research, eligibility, drafting and records. Open image.
Evidence boundary: the export and screenshots support the implementation and its configured controls. They do not establish time saved, lead volume, conversions, revenue or sustained production results.

For technical readers

Where state lived

Google Sheets supplied the active industry schedule, do-not-contact records, email templates, outreach history, contact-evaluation log and disqualification history. Draft identifiers and later sent-status reconciliation connected the workflow across runs.

Why eligibility was staged

Google Places discovery and coded pre-ranking preceded contact research. Reachable contact tiers gated deeper company research. A normalized fit score and usable email gated drafting. This concentrated later work on candidates that met explicit criteria; no measured cost or time benefit is claimed.

What the implementation does not verify

Syntax checks and model prompts do not prove address deliverability or source truth. The deterministic contact evaluation log exposes inconsistent fields but its pass flag is advisory. The export is manually triggered and does not provide run-history evidence for operational outcomes.

Career context

Experience behind the projects

Three decades of software architecture, modernization and delivery.

Explore experience