Digital Marketing Specialist — London, ON — working worldwide
I started in 2020 doing SEO for a travel company — shooting rooms nobody wanted to look at — and learned the only lesson that has held up since: attention is not bought, it is earned in the first second and kept with the next fourteen.
Since then I have run paid social and search for restaurants, real-estate teams, auto dealers and D2C brands — writing the angle, shooting the frame, cutting the edit, launching the campaign and then sitting in the dashboard at 2am figuring out which of my own ideas was wrong.
That full-stack loop is the whole pitch. Nothing gets handed between four vendors and loses its point on the way.
Nain
$2.4MAd spend managed
312MImpressions delivered
48Brands worked with
6.1xBlended ROAS, best quarter
02 — What I do
Fivedisciplines,oneloop
01
Photography
Product, food, interiors and people — shot in a way that already knows what the caption is going to say.
Product
Lifestyle
Interiors
Retouch
02
Video Edits
Hook in the first 800ms, retention beat every four seconds, captions burned in, sound designed for a muted feed anyway.
Reels
TikTok
YouTube
UGC
03
Ad Creations
Creative built as a testing matrix: three angles, four hooks, one format, so the winner is discovered instead of guessed.
Static
Motion
Copy
Variants
04
Campaign Management
Meta, Google, TikTok and LinkedIn budgets run against one north-star number, checked daily and cut without sentiment.
Meta
Google
TikTok
LinkedIn
05
Analytics
GA4, server-side events, UTM discipline and a dashboard your accountant and your designer both understand.
GA4
GTM
Looker
Attribution
03 — Selected work
Thereceipts
Pick a track. Every project opens with the brief, the brainstorm that got it there, and a video where I walk through the thinking out loud.
Nothing in this track yet.
Photography
Saffron House — the menu nobody photographed
A 40-year-old restaurant with no usable photograph of its own food.
Client
Saffron House
Year
2026
Role
Art direction, photography, retouch
Stack
Sony A7IV, 35mm, Capture One
Plays from YouTube. Nothing loads from Google until you press play.
38Final images
2Evening services
9 moContent it carried
01The brief
They wanted "nicer food photos for Instagram". What they actually had was a menu of thirty dishes and four phone snaps, none of which showed the thing the regulars actually come back for: the room at 7pm when it is full.
02The brainstorm
The obvious shoot is overhead flatlays on marble. Every restaurant within three blocks already has that, and it makes a 40-year-old family kitchen look like a franchise that opened last spring.
So we killed the studio idea. The angle we kept was heat — steam, char, hands, the pass. Nothing styled to death, everything shot at the temperature it is actually served at. I brought one light and used the kitchen's own tungsten for the rest, because the warm cast IS the brand.
The unlock was shooting during a real service instead of a closed set. Harder, uglier, and the reason the pictures look like a place instead of a catalogue.
03The build
Two evening services, 900 frames, 38 selects. Shot tethered so the chef could reject a plate before it left the pass. Delivered as a graded set in three crops — 4:5, 1:1 and 16:9 — so nothing ever had to be re-cropped badly by whoever was posting that week.
04The result
The set carried nine months of organic posting and became the creative base for the paid campaign that followed. Reservation clicks from Instagram went from a rounding error to the second-largest source. The dish photos that underperformed were the two we styled most.
Photography
Northline Autos — twelve cars, one light
Dealer inventory shots that stopped looking like dealer inventory shots.
Client
Northline Autos
Year
2025
Role
Photography, edit, template system
Stack
Canon R6, 24-70mm, Lightroom presets
Plays from YouTube. Nothing loads from Google until you press play.
11 minPer car, down from 40
12/wkCars shot
1Light
01The brief
Twelve used cars a week, photographed in a gravel lot under a flat grey sky, going up on a listing site where every competitor has the same flat grey sky.
02The brainstorm
The constraint was time: whatever I designed had to be repeatable by a salesperson with a phone after I left.
So the idea could not be a look that depends on me. It had to be a rule. We tested three: golden-hour only (unreliable in this climate), a portable backdrop (too slow), and one fixed position against the workshop's black wall with a single light on a stand.
The black wall won because it does two things at once — it kills the sky problem and it makes every car in the inventory look like it belongs to the same brand.
03The build
Marked two floor positions in tape, set the light height once, wrote a one-page card with the three angles and the exact camera settings. Built two Lightroom presets so exports match whether it is my camera or a phone.
04The result
Listing photos now take eleven minutes per car instead of forty. Click-through on their marketplace listings rose noticeably, and their paid social finally had a consistent image library to draw from.
Photography
Cadence Fitness — bodies, not equipment
A gym brand shot without a single photograph of a machine.
Client
Cadence Fitness
Year
2025
Role
Concept, photography, retouch
Stack
Sony A7IV, 85mm, natural light
Plays from YouTube. Nothing loads from Google until you press play.
24Frames
6Real members
01The brief
Rebrand launch. The old library was rows of empty equipment lit like a car showroom — the visual language of a place you have to go to, not one you want to go to.
02The brainstorm
Everyone shoots the gear because the gear is what was paid for. But nobody joins a gym because of a leg press.
We listed what members actually described in their reviews: the 6am crowd, knowing the front desk person's name, the walk home after. None of that is equipment. So the whole shoot became faces and the minutes either side of the workout, and the equipment is only ever out of focus behind someone.
I argued for keeping sweat and blown-out hair in the final selects. That was the fight. It is also the reason the pictures do not look like stock.
03The build
One day, six members rather than models, shot in the real 6am light. No fill, no smoothing pass in retouch beyond dust.
04The result
The launch set became their highest-saving Instagram content of the year and cut their paid creative costs, because the same 24 frames fed six months of ads.
Photography
Meridian Interiors — a room at three times of day
Interior stills built for a carousel, not a magazine spread.
Client
Meridian Interiors
Year
2025
Role
Photography, sequencing
Stack
Canon R6, 16-35mm, tripod, blend
Plays from YouTube. Nothing loads from Google until you press play.
3xCarousel completion
3Times of day
4Rooms
01The brief
A design studio whose finished projects looked identical to every other design studio in the city once compressed into a square thumbnail.
02The brainstorm
The differentiator was not the furniture, it was how the light moves through their rooms — they design around windows. A single hero photo cannot show that.
So instead of one perfect frame per room, we shot the same locked-off frame at 8am, 2pm and 8pm. The carousel format does the work: swipe, swipe, and you have understood the entire pitch of the studio without reading a caption.
It is a slower, more expensive way to shoot one room. It is also the only version anyone remembers.
03The build
Three visits per room, tripod position marked and left in place, exposures blended only where the window blew out.
04The result
Carousel completion rate roughly tripled against their previous single-image posts, and two enquiries in the first month quoted the time-of-day sequence directly.
Video Edits
The 0.8-second hook test
Nine openings cut from the same footage, judged only on second one.
Client
Cadence Fitness
Year
2026
Role
Edit, sound design, testing
Stack
Premiere Pro, After Effects, Meta Ads
Plays from YouTube. Nothing loads from Google until you press play.
61%3-second retention, up from 31%
9Hooks tested
$0New footage
01The brief
A 45-second brand film nobody watched past four seconds. The client wanted a new shoot. They did not need one.
02The brainstorm
Retention graphs are brutal reading: the drop was not gradual, it was a cliff at 0:03. That is not a content problem, that is an opening problem.
So before spending a cent on production, we cut nine different first-seconds from footage we already had — a face mid-sentence, a hard sound effect, a text-only frame, an unfinished action, a number. Everything after second three stayed identical across all nine, which is the only way to know what you are actually measuring.
The winner was the unfinished action: someone starting a movement, cut before it completes. People stay to see it land.
03The build
Nine variants exported at the same length and codec, launched as a single ad set with even budget, three days, then read at equal impressions rather than equal spend.
04The result
Three-second retention went from 31% to 61%. The full-film completion rate more than doubled off a change that cost an afternoon of editing and no new footage.
Video Edits
Silent-first edits for a feed with the sound off
A caption system that survives being watched muted at arm’s length.
Client
Saffron House
Year
2025
Role
Edit, motion, captioning
Stack
Premiere Pro, After Effects
Plays from YouTube. Nothing loads from Google until you press play.
+48%Average watch time
4Words on screen, max
1Template, reusable
01The brief
Reels performing well on saves, badly on watch time. The edits were built around a voiceover most viewers never heard.
02The brainstorm
The mistake was treating captions as an accessibility add-on rather than as the actual script.
We rebuilt the edit muted, on a phone, at arm's length — which is the real viewing condition — and anything that stopped making sense got recut. Captions became the primary layer: two to four words at a time, one idea per card, timed to the cut rather than to the speech.
Sound design then went back on top as a bonus, not a dependency. Every edit now works twice.
03The build
A reusable caption template with fixed safe margins, a two-weight type pair, and a hard rule of no more than four words on screen at once.
04The result
Average watch time rose by roughly half. The same template has since been handed to their in-house person and the edits still look like ours.
Video Edits
Twelve seconds from a ninety-minute interview
Long-form founder footage cut into a month of short-form.
Client
Northline Autos
Year
2025
Role
Story selection, edit
Stack
Premiere Pro, Descript
Plays from YouTube. Nothing loads from Google until you press play.
14Shorts from one interview
90 minSource footage
1That did the work
01The brief
Ninety minutes of a founder talking well and a marketing team with no idea what to do with it.
02The brainstorm
The temptation with long footage is to cut a highlight reel. Highlight reels perform badly because they have no single idea.
Instead I transcribed the whole thing and read it as text, marking only the sentences that would survive with no context at all. There were fourteen. Each of those became its own edit with its own hook, and everything else was thrown away.
The test I use: if the first sentence needs the second sentence to make sense, it is not a short.
03The build
Fourteen edits between nine and twenty-two seconds, each with a distinct opening frame, captioned and posted across four weeks.
04The result
One of the fourteen carried most of the reach — which is the normal shape of this and the reason for making fourteen rather than one.
Video Edits
Before/after cuts that do not lie
Transformation edits for a category full of dishonest ones.
Client
Meridian Interiors
Year
2026
Role
Edit, grade, sequencing
Stack
Premiere Pro, DaVinci Resolve
Plays from YouTube. Nothing loads from Google until you press play.
6Rooms
1:1Matched framing
01The brief
Renovation reveals. The category standard is a wide-angle "before" shot in bad light and an "after" shot at a completely different focal length, which everyone can now see through.
02The brainstorm
The whole genre has trained viewers to be suspicious. So the credibility came from matching, not from flattering: same lens, same position, same time of day, same grade.
Counter-intuitively we made the before shots look better than the client wanted. A fair before makes the after believable, and believable is what converts.
The transition is a straight cut on a beat, not a wipe. Wipes read as a sales technique.
03The build
Locked tripod positions recorded at survey stage, matched grades, one hard cut per room, no music swell on the reveal.
04The result
Comment sentiment shifted from "fake" accusations to specific questions about cost and timeline — the kind that turn into enquiries.
Ad Creations
Stop scrolling, start booking
Three angles, four hooks, twelve statics — one of them did everything.
Client
Saffron House
Year
2026
Role
Concept, copy, design
Stack
Figma, Photoshop, Meta Ads
Plays from YouTube. Nothing loads from Google until you press play.
-38%Cost per booking
12Variants
5 moWinner ran
01The brief
A launch budget with no time for a slow learning phase, and a client convinced their discount was the story.
02The brainstorm
The discount angle is the one every restaurant runs, which is why it costs the most to win with.
We wrote three angles instead: scarcity (the room only has eleven tables), ritual (what the regulars order without looking), and price. Four hooks under each, one format, so twelve statics that differ in exactly one variable at a time.
Ritual won and price came last. The client's instinct was the losing angle, which is the entire argument for testing rather than debating.
03The build
Twelve statics built from a single Figma component set so a new variant takes minutes. Copy written first, layout second.
04The result
Cost per booking fell by more than a third within two weeks, and the winning creative ran for five months before fatiguing.
Ad Creations
The table is ready
A vertical creative system that survives four aspect ratios.
Client
Saffron House
Year
2026
Role
Design system, motion
Stack
Figma, After Effects
Plays from YouTube. Nothing loads from Google until you press play.
2 hrsPer new variant, from 2 days
4Ratios from one master
60%Safe area rule
01The brief
The same campaign needed to run on Reels, Stories, the feed and a display network without four separate design jobs.
02The brainstorm
Most teams solve this by designing for 9:16 and then cropping, which puts the logo in a safe zone on one platform and under a UI element on another.
We designed the safe area first — a single grid where the type never leaves the middle 60% and the brand mark sits on a corner anchor that exists in all four ratios. Then the artwork was built outward from it.
Boring, structural, and it removed a whole category of last-minute rework.
03The build
One master file, four artboards, auto-layout constraints, and a checklist for export naming so the ad account stays legible six months later.
04The result
Creative turnaround for a new variant dropped from two days to about two hours.
Ad Creations
Sold in nine days
Real-estate creative that leads with the number, not the house.
Client
Whitfield Property Group
Year
2025
Role
Copy, design, testing
Stack
Figma, Meta Ads, Google Display
Plays from YouTube. Nothing loads from Google until you press play.
4.1%CTR
10 minTo build a new one
2xAccount average
01The brief
An agent competing against listings with better houses and bigger budgets.
02The brainstorm
You cannot win on the property when the property is not yours to choose. So the creative stopped selling houses and started selling the agent's track record.
The headline became a result — days on market — with the house demoted to background texture. It is closer to a recruitment ad than a property ad, which is exactly why it stood out in a feed of identical kitchens.
We tested the honest number against a rounder, better one. The specific number won, as it usually does.
03The build
A template where the only editable fields are the number, the neighbourhood and the photo, so a new listing takes ten minutes.
04The result
Click-through rate more than doubled the account average and the cost per valuation request fell substantially.
Ad Creations
You left something behind
Retargeting creative that admits it is retargeting.
Client
Loom & Larder
Year
2026
Role
Concept, copy, design
Stack
Figma, Meta Ads
Plays from YouTube. Nothing loads from Google until you press play.
5.2xRetargeting ROAS
3Sequence stages
Day 5First discount
01The brief
A cart-abandonment sequence that had been running the same three product shots for a year.
02The brainstorm
Retargeting creative usually pretends to be a first impression. It never is — the viewer knows they were on the site, and the pretence is what makes the ad feel creepy rather than useful.
So the copy owns it plainly, and the creative shows the actual product they looked at against a black ground with nothing else in frame. No lifestyle, no model, no discount in the first touch.
The discount only appears at day five, which meant we stopped paying a margin to people who were going to buy anyway.
03The build
A three-stage sequence with distinct creative per stage and a hard frequency cap, because the fourth impression is where goodwill starts costing money.
04The result
Return on ad spend on the retargeting segment improved sharply, mostly by no longer discounting the first touch.
Campaign Management
Rebuilding an account that had 46 ad sets
Consolidation, not optimisation. The structure was the problem.
Client
Cadence Fitness
Year
2026
Role
Media buying, account structure
Stack
Meta Ads, Google Ads
Plays from YouTube. Nothing loads from Google until you press play.
4Ad sets, down from 46
-34%Cost per lead
1/wkChange window
01The brief
Spend was up, results were flat, and the previous agency’s answer was always another ad set.
02The brainstorm
Forty-six ad sets on a modest budget means no ad set ever leaves the learning phase. The account was not badly optimised, it was badly shaped.
The hard part was arguing for less: fewer audiences, broader targeting, more budget per set. It feels like giving up control, and for the first eight days the numbers look worse, which is why most people revert on day three.
We agreed the read date in advance and wrote it down. That single agreement is why the restructure survived long enough to work.
03The build
Collapsed to four ad sets, moved budget to the campaign level, and set one weekly change window so the algorithm was not reset every afternoon.
04The result
Cost per lead settled about a third lower on the same monthly budget, and the account became legible enough for the client to read themselves.
Campaign Management
A launch calendar that survived contact with reality
Six weeks, three channels, one number everybody watched.
Client
Loom & Larder
Year
2025
Role
Planning, buying, reporting
Stack
Meta, Google, TikTok, Looker Studio
Plays from YouTube. Nothing loads from Google until you press play.
6 wkLaunch window
3Channels
1North-star metric
01The brief
A product launch with three stakeholders who each had a different definition of success.
02The brainstorm
Most launches fail in the planning meeting, not the execution — because nobody agrees what the number is, so every channel gets judged by a different one.
We spent the first session picking a single north-star metric (first-time purchasers) and explicitly demoting everything else to diagnostics. Reach, engagement and CTR stayed on the dashboard but under a line labelled 'not decisions'.
That line is the most useful thing I have ever put in a report.
03The build
A six-week calendar with a fixed weekly read, budget reallocation only at the week boundary, and a written kill rule for each channel.
04The result
The launch hit target with two weeks to spare and TikTok was cut in week three without a meeting, because the kill rule had already been agreed.
Campaign Management
Seasonality, or how we stopped panicking in January
Budget shaped to demand instead of to the calendar month.
Client
Northline Autos
Year
2026
Role
Media planning
Stack
Google Ads, Meta Ads, GA4
Plays from YouTube. Nothing loads from Google until you press play.
3 yrOwn data used
±40%Weekly budget swing
01The brief
Even monthly budgets in a business where two months of the year do most of the volume.
02The brainstorm
Splitting a year of budget into twelve equal pieces is an accounting decision that has quietly become a marketing one at almost every small business I have worked with.
We pulled three years of their own sales data — not industry benchmarks — and found the demand curve was much spikier than the spend curve. So we underspent deliberately in the flat months and banked it.
The uncomfortable part is that the flat months then look like failure on a monthly report. We changed the report to a rolling twelve weeks so nobody had to defend a bad-looking March.
03The build
A seasonality index built from their own transaction history, mapped to weekly budget caps with a manual override for stock issues.
04The result
Same annual budget, materially more units, and far fewer emergency mid-month conversations.
Campaign Management
The channel we recommended firing
An honest audit that cut our own scope.
Client
Whitfield Property Group
Year
2025
Role
Audit, reallocation
Stack
Meta Ads, LinkedIn Ads, GA4
Plays from YouTube. Nothing loads from Google until you press play.
1Channel cut
12 moData reviewed
2 yrRetainer extended
01The brief
A retainer covering four channels, one of which had never produced an attributable enquiry.
02The brainstorm
The awkward thing about managing a channel is that recommending its removal reduces your own invoice.
I pulled twelve months and looked only at last-non-direct touch plus a holdout week where we simply switched it off. Nothing changed when it was off, which is about as clean a signal as this work ever gives you.
Saying so out loud is the whole job. A retainer that survives on a channel nobody can defend is not a client relationship, it is a countdown.
03The build
A one-week holdout test, a written recommendation, and a reallocation plan for the freed budget.
04The result
Channel cut, budget moved, enquiries went up. The retainer got smaller and lasted two more years.
Analytics
The dashboard the founder actually opens
One screen, six numbers, no scrolling.
Client
Cadence Fitness
Year
2026
Role
Measurement, dashboard design
Stack
GA4, Looker Studio, BigQuery
Plays from YouTube. Nothing loads from Google until you press play.
6Numbers, down from 14 pages
1Screen
WeeklyActually opened
01The brief
A 14-page monthly PDF that everybody agreed was thorough and nobody read.
02The brainstorm
A report that needs explaining is a report that will be ignored the month you are on holiday.
We asked a different question: what decision does this person make each week? There were three — how much to spend, what to shoot next, and whether to keep a channel. Everything that did not feed one of those three was deleted.
Six numbers survived. Each one has a plain-English sentence underneath it saying what to do if it moves. That sentence is the actual product.
03The build
GA4 with server-side events for the two conversions that matter, a Looker page that fits one screen, and a Monday email with the same six numbers in text.
04The result
The founder now opens it weekly without being asked, and creative decisions moved from taste arguments to number arguments.
Analytics
Fixing attribution before fixing anything else
Two months of decisions had been made on broken data.
Client
Loom & Larder
Year
2025
Role
Tracking audit, implementation
Stack
GA4, GTM, server-side tagging
Plays from YouTube. Nothing loads from Google until you press play.
±3%Platform vs. books
2Fake winners found
3 wkOf plumbing
01The brief
Platform-reported conversions were roughly double what the accounting software could see.
02The brainstorm
Everyone wanted a creative strategy. It would have been irresponsible to give them one, because every decision would have been made against numbers we already knew were wrong.
The audit found the boring, common causes: a duplicate tag firing on the thank-you page, no UTM convention, and a checkout redirect losing the session. None of it clever. All of it decisive.
Spending three weeks on plumbing when the client is paying for growth is an uncomfortable conversation. It is also the only honest sequence.
03The build
Deduplicated events, server-side purchase tracking with an order ID, and a UTM naming convention short enough that people actually follow it.
04The result
Reported and actual revenue now agree within a few percent, which changed which campaigns looked profitable — two "winners" turned out to be losing money.
Analytics
A creative testing log anyone can read
Every test, its hypothesis, and what we concluded — in one sheet.
Client
Saffron House
Year
2026
Role
Process, analysis
Stack
Google Sheets, Meta Ads, GA4
Plays from YouTube. Nothing loads from Google until you press play.
1Row per test
15 minWeekly ritual
1 sentencePer conclusion
01The brief
A year of creative testing with no record of what had already been tried, so the same losing ideas kept resurfacing.
02The brainstorm
Institutional memory is the cheapest performance gain available and almost nobody keeps it.
The format matters more than the tooling: one row per test, written hypothesis before launch, the metric agreed in advance, and a conclusion in one sentence written the day it ended. If the conclusion cannot be written in a sentence, the test was badly designed.
The hypothesis-before-launch column is the one that does the work. It stops post-hoc storytelling, which is the main way marketing teams fool themselves.
03The build
A shared sheet, a fifteen-minute Friday ritual, and a rule that no creative brief may repeat a test already marked conclusive.
04The result
Duplicate tests effectively stopped, and onboarding a new freelancer went from a week of context to an afternoon of reading.
Analytics
What the retention curve said about the shoot
Using watch-time data to plan production, not just to grade it.
Client
Meridian Interiors
Year
2026
Role
Analysis, production planning
Stack
Meta Ads, YouTube Analytics, Premiere Pro
Plays from YouTube. Nothing loads from Google until you press play.
30Curves analysed
-25%Shoot day length
01The brief
A production budget being spent on the parts of the video nobody watched.
02The brainstorm
Retention graphs are normally used as a post-mortem. Read across thirty videos instead of one, they become a shot list.
We overlaid the curves and found the drops landed on the same three things every time: establishing wides, logo stings, and any shot without a person in it. The rises landed on faces and on hands doing something.
So the next shoot day was planned from the graph: no establishing shots at all, twice the hands, and the logo moved to the end where it costs nothing.
03The build
Thirty retention curves normalised to length, annotated by shot type, turned into a one-page production rule sheet.
04The result
Shoot days got shorter and cheaper because we stopped filming coverage the data said was never watched.
04 — How it runs
Nomystery,nomonthlysilence
01
Listen
A call, your last 90 days of data, and a look at what your competitors are actually running. I come back with what I think is broken before anyone signs anything.
Audit
Account access
Competitor teardown
Goal
02
Find the angle
The part that cannot be outsourced. Why should a stranger care in second one? We write three angles, kill two, and build the shoot around the survivor.
Positioning
Hooks
Shotlist
Moodboard
03
Ship and test
Shoot, edit, build the variants, launch small. Nothing scales until the data says which version of the idea people wanted.
Production
Variants
Launch
Read
04
Scale what wins
Budget follows evidence. Losers get cut on schedule, winners get more spend and more variants, and you get a weekly note in plain English.
Scaling
Weekly report
Iteration
05 — In their words
Peoplewhopaidmeandsaidsoafterwards
“
We had been paying an agency for eleven months of "brand awareness". Nain shot, cut and launched in three weeks and it was the first time I could see where the money went. Bookings doubled in the second month.
Ayesha RaufOwner, Saffron House“
He argues with you, which I did not expect and now would not work without. Half our best-performing ads were angles I originally said no to.
Daniel OkonkwoMarketing Lead, Northline Autos“
The reporting alone was worth it. First time in four years our founder and our media buyer were looking at the same number and agreeing on what it meant.