Open to work — remote

I build outbound systems that fill the sales pipeline.

Sending infrastructure, lead list building, cold email and LinkedIn outreach. Interested replies go into the CRM, tracked through follow-up to a booked call.

Md Shafiq Khan
Revenue Operations & Automation Specialist
2–5sales calls booked per day, consistentlyCoaching client
899qualified opportunities producedAcross all campaigns
~5%reply rate held across three monthsMay – Aug 2026

How I Work

Nothing gets built until I understand the business.

A campaign goes wrong long before the first email sends — usually because someone started from a brief they only half understood. These are the steps I work through, in the order they happen, from the first question to the numbers after go-live.

Read the brief, then keep asking

I start from what the client wrote and work out what the business is actually trying to achieve. Anything unclear goes onto a written list of questions, and any answer that would not hold up in practice goes back as another one. Once there is enough to begin, I begin — the rest of the questions come during the work, because most of them are impossible to see at the start.

Set up the sending infrastructure

Domains bought and configured, DNS records set so the mail authenticates, mailboxes created and warmed on a staged schedule. This is the layer that decides whether anything else lands, so it gets built first rather than fixed later.

Build the lead list

Leads pulled from Apollo, Sales Navigator or wherever the right people actually are, then enriched until the list matches the client’s ideal customer rather than just a job title.

Check deliverability before sending

Placement, bounce and blacklist checks run before any volume goes near the list. Finding a problem in the bounce report means it has already cost the domain.

Wire it into the CRM

Replies, bookings and every lead the campaign produces land in GoHighLevel with their source attached, so a booked call can still be traced back to the channel that produced it.

Build the automations the business needs

n8n and Claude, built around what this particular business actually repeats. Every one has different manual work eating someone’s day, so the automation is built for that rather than from a template.

Try to break it

Testing is not clicking through the happy path. I go looking for the edge cases that would break it in production, and whatever fails gets fixed before the client ever meets it. Finding a problem here costs an afternoon. Finding it in production costs leads.

Watch the numbers and adjust

Once it is live I watch what it actually does — reply rate, bounce, inbox placement, and how many replies turn into booked calls. Campaigns drift, and the numbers say which part needs changing before anyone notices the pipeline thinning.

Why the order matters: a campaign built perfectly against a misunderstood brief still sends to the wrong people, and nobody finds out until the replies do not come. That is why the questions never stop — asking is cheap at any point, and rebuilding a burnt domain is not.

Case Studies

Problem, build, result.

Client names are withheld where engagements are confidential. Each one opens into the full breakdown — screenshots, workflow canvases and walkthroughs.

01Executive coaching business · US

Multi-channel acquisition engine

Problem

The business needed more booked calls than one outbound channel could produce on its own, and needed them arriving steadily rather than in bursts.

How I solved it

Two outbound channels feeding one booking layer — cold email on dedicated warmed infrastructure, LinkedIn on a managed account, both routed into GoHighLevel for capture, follow-up and booking. Booking source splits at the calendar layer, so channel performance stays readable at the pipeline stage.

~5% reply rate held across three months · 899 qualified opportunities

InstantlyLinkedCampGoHighLevelApollo
02Executive coaching business · US

LinkedIn outreach at sustainable volume

Problem

LinkedIn was the channel to add for more bookings, but it limits how much an account can do in a day and restricts the ones that push past that — so the volume had to come from inside that ceiling rather than from sending more.

How I solved it

Campaigns run in LinkedCamp against one managed account, with timezone-targeted sending and staged connection sequences, replies routed into the CRM. Daily invite volume deliberately held near 24 — under the level where LinkedIn starts restricting accounts.

26,670 prospects · ~28% acceptance · ~48% reply on accepted · no restrictions

LinkedCampSales NavigatorGoHighLevel
03B2B consulting firm · Australia

Closing the attendance gap in GoHighLevel

Problem

GoHighLevel knows that a person booked a call, but it cannot detect whether the person attended the call or not.

How I solved it

I built an attendance system. It waits 40 minutes after the scheduled booking time, then sends an attendance form link to the admin. The admin answers Showed or No-show. Other workflows depend on that answer: the workflow carries on from there, and the Showed or the No-show recovery workflow gets triggered.

11 published workflows — capture through reactivation

GoHighLevelWorkflowsFunnels & FormsCalendars
04B2B consulting firm · Australia

Four CTA buttons, four offers, one form

Problem

Four offers, four buttons, one landing page, and all four open the same booking form. The record had to show which button a person clicked, or every lead lands in the CRM looking the same. GoHighLevel buttons do one thing only, and these were already opening the form, so there was no second action left for saving the offer. The usual way around that is to pass it in the URL, but then the page reloads on every click.

How I solved it

GoHighLevel only gives you two ways in: a custom class name on the button, and your own code in the page. So each button got its own class name, and the code checks which one was clicked and fills it into a hidden field before the form sends. One catch: writing to that field the normal way does nothing, the form still submits blank. It has to be set the way the form's own framework sets it, and then told the field changed.

Every lead arrives tagged with the offer they clicked · no page reload · UTM tracking still works

GoHighLevel FunnelsUTM captureCustom code
05B2B lead generation agency · US

Deliverability reporting across 39 workspaces

Problem

Deliverability lives or dies at the sending domain, but the platform reports per mailbox and per campaign. Seeing one domain meant opening a workspace and adding up hundreds of mailboxes by hand, thirty-nine times over. Nobody did that weekly, so bad domains were found late.

How I solved it

One scheduled job reads every mailbox across all 39 workspaces, groups them into sending domains and reports the ones carrying real volume — into the spreadsheet the team already works in, and a dashboard behind a login. It runs unattended every Monday, and proves its own coverage rather than assuming it.

46,700 mailboxes · 10.27M emails analysed · 759 domains reported in 167s

TypeScriptNodeTrigger.devMongoDBNext.js
06Outbound lead generation agency · US

Buying-signal engine for IT asset disposal

Problem

The agency sells for IT asset disposal companies, where everything turns on catching a business the week it closes a site or lets four hundred people go. That moment does reach public records — but across nine sources, on no particular day, buried in thousands of documents that all look the same.

How I solved it

Twenty watchers read nine sources for eleven buying events. Their own rules settle 70% of what arrives before any paid service is touched, AI reads only what needs judgement, and every lead is stored with the quote, both dates and the source link — so the first line of the email writes itself.

478 qualified leads · 451 companies · 45 US states · $0.0006 per lead

TypeScriptPublic recordsAI extractionDashboard
07B2B lead generation agency · US

Cold email infrastructure across client workspaces

Problem

The agency ran outbound for several client accounts at once and needed sustained sending capacity without damaging domain reputation. On shared infrastructure, one deliverability problem takes every client down together.

How I solved it

Isolated per-client workspaces with dedicated domain pools and mailboxes — domains bought and configured in batches, full DNS authentication on each, staged warm-up schedules, inbox rotation, and continuous bounce and placement monitoring. New clients onboard against a standard template rather than a fresh build.

Bounce near 4% · unsubscribes at 0.1% at sustained volume

Email BisonMicrosoft 365Google WorkspaceSPF / DKIM / DMARC
08Executive coaching business · US

CRM as the single source of truth

Problem

Leads were coming in from cold email, LinkedIn and inbound, but there was no single pipeline holding them. Follow-up was inconsistent, and there was no reliable way to tell which channel a booking came from.

How I solved it

One GoHighLevel account holds every channel. Leads get tagged with their source as they come in, each channel books on its own calendar, appointments are assigned across the coaching team, and every booking is tracked through confirmed, cancelled and rescheduled.

11,347 contacts · 200-opportunity pipeline · 4 calendars, 10-person team

GoHighLevelPipelinesSmart ListsAttribution

Automation Projects

Systems I build end to end.

Three examples of what I do to save hours of manual work.

01n8n · 31 steps

Domain Health Tracker

Problem

Cold email quietly stops landing in inboxes and goes to spam instead. Checking 200 domains by hand takes a day, so nobody does it.

What it does

Checks every domain every Monday, scores it out of 100, and emails the report. The first run found the same fault on 200 of 205.

n8nSPF / DKIM / DMARCGemini
02n8n · 25 steps

Cold Email Reply Handler

Problem

Replies come in different kinds, and only some need an answer. Working out which is which, then writing each one by hand, takes hours.

What it does

Sorts every reply into one of five kinds and drafts an answer only for the ones that need it. Nothing sends until a person approves it.

n8nGeminiSlack approval
03n8n · 35 steps

LinkedIn Content Pipeline

Problem

Posting consistently takes an hour nobody has, and reposting someone else’s words as your own costs you trust.

What it does

Reads 40 posts every business day, works out why one landed, and drafts a new post. Nothing goes live until a person approves it.

n8nGeminiSlack approval

Skills

What I work with.

Outbound and automation first, the CRM they feed second, and the engineering underneath all of it.

Outbound

Email & LinkedIn
Email BisonInstantlyLinkedCampApolloSales NavigatorClay

Email Infrastructure

Deliverability
SPF / DKIM / DMARCMicrosoft 365Google WorkspaceDomain managementWarm-up & rotationBlacklist monitoring

Automation & Integration

Workflows & APIs
n8nClaudeWebhooksREST APIsJSON

CRM

GoHighLevel
GoHighLevelWorkflowsPipelinesCalendarsCustom fieldsFunnelsForms & surveys

Software Development

Engineering foundation
JavaScriptNode.jsLaravelReactFlutterMySQLMongoDBDigitalOceanVPS / cPanel

Background

Resume

From writing code to building revenue systems.

Experience

2025 — Present · Remote

Revenue Operations & Automation Specialist

Flowtics.ai
  • Plan and run cold email and LinkedIn campaigns for client accounts — targeting, list building, sequencing and reply handling.
  • Set up and maintain sending infrastructure in isolated client workspaces: domain provisioning, mailbox setup, SPF / DKIM / DMARC, staged warm-up and inbox placement monitoring.
  • Protect deliverability day to day through inbox rotation, sending limits, blacklist monitoring and list hygiene.
  • Build the CRM and automations behind each campaign in GoHighLevel and n8n — pipeline stages, follow-up, booking, reply routing and source tracking.
  • Report on channel performance and adjust targeting, copy and sending volume.
2023 — 2025 · Remote

Revenue Operations & Automation Specialist

Binary Space
  • Built and ran multi-channel outbound for B2B clients across cold email and LinkedIn — prospect research, list building, sequencing and reply handling.
  • Built and maintained the GoHighLevel CRM: pipeline stages, lead capture, follow-up automation, appointment booking, no-show recovery and lead assignment across the sales team.
  • Built lead lists, enrichment and personalisation in Clay.
2021 — 2023 · Chattogram, BD

Full Stack Developer & Client Solutions

Vast Global Ltd
  • Technical point of contact for client accounts — turned business requirements into delivery specs and managed scope and timelines through to launch.
  • Built and self-hosted e-commerce platforms, business management software and mobile applications across React, Flutter, Node.js, Laravel, MySQL and MongoDB.

Why Revenue Systems

Md Shafiq Khan
App developer, 2020
RevOps engineer, today

The company I joined shut down because nobody was bringing in clients.

I started as an app developer in 2020. About a year later the company closed — not because the engineering was bad, but because there was no system bringing in new business. I watched capable developers lose their jobs over a problem that had nothing to do with code.

That stuck with me. I spent the next few years building software, then moved to the part of the business that keeps it alive — finding the right customers, reaching them, and turning them into booked calls.

Today I build that engine. The sending infrastructure, the lists, the CRM behind it, and the automations that hold the whole thing together. It is the same discipline I used writing production code, pointed at revenue instead of features.

Contact

Get in touch.

Full-time and remote, with a team building outbound as a system rather than a campaign. If you are hiring for one of these — or something close to it — I would like to hear about it.

  • Revenue Operations & Automation Specialist
  • Marketing Automation · CRM Manager