Proof of work · London · 2026
Things I've built,
and how they work.
Each one below runs, ships or sold.
Zing
Web app · live, demo data
The Zing content engine
Street interviews, end to end
6 Aug – 3 Nov 2026
170K on a fresh account → 1.72M two months later
Ten stages, from a cold DM to a stranger to a per-second retention curve. Click a stage to see how it works.
Live demo · demo data
Scale, the dashboard that runs it.
The real content side of my internal hub: the Drive vault, buffer, VF cuts, one-click posting to six platforms, the LinkedIn drafter, streaks and metrics. Click anything; nothing leaves your browser.
How it connects
- Google Drive is the source of truth. Raw footage and mic audio land in
ZING INPUT, one folder per interview. Finished videos land inZING OUTPUT. - The Vault mirrors Drive. A sync check scans both folders and shows every interview, how full its folder is, and which finished files aren't attached to a clip yet.
- Pick a file, it becomes the clip's final. Choosing a file from
ZING OUTPUTrenames it in Drive to its code (e.g.H1S1VF) and moves the clip to VF. - Post now sends it everywhere. One button posts the VF to Instagram, TikTok, YouTube Shorts, X, Facebook and Snapchat, and marks it posted.
Reading the codes
- H1
- Hook 1: the opening question and answer
- S1
- Story 1: the body of the reel
- T1
- Text hook 1: the on-screen line
- V1, V2
- Edit versions
- VF
- Final: approved and ready to post
H1S1VF = hook 1 + story 1, final. H2S2VF = a second reel from the same interview.
The two numbers on top
- Buffer
- Days of finished videos ready to post
- Vault
- Days of filmed interviews before more filming is needed
Receipts: Instagram insights screenshots
Pinnacle Consulting
US contractor marketing agency
Pinnacle is my marketing agency for US home-improvement contractors: bathroom and kitchen remodelers. We run Meta ads into a funnel with the pixel on, and build the website and CRM behind it, so every lead gets a text the second they fill in the form.
How I got here
Detail Direct — my first agency, for car detailers, about 7 months. Partnerships with other companies, a promotion, real clients. The margins weren't there: detailers didn't make enough to pay premium prices.
Then contractors. Bigger jobs, so the maths works. At its peak, ~$15k in a single 30-day period.
Instagram: @detaildirect.ai →- Meta adsTargeting, creative testing, cost per lead
- Funnels + pixelAd to landing page to booked estimate, tracked end to end
- WebsitesBuilt and launched for clients
- CRM automationGoHighLevel: instant lead texts, client alerts, follow-ups
- SalesOne-call closes, below
Flagship client: C&M Renovations
$152K in 43 days.
Bath and kitchen remodels in Morris County, NJ. I built the website and the GoHighLevel backend: a lead fills in the form, gets a text instantly, and the owner is notified. Then Meta ads fill it.



Ad results



What clients say
7 leads at $28.90C&M · "nice little revival"
10 estimates in a weekC&M · "10 estimates this week was crazy"
$20K cash job, day 10Cameron · money back in 10 days
"Thank you for taking the bet on me"Mike · bath remodels, CA
BeforeWes · bathroom
AfterWes · same bathroom
Finished jobRay · FL
Scroll sideways · click any one to open it full size
The sales team I built
I ran a sales team of 6 reps from my Discord: daily calls and free daily training, booking appointments for me.
How leads reach the setters
Training my setters
Clips from my training calls with the setters.
Tell the prospect the one thing they most want to hear, then bring them back down: “I don’t know if I can help yet, so we need to have a call.”
Here I quiz a setter on what comes next. It’s already second nature.
A setter was ten minutes into a good call when the prospect, rushing out of a grocery store, said “just email me” and hung up.
The fix: when they’re short on time, don’t ask “when are you free?”. Offer a slot (“I’ve got 3pm today”) and book it. Then call back, and show you remembered what he said, so he feels heard.
When a prospect goes on a rant (“this doesn’t work, you guys are scammers”), “who hurt you, man?” stops it and calls out the disrespect.
The setter has the frame back. Then keep asking questions: “do you think everyone in marketing is a scam?”
Going through a setter’s call. He softened the upfront fee and talked past it, and prospects notice.
Better: “there’s a small upfront fee, and it depends on what you need to get from where you are to where you want to be.” If they push for a number: “I don’t even know if I can help yet.” Less talking, more questions.
Sales: one-call closes
The full, uncut 59-minute call. Client blurred; their name, address and phone, and other people's data, are blurred or muted.
The full, uncut 61-minute call. Client blurred; his card details, address, family and health details, and other people's data, are blurred or muted.
Payments landing
Just a few, to show the money landing.


Claude Code builds
Built, shipped, used
The main ones. Tap any card. The code stays private (client data), so the proof is commit history and live links.
01Client onboarding botRan in production
- Problem
- Every new client needed a full build-out by hand: CRM sub-account, SMS registration, funnel branding, ad creatives, Meta campaigns.
- What it cost me
- 4–6 hours per client. That was time I could have spent on acquisition. At one point I paid someone $150 per build-out, and it cut into my margins.
- What I built
- An 11-step orchestrator that runs from one Discord message. A browser bot builds the client in GoHighLevel, makes the voiceover ad and captions, and launches the Meta campaign with zip-code targeting.
- The gap it filled
- A full client build-out in about 13 minutes. More time on money-making work, more margin, and I could charge less up front.
- Proof
- 84 commits (2 Apr – 8 May 2026). Ran end to end on a fresh client on 30 Apr 2026. Code + commit history on GitHub ↗
A real run on a test client, recorded 2 May 2026. Watch at 2x. Private details are blurred.
02Sales-team botLive
- Problem
- I had to get the leads and send them to my setters myself. If they had no leads, they couldn't set appointments.
- What it cost me
- The whole team waited on me.
- What I built
- Discord commands that load leads straight into the CRM, a webhook that pings the right setter the moment a lead moves, and a wins feed that posts every payment.
- The gap it filled
- Automatic and instant. The team ran without me being there.
- Proof
- 1,192-line bot. Runs under PM2 on my Hostinger VPS. Code + commit history on GitHub ↗
03Scale: the content command centreLive, private
- Problem
- Running one guest a day and about three posts a day across eight platforms.
- What it cost me
- No single place that kept me accountable day by day.
- What I built
- A dashboard on top of the whole content engine: the Drive vault, buffer, VF cuts, one-click posting to six platforms, the LinkedIn drafter, streaks and metrics.
- The gap it filled
- Accountability: something to look at every day, plus the systems that manage everything I'm running.
- Proof
- 129 commits, 157 test files. Live at scale.dilanlieberman.com (password-protected; PM2 + Caddy on my VPS). Try the demo ↗
04B-Roll Randomiser
- Problem
- My ads are a set format: same script, same copy. Ads fatigue, so I keep needing new ones.
- What it cost me
- Rebuilding the same kind of video ad by hand every time.
- What I built
- My video ads are an ElevenLabs voice, b-roll and subtitles. Now I drop in the voiceover and it outputs a finished ad, and can set it up as a paused Meta ad.
- The gap it filled
- Fresh ads on demand.
- Proof
- 26+ commits. Still in use, Oct 2026. Code + commit history on GitHub ↗
In Discord: drop in an ElevenLabs voiceover, name the niche, and it posts back a finished, captioned ad.
05Agency data pipeline
- Problem
- I needed to see the whole funnel, not guess at it.
- What I built
- Cron jobs on my Hostinger VPS pull GoHighLevel and Meta Ads data into Supabase and track every step: texts sent and what they cost, positive reply rate, pick-up rate, booking rate, show rate, close rate, renewals in months 1–3, lifetime value, acquisition cost.
- The gap it filled
- I know how much I can spend in each area to scale.
- Proof
- About 20 cron jobs (flock-locked) on my Hostinger VPS, writing to Supabase. Code + commit history on GitHub ↗
06CD Room: the review room
- Problem
- Editing with AI, I want absolute precision in every part of the process.
- What I built
- My own review room: watch the raw with a clickable transcript, build hooks, leave frame-accurate comments, edit captions live. Claude sits in the chat, and an overnight job renders the comments.
- The gap it filled
- Precision on every cut.
- Proof
- 47 commits (12–15 Oct 2026).


The review room (watch the raw, click a line to jump to it) and the caption editor (live preview).
07Mic-sync and edit pipeline
- Problem
- The camera clocks are wrong by hours, and every interview has two mics and a glasses camera.
- What I built
- It finds each clip inside hours of mic audio by matching the sound, mixes both mics, transcribes with four engines, times captions to the frame, and two QA agents check the audio.
- The gap it filled
- Every final rebuilt from the originals with one lossy encode.
- Proof
- 124 finished videos on Drive.
The Drive it fills: raw clips, both mics combined, transcripts and sync notes per guest in ZING INPUT; finished cuts in ZING OUTPUT, which feeds the Scale dashboard.
08ZingMirror
- Problem
- Instagram's per-second retention curve isn't available from any API.
- What I built
- A native Mac app that drives iPhone Mirroring overnight and reads every reel's retention curve into data.
- The gap it filled
- A retention curve for every reel, which drives the weekly double-down, kill and test.
- Proof
- Runs on my Mac.

A real per-second retention curve, read off Instagram.
09app.zing.financialLive demo
- What it is
- The Zing founder app.
- What I built
- The demo app, plus real accounts and Stripe Connect onboarding on Supabase.
- Honestly
- The Supabase and Stripe build is on a branch, not merged yet.
- Proof
- Live demo ↗
10My production server (Hostinger VPS)Live
- What it is
- A Hostinger VPS I set up and run myself: Ubuntu 24.04 LTS, 4 vCPU, 15 GB RAM.
- What's on it
- Caddy 2.11 serving 8 sites with automatic HTTPS (including this page) · PM2 running 9 Node apps (Discord bot, Telegram bot, the Scale hub and its API, webhooks) · 3 FastAPI services on uvicorn · 2 systemd services · about 20 cron jobs with flock locks · fail2ban.
- Proof
- You're on it: work.dilanlieberman.com is served by Caddy on this VPS.