$758k in pipeline. From a conference we never attended.
The exact system we use to turn an attendee list into booked, qualified meetings.
Smartlead Office Hours · Callum Moon & Theo Seel Kent, Co-Founders of Clayworks
We don't teach this. We run it every week.
Clayworks is a done-for-you B2B outbound agency. We build the lists, write the copy, run the email, LinkedIn and cold calling, and book qualified meetings straight onto our clients' calendars. A guaranteed number every month, or the money goes back.

Owns delivery and operations, GTM strategy and the copy, plus the systems and automation that make the outbound run at scale.
LinkedIn
Runs the BDR team and leads sales, and he's the sender on most campaigns, so he's the person clients and prospects deal with day to day.
LinkedInB2B companies we've built pipeline for
pipeline for one client in three months
close-rate lift for that same client
money-back guarantee if we miss the target
Same stack, same guarantee, whether it's a client's pipeline or our own.
Most event contacts never hear from you properly.
You spend real money to be in the room. You have 30 to 60 good conversations. Then the backlog swallows you, the list goes cold, and the only follow-up that goes out is a limp "great to meet you, let's stay in touch" that lands nowhere.
all-in cost of a single stand once you add staff, travel and the lost week
real conversations from a good event, only a handful truly qualified
times a year you run the motion. Outbound runs it every week.
And here's the part nobody says out loud. You don't even need to be in the room.
Every event publishes its room.
Pick events by how well their attendees match your ICP, not by whether you are going. The list is the asset. Here is where it lives.
- Event directories and attendee apps (Luma, Swapcard, Brella, Sira, Hopin)
- The "Attendees" tab on LinkedIn events
- Sponsor and exhibitor lists
- Speaker and company follower lists
- Everyone posting the event hashtag
Start with the easy button.
- 01Install Instant Data Scraper (free Chrome extension).
- 02Open a simple, table-style attendee directory.
- 03Click the extension. It auto-detects the rows.
- 04Export straight to CSV.
The catch: it breaks on modern JavaScript sites like Sira. That failure is your cue for the real unlock.
When the easy button breaks, open the hood.
- 01Log into the event site and open the attendee directory page.
- 02Open DevTools, go to the Network tab, and page through once. Watch for the request that returns the attendee data.
- 03Copy that request and hand it to Claude: "write me a browser console fetch loop that pages through this endpoint using my session and downloads all results as JSON."
- 04Claude writes the snippet. Save it as a bookmarklet, or paste it into the console.
- 05On the attendee page, click the bookmarklet. It pages through using your logged-in session and downloads one JSON file.
- 06Upload the JSON to Claude and get a clean CSV back.
No data leaves your machine. The loop just borrows the session your browser already has.
(async()=>{const base='https://www.siraplatform.com/connect/arctic15/attendees?role=Founder&role=Attendee';const pages=[];for(let p=1;p<=100;p++){const r=await fetch(`${base}&page=${p}&_rsc=1`,{headers:{'rsc':'1','next-url':'/connect/arctic15/attendees'},credentials:'include'});const text=await r.text();if(!text||text.length<500||text.startsWith('Redirecting')){break;}pages.push({page:p,text});await new Promise(r=>setTimeout(r,250));}const blob=new Blob([JSON.stringify(pages)],{type:'application/json'});const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='arctic15-raw.json';a.click();})();You don't write the script. Claude does.
The trick was never JavaScript. It is handing Claude one real request and telling it what you want back. Here is the exact move.
- 01On the attendee page, open DevTools and go to the Network tab. Filter to Fetch/XHR.
- 02Page through the directory once so the data request fires. Find the request whose response contains the attendee names.
- 03Right-click it, then Copy, then "Copy as fetch". That grabs the URL, the headers and your logged-in session in one click.
- 04Paste it into Claude with the first prompt below.
- 05Claude reads the request, works out how the pages are numbered, and writes the console script. Ask it to explain each line before you run anything.
- 06If it misbehaves, paste the console output back to Claude and it fixes it. That back and forth is the whole skill.
I'm scraping an event attendee directory. Below is the exact network request my browser makes to load one page of attendees, copied as fetch from DevTools. Write me a script I can run in the browser console that loops through every page using my logged-in session, keeps my credentials so it stays authenticated, increments the page number until the results come back empty, waits about 250ms between requests so it does not hammer the server, collects every response, and downloads them all as one JSON file. Explain what each part does before I run it. [ then I paste the copied request ]
I ran it. Here is what the console printed: [ paste the output or error ]. It [ stopped after page 1 / returned the same page every time / returned a login page ]. Adjust the script so it pages through correctly.
Why this works: "Copy as fetch" carries your logged-in session, so the script inherits the access your browser already has. You never hand over a password, and nothing leaves your machine.
Always have Claude explain the code and read it yourself before running. Never paste anything into a console you do not understand.
1,683 names down to the 895 that matter.
- Parse the raw file into a clean CSV: name, title, company, LinkedIn, website.
- Strip agencies, recruiters, students, investors, competitors and out-of-ICP verticals.
- Tier what's left: A = hot fit, B = strong fit no conversation, C = broad.
- Enrich the shortlist in Clay for email and mobile. Hits-only billing.
- Merge with the source data, never replace it.
- Geography filter before you write anything.
unique attendees scraped
ICP-fit after filtering
tiered by fit and intent
We've packaged this pass as a Claude skill: it keeps every original column, writes a removed list with a reason on every row, and its automatic A-tier matched our hand-graded list almost exactly. It goes out with the follow-up.
Three emails, one thread, zero generic check-ins.
Warm reopen with a genuine reason and a small ask. One hard proof number, no brochure.
Do the maths on the event. Same buyers, same pipeline, without the week off the desk. Offer a free 25-buyer sample list.
Explain the model, drop the guarantee, ask for 15 minutes.
Never send a follow-up that doesn't add something. Every email earns its place with a real reason, a real number or a real gift. Next three panels: the exact copy we sent.
The re-entry.
Hi [First name],
I noted your contact from the [Event] app after the event, but things got busy afterwards and I didn't get the chance to send a quick note. Wanted to get in touch now as what you're working on at [Company] looked interesting.
A bit about me: I co-founded Clayworks, a done-for-you outbound agency for B2B companies. We run signal-based, multi-channel campaigns across email, LinkedIn and cold calling, all built on the same infrastructure we use for our own outbound. We've worked with 15+ companies to build their pipeline, including adding £1.5M of pipeline for Variolytics in three months.
Would be great to connect. Do you have time for a short call sometime over the next few days?
Best,
Callum
- 01The honest delay does the warming. “Things got busy afterwards” turns a cold follow-up into a believable one.
- 02The event app reference is proof you were there. It anchors the email to a shared, real moment.
- 03One hard number, not a brochure. £1.5M for Variolytics in three months carries the whole credibility load.
- 04The ask is deliberately small — a short call over the next few days is easy to answer either way.
The reframe.
Hi [First name],
Hope you got value out of [Event].
A stand at one of these usually runs £5k to £20k by the time you've added staff, travel and the lost week. You walk away with maybe 30 to 60 real conversations, of which a handful are properly qualified. Great format, but the cost per qualified meeting is high, and you only get to run it a few times a year.
We replicate the same flow of qualified conversations through outbound, every week, for a fraction of the cost. Same buyers, same pipeline, without the week off the desk.
Want me to put together a sample list of 25 buyers we'd target for [Company] this month? Reply “send it” and I'll have it in your inbox tomorrow. No call required, on us.
Best,
Callum
- 01It uses their own spend as the anchor. Costing out the event reframes outbound as the cheaper route to the same outcome.
- 02“Same buyers, same pipeline, without the week off the desk.” One line maps the familiar onto the new. No jargon.
- 03The CTA is a gift, not a meeting. A free 25-buyer list with a one-word reply gets a micro-yes.
- 04“No call required, on us” kills the fear that yes means getting trapped on a pitch call.
The offer.
Hi [First name],
Here's how Clayworks works.
You tell us how many qualified meetings you want each month. We build the lists, write the copy, run the email, LinkedIn and cold calling, and book the meetings straight onto your team's calendar. Our team, our stack, our personalisation.
If we don't hit your qualified meeting target in the first three months, we refund every penny you've paid. No questions, no escape clauses.
Got 15 minutes this week or next to see what this would look like for [Company]?
Best,
Callum
- 01It finally explains the mechanism. By email three they're warm enough to want the how.
- 02The guarantee flips the risk. A full refund if the target is missed is the strongest line in the sequence.
- 03“No questions, no escape clauses” pre-empts the “what's the catch” instinct before it forms.
- 04A specific, time-boxed ask, framed around their company — not an open-ended “let's chat”.
Four fields to swap: [First name], [Event], [Company] and the currency. Rotate 2–3 phrasings per line so no two sends are identical.
Load it, layer it, let it run.
- 01Load the three-email cadence into Smartlead.
- 02Set deliverability, domains and sending schedule.
- 03Layer channels by tier: A-tier gets email plus LinkedIn plus a call. C-tier gets email only.
- 04Meetings book straight onto the calendar.
The whole campaign cost less than a stand's coffee budget.
No stand, no flights, no lost week. Two event tickets at €30, then enrichment billed on hits only across the 895 ICP-fit contacts.
event ticket — the only thing we paid the event
895 validated emails at $0.012 each, hits-only billing
895 mobile numbers at $0.14 each
all-in campaign cost
42 meetings booked
A £5k–20k stand versus €30 and change. Same room, same buyers — the difference is whether you work the list afterwards.
What one scraped list turned into.
pipeline generated from ~$169 spent
scraped
ICP-fit
positive replies
lead magnet requests
meetings booked
qualified and sat
ghosted (honest funnel)
Take it. Run it yourself.
Everything in this deck is the whole system — the sourcing, the scrape, the filter, the scoring, the three emails word for word and the timing behind them. The swipe file and the qualification skill go out with the follow-up email.
- Pick one event whose room matches your ICP.
- Pull the list this week, not next quarter.
- Cut hard to the half that actually fit, with a reason on every cut.
- Write three emails that each earn their place.
- Send, measure replies, and keep the sequence honest.
The list is the asset. Most teams pay to be in the room and then never work the room. That gap is the whole opportunity.