DL/work

Proof of work · London · 2026

Things I've built,
and how they work.

Each one below runs, ships or sold.

  1. 01Zing app
  2. 02Zing content engine
  3. 03Pinnacle Consulting
  4. 04Claude Code builds
01

Zing

Web app · live, demo data

The Zing app dashboard (demo data)

The card for founders like me.

A financial operating system for online entrepreneurs.

This is the Zing web app: a slightly rudimentary, but still final version. It runs on demo data, so click around.

02

The Zing content engine

Street interviews, end to end

3.75MInstagram views in 90 days
6 Aug – 3 Nov 2026
1.1Mviews on one video
+4,986followers in the same 90 days
19 Junfirst post on the page
Watch the interviews · @zing.financial ↗
+912%monthly views, month 1 → month 3 (10×)
170K on a fresh account → 1.72M two months later
Month 1fresh account170K
Month 2460K
Month 319 Aug – 19 Sep1.72M

Ten stages, from a cold DM to a stranger to a per-second retention curve. Click a stage to see how it works.

    Scale, the content engine dashboard, on demo data

    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

    1. Google Drive is the source of truth. Raw footage and mic audio land in ZING INPUT, one folder per interview. Finished videos land in ZING OUTPUT.
    2. 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.
    3. Pick a file, it becomes the clip's final. Choosing a file from ZING OUTPUT renames it in Drive to its code (e.g. H1S1VF) and moves the clip to VF.
    4. 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
    Instagram insights: 3,752,222 views and +4,986 net followers over 90 days Top five videos: 1.1M, 505.4K, 294.2K, 284.2K and 280.6K views
    03

    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.

    Detail Direct's Instagram profile: verified, 581 followers

    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 →

    Flagship client: C&M Renovations

    The C&M Renovations website

    $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.

    GoHighLevel workflow: inbound webhook, create contact, internal notification
    Website lead → CRM The form posts to a webhook, the lead becomes a contact, and an alert fires straight away.
    GoHighLevel workflow: follow-up texts and emails until the lead books
    Instant follow-up If they haven't booked: an email and a text within minutes, then reminders, a calendar link when they reply positively, and the opportunity updated.
    GoHighLevel workflow: contractor alerted by email, text and app for every new lead
    The owner always knows Every new lead: emails, texts and app notifications to the contractor.

    Ad results

    Ads Manager: 60 leads at $31.14 cost per lead
    60 leads at $31.14 C.R. Renovations, Pittsburgh · Ads Manager
    Ads at $5.24 and $5.50 cost per lead, shared with the client
    $5.24 a lead C&M Renovations · selfie ads
    Client chat: 9 leads yesterday at $6 cost per lead
    9 leads in a day, $6 each "this area goes crazy"

    What clients say

    $152K in 43 daysShawn · C&M Renovations · NJ · bath & kitchen
    $118K in month oneMike · Mike's Home Improvements · CA · baths

    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.

    My AI training agent Built in ElevenLabs for objection handling. It plays Mike, a super sceptical contractor who is very hard to close, so my setters can practise on him. It's live: try it.

    How leads reach the setters

    The problem (0:08)I dropped lead files into a channel by hand. Sometimes I forgot, and no file meant no blasting.
    The fix: my leads bot (1:21)Every US construction lead sits on my VPS. A setter types one command and the bot loads them into GoHighLevel and starts the text blast. Code ↗
    The result (0:32)Every booking pings the team in Discord, with the setter’s notes.

    Training my setters

    Clips from my training calls with the setters.

    The pedestal (0:34)

    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.

    The prospect who hung up (2:54)

    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.

    “Who hurt you?” roleplay (1:19)

    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?”

    Call review: the upfront fee (4:31)

    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.

    $4,000closed in one 59-minute call

    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.

    $2,000 + 10%revenue share on ad results, closed in one call

    Payments landing

    Just a few, to show the money landing.

    $4,000 payment, succeeded, 19 Nov 2025
    $4,000 19 Nov 2025 · one-off
    $2,500 payment, succeeded, 13 May 2026, Month to Month Growth Programme
    $2,500 13 May 2026 · monthly growth programme
    04

    Claude Code builds

    Built, shipped, used

    47builds
    ~2,470commits written by me, Mar–Nov 2026
    9apps running on my Hostinger VPS
    1,063Claude Code sessions in 30 days (to 18 Oct)
    Claude Code usage, 30 days to 18 Oct 2026: 1,063 sessions, 63,216 messages, 20B tokens, 29 active days
    My Claude Code usage, 30 days to 18 Oct 2026: 1,063 sessions · 63,216 messages · 20B tokens · 29 of 30 days active.

    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.

    NodePlaywrightGoHighLevel APIMeta Marketing APIElevenLabsSubmagicDiscord.js
    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 ↗
    NodeDiscord.jsGoHighLevel APIWebhooksWhop
    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 ↗
    ReactThree.jsNodeGoogle Drive APIApifyClaude APIVitest
    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.

    NodeWhisperClaude APIffmpegSubmagicMeta Marketing API
    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 ↗
    SupabasePostgresEdge functionsNodeCronGoHighLevel APIMeta Marketing API
    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 itCaption editing: host in white, guest in gold, live preview

    The review room (watch the raw, click a line to jump to it) and the caption editor (live preview).

    JavaScriptClaude ArtifactsClaude in the loopNodeffmpeg
    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.

    PythonffmpegWhisperForced alignmentClaude Code agents
    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

    A real per-second retention curve, read off Instagram.

    SwiftmacOSiPhone MirroringOCRPython
    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.
    TanStack StartReact 19SupabaseRow-level securityStripe Connect
    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.
    Hostinger VPSUbuntu 24.04Caddy 2.11PM2 6Node 18Python 3.12systemdcron + flockfail2ban