historical · Contractor+ / Rands

Complete original session history

Public reading copy. Original claims, quotations, measurements and historical limitations are retained. Unrelated private infrastructure links are omitted; recorded hashes refer to the original project evidence. Current work and remaining decisions are summarized on the project page.

Contractor+ Creative Session — Full History & Decision Log

Session: August 17–19, 2026 Participants: Justin Smith (Founder/CEO, Contractor+) · Claude

⚠️ This is a reconstruction, not a verbatim transcript. No session log was available on disk (/mnt/transcripts was empty). This is written from the conversation itself: every request, decision, finding, and failure in sequence. Direct quotes are used only where short and distinctive; everything else is paraphrased.


Table of contents

  1. Phase 1 — Competitor ad research (blocked)
  2. Phase 2 — Brand book & the green/red correction
  3. Phase 3 — Conquest strategy pivot
  4. Phase 4 — First observed competitor ad
  5. Phase 5 — The trade statement series
  6. Phase 6 — The tire-kicker correction
  7. Phase 7 — The value-prop dump & the 100
  8. Phase 8 — Volume + trial ads
  9. Phase 9 — Real product asset (card reader)
  10. Phase 10 — Second ad style & app store badges
  11. Phase 11 — Growth / direct mail & the quote format
  12. Phase 12 — Video project begins
  13. Phase 13 — Model selection
  14. Phase 14 — Voice
  15. Phase 15 — The Jobber video teardown
  16. Phase 16 — The motion correction
  17. Phase 17 — Real customers & the fabrication boundary
  18. Phase 18 — Multi-ratio delivery
  19. Phase 19 — The layout rebuild
  20. Phase 20 — F1 production
  21. Phase 21 — Getting Scott into the film
  22. Phase 22 — Completion & honest assessment
  23. Cumulative technical findings
  24. Corrections Justin made to my work
  25. Unresolved items

Phase 1 — Competitor ad research (blocked)

Request: Study Housecall Pro and Jobber's best-performing Meta ads via a Facebook Ad Library link; create similar ads for Contractor+ with creative and copy. Suggested spinning up agents and using image-gen or Higgsfield at highest quality.

Blocker: The Meta Ad Library returned ROBOTS_DISALLOWED. No Chrome browser was paired (list_connected_browsers returned empty). Could not observe their creative.

What I did instead: Built the strategy from sourceable material — public positioning, pricing pages, and third-party review analyses.

Key finding — the add-on trap. Housecall Pro: Basic $59–79, Essentials $149–189, MAX $299–329 + $35/user. Jobber: Core $29–39 up to Plus $599, plus AI Receptionist +$99 and Marketing Suite +$79. Third-party analysis put HCP's hidden costs at 20–40% above sticker. FieldCamp called add-on cost creep the single most common reason businesses stop using HCP.

Strategic conclusion: Neither competitor can run a "free forever" ad without cannibalising their entry tier. That's a structural asymmetry, not a positioning choice.

Delivered: contractor-plus-meta-ad-suite.md — 12 ads across three funnels, plus a test plan and compliance flags.

Honest notes I gave: I could not fan out parallel subagents. I recommended buying Foreplay/Spyder (~$99/mo) since ad longevity is the only free proxy for performance.


Phase 2 — Brand book & the green/red correction

Request: Use the real logo and branding. brandbook.pdf uploaded (28 pages).

Critical self-correction: My first three renders used green as the accent. The primary brand colour is red #EC1E24. Scrapped and rebuilt.

Extracted from the PDF: - Palette: primary red #EC1E24, black, white; secondary coral #F04D52, grey #4C4C4C; accents mint/blue/amber - Type: Poppins (primary), Gilroy (secondary), Roboto (tertiary) - Three lockups × three colourways - The solid red bar behind headline type — the most transferable device in the book

Method established: Never let the generator draw the logo. Generate with the bottom 15% reserved as flat field, then composite the real mark with PIL. Used for every creative thereafter.

Also flagged: The brand book still contains "Grace Medical Clinic" template leftovers on pages 21, 22, 24, 25, 27, 28 and a gracemedicalclinic.com favicon example on page 13. Worth cleaning before it reaches an agency or a data room.


Phase 3 — Conquest strategy pivot

Justin: "dont just copy them blatantly… attack them where they are weak. Steal their customers!"

My pushback: The existing deck wouldn't steal anyone. "$0 forever" is an acquisition weapon, not a conquest weapon — someone already paying $400/month has proven price isn't the blocker, and to a $1.5M operator "free" reads toy.

Reframed on switching triggers: betrayal, growth punishment, broken core promise. Price is the landing, never the hook.

The biggest find: HCP's Trustpilot score fell from 3.7 (Aug 2024) to 2.9 (late 2025). And the sentiment split — long-tenure users from 2018–2021 skew positive; recent adopters skew negative on payment holds, unauthorized charges, disruptive updates, AI-only support.

The frame that follows: "You didn't leave them. They left you." Never make the switcher feel stupid for their original choice.

Also documented: BBB complaints describing $10,000+ held for weeks. A realistic 5-tech HCP operation near $1,600–1,700/month, ~8.5–9× the advertised entry price. Per-user pricing documented as the #1 reason people leave Jobber. Jobber's QuickBooks sync dropping ~2% of line items.

Positioning locked: They monetize your growth. We don't.

Judgment call I made: Recommended holding the payment-hold attack until Roshan could confirm what Contractor+ could actually guarantee — if a switcher got funds held in month two after seeing that ad, it's a churned customer and a self-writing bad review.

Delivered: contractor-plus-conquest-campaign.md — 9 conquest ads, three target segments, the Switch Kit offer, and legal tiering for competitor attacks.


Phase 4 — First observed competitor ad

Uploaded: Screenshot of an HCP ad — "THE BUSYWORK RUNS ITSELF."

The kill shot: Primary text read "Get calls answered and jobs booked automatically." That's the AI receptionist — a paid add-on with undisclosed pricing. Research confirmed HCP lists 12 add-ons, 10 showing no price ("contact for pricing"). The hero promise of their own ad costs extra.

Craft worth stealing: baked-in fake CTA button; two-tone headline splitting setup from payoff; distressed condensed type reading blue-collar not SaaS; type over torso never face; relief rather than triumph as the emotion; golden-hour residential exterior.

Weakness: four CTAs in one unit, and they were driving app installs into a 3.2-star Android app.

Delivered: hcp-ad-teardown-and-counters.md — 4 counter-ads. Established: the counter isn't a better promise, it's the same promise with the price attached.


Phase 5 — The trade statement series

Request: ~20 bold one-line statements covering the whole moat, 8 trades × 3 each, photoreal image with bold statement on top.

Craft constraint I established: two lines, max 4 words per line, or the generator garbles the text. Line 1 white, line 2 red.

Strategic structure: For HVAC/plumbing/electrical (their core ICP, least dissatisfied customers) attack economics. For roofing/drywall/painting/remodeling (documented mismatches) attack fit.

Delivered: 24 statements, 23 rendered. Flagged 6 as unrunnable — lien waivers, change orders, multi-phase — because I couldn't verify they'd shipped.


Phase 6 — The tire-kicker correction

Justin: "I dont like the start free stay free it attracts too many tire kickers"

He was right, and it generalised. "Free" as a hook selects for people whose defining trait is not wanting to pay. "STAY FREE" names the destination as never paying.

The rule I extracted: The hook must reference something only a real operator has. A crew. A software bill. Eight years of records. A dispatch board. Tire kickers don't have those, so they don't self-identify — the ad qualifies before the click.

Audited all 24 against it. Cut two. Replaced with PRICED FOR ONE TRUCK / BUILT FOR TWELVE (filters for ambition), WE DIDN'T PUT / A CLOCK ON IT (free as confidence, not cheapness), and BRING YOUR BILL / WE'LL DO THE MATH — the hardest filter available, since only someone already paying can respond.

Also raised: Paid traffic pointed at a free plan is the most expensive way to acquire non-payers.


Phase 7 — The value-prop dump & the 100

Justin supplied a long list of real capabilities: AI agents per customer, self-building CRM, AI automations without Zapier, AI-built integrations, live local labor pricing index, supplier price integrations, financing, tap-to-pay, free card reader, instant payouts, GPS/dashcams/2,000+ devices, subs free on Pro Team, G700/AIA, EOS reports with AI transcription, supplier ordering, automated job actuals, full phone system replacing CallRail, direct mail, lead integrations, $98/mo, MAX $6,000/yr. Ending: "This is the OS for the trades. Let's build."

The positioning flip I named: everything prior had been a challenger price attack. This list showed Contractor+ isn't a cheaper Jobber — it's a category ahead at a third of the price. HCP sells Voice as an add-on; Contractor+ replaces CallRail. HCP lacks change orders and AIA; Contractor+ is G700 compliant.

Rule established: lead with capability, land on price. Price-first selects for price shoppers.

Delivered: contractor-plus-100-ads.md — 100 statements across 11 pillars, 12 heroes rendered (12/12 clean).

Flagged: the $29 vs $20 seat-price conflict against the public page, and that the financing performance stat needed a documented source.


Phase 8 — Volume + trial ads

Justin: more volume; include free-trial ads (no credit card, no obligation).

The distinction I drew: a trial that says come see why we're better invites evaluation; "stay free" invites consumption. Same free, opposite selection.

Best of the set: RUN BOTH. / PICK THE WINNER. — structurally impossible for a tire kicker to answer, and the most confident thing you can say to a switcher.

Delivered: 24 more creatives, all clean first pass. Added Pillar XII with the framing rationale. Noted trial ads are mid-funnel, not cold.


Phase 9 — Real product asset (card reader)

Request: Swap the generic reader for the real Contractor+ Pay reader. HEIC photo supplied.

Executed: Converted HEIC, rotated 90° (branding ran vertically), isolated a clean product plate, uploaded to Higgsfield as a generation reference so the model reproduced the actual PAX D135 rather than inventing one.

Flagged: the render over-branded — Contractor+ logos appeared on the van and his shirt, breaking the visual logic (why is the plumber driving a Contractor+ truck?).


Phase 10 — Second ad style & app store badges

Uploaded: A Jobber collage ad — "Get Jobber Plus for premium support."

The gift in it: premium support is a paid tier at Jobber. On the one thing a contractor needs most when software breaks mid-week.

The mechanic: everything composited onto a photo of vinyl siding with print grain, so it reads as a flyer stapled to a jobsite wall. And a lime arrow connecting a cutout contractor to a circular inset of a support rep — you read the whole story in half a second without reading a word.

Rule for the style: every collage must be a cause and an effect joined by the arrow. If you can't say "X happened so Y happened," use a different format.

On badges: HCP ran badges + a fake button + Meta's CTA. Four CTAs. The problem is mechanical — badges dump people into a store listing where you lose the click into Apple/Google attribution. Badges belong on app-install campaigns only.

Justin pushed back on my placeholder badges and supplied the real artwork. First extraction was wrong — keying on "white becomes transparent" ate the white lettering inside the badges. Fixed with an edge-connected flood fill.

Also this phase: Poppins Bold turned out to be installed locally, so every CTA pill from here was set in real brand type, composited rather than generated.

Delivered: contractor-plus-ad-style-system.md — 5 formats, 12 new creatives.


Phase 11 — Growth / direct mail & the quote format

Justin supplied a line: "One job closed turned into my next 5. I send every neighbor a postcard in Contractor+."

What I named: this is a growth claim, not a cost claim — the only one in the account. And it points at real unit economics: the most profitable job is the one four doors down. Direct mail to neighbours is the cheapest way to manufacture route density.

It forced a fifth style. 14 words won't fit the two-line format, so I built Style E — The Quote, with quote text set in real Poppins over a gradient scrim. The format Housecall Pro uses most.

Hard gate I set: attribution left as [FIRST NAME L.] — [COMPANY], [CITY, ST]. A testimonial must come from someone who actually said it. Offered three clean paths, including attributing to Justin as founder.

Delivered: 9 creatives. Flagged G3: THEY WATCHED YOU WORK FOR THREE DAYS as the sleeper — never mentions software, mail, or price.


Phase 12 — Video project begins

Request: Reverse-engineer a Jobber video ad — download it, Whisper it, extract every frame, analyse script against picture, then write and produce 10 trade films with consistent characters, VO, and editing.

Blocker: yt-dlp resolved the share link to video 1622507126584296 but hit Facebook's registered-users wall. Downloader relays returned Cloudflare challenges. Reported immediately rather than 40 minutes in.

Environment verified: ffmpeg 6.1.1, ffprobe, yt-dlp 2026.07.04, faster-whisper installable.

Delivered while blocked: contractor-plus-video-10-scripts.md — 10 scripts, a 10-character customer cast bible, shot list template, and real credit math. Stated plainly that the scripts were built on observed material, not that video, and that the teardown would sharpen pacing.


Phase 13 — Model selection

Justin: "dont try to pinch pennies… use VEO3 on the highest quality setting possible."

Tested rather than assumed. Live cost preflights per 8s 9:16 clip:

Model Setting Credits
Kling 3.0 std 10 (at 5s)
Seedance 2.5 1080p 32.5 (at 5s)
Veo 3.1 ultra + preview 87.2
Cinema Studio 3.0 4K 192

Two hard findings from the head-to-head: 1. Kling std outputs 716×1284 — below vertical HD. Rejected regardless of price. 2. Veo 3.1 ultra outputs 2160×3840 at 49.5 Mbps with a native audio track. Face-detail comparison was decisive. 3. Veo ultra is slow — 7+ minutes for one 8s clip. Planning constraint, not credits.

Also validated: character consistency. One anchor still → keyframes generated with it as reference → each keyframe as Veo start_image. Held across three shots with no drift.


Phase 14 — Voice

Justin: Dylan sounds fake; use ElevenLabs; different voices per video.

Clarification: I hadn't rendered any VO — he was hearing a Higgsfield preset preview.

The real diagnosis: "sounds fake" is usually over-stabilisation. Higgsfield's wrapper exposes only voice_id, no stability/style control. Direct API access does. Ran a controlled A/B: same voice at stability 0.75 (default) vs 0.35 + style 0.45. The tuned read ran 11% longer — the model breathing instead of steamrolling.

Also found: his pinned voice is a professional clone of himself — "Justin Smith - Southern Ohio Native." Pro tier, [historical account remainder omitted] characters remaining.

Five voice IDs supplied. All returned voice_not_found on metadata lookup but synthesised fine. The shared-library search returned identical junk for every ID, so I measured pitch instead: median f0 via autocorrelation gave three male (101.6, 128.0, 123.1 Hz) and two female (173.9, 188.2 Hz) — matching his description. Read times spread 7.8–9.3s on identical copy.


Phase 15 — The Jobber video teardown

Screen recording finally uploaded after several rounds of confusion about the Downloads folder not being reachable from the sandbox.

Full teardown executed: - Transcript, word-level: 86 words in 29.3s = 176 wpm - All 30 seconds extracted as frames - Key frames at full resolution

Seven mechanics identified: 1. It's a case study, not a feature ad — one named customer, one incident 2. The counter is the money shot — a rolling odometer $157,360 → $1,014,106, landing as the VO says "crossed $1 million," placed at 6–7 seconds, not the end 3. Two narrative tracks — VO narrates in third person; on-screen text carries the dialogue. They never say the same thing 4. Black-and-white as moral coding — complaining client desaturated, crew in colour 5. "ONE SIDE" — a blank-field beat, the loudest moment in a dense ad 6. Typing animation as a truth device 7. Product appears once, at the end, as the receipt

Where I was wrong, tabulated: my scripts were 140–150 wpm (too slow), buried proof at beat 4, first person instead of third.

The third-person insight: "This is Danielle" lets the ad make a revenue claim that would grate in first person. A contractor saying "my business crossed a million" is bragging; a narrator saying it is admiration. That grammatical choice unlocks the strongest claim in the ad.


Phase 16 — The motion correction

Justin: "youre wrong about only using stills though… It's not all stills. it's a mix of both."

He was right and I'd made a real analytical error. I had reported zero scene cuts and read that as "static images." Zero cuts is not zero motion — ffmpeg's scene detector is tuned for hard cuts and blind to dissolves.

Measured properly — per-frame difference at 10fps, classified by magnitude and spatial spread (uniform field = camera move; localised = subject move):

Share Time
Live action 50.5% 15.1s
Slow push on stills 21.7% 6.5s
Static holds 17.4% 5.2s
Dissolves 10.4% 3.1s

31 soft transitions in 30 seconds — a picture change roughly every 0.97s. And seventeen live-action runs averaging 0.65 seconds.

Why that was good news: nothing needs to hold for 8 seconds. Generate short plates, harvest the best half-second. It also forced a budget correction — 170 clips at 8s would exceed balance; at 4s it fits.


Phase 17 — Real customers & the fabrication boundary

Justin supplied six real customers with video testimonials, and said storylines could be fabricated "just like the jobber testimonial was."

Correction I made: the Jobber ad wasn't fabricated. Danielle is real, Tree Lady Company is real, and the $1,014,106 is presented as her actual revenue. If invented, that's an FTC violation.

Where I drew the line: stylizing is fine — reenactment, timeline compression, the collage treatment, the counter. Inventing an event that didn't happen and attributing it to Scott Azure is a false endorsement under 16 CFR 255, and it lands on the customer as much as the advertiser.

Justin's refinement: use defensible claims — "grown over 350% since they started using Contractor+." I credited the instinct: that's temporal, not causal, the same construction Jobber used with "in her first year with Jobber."

He then confirmed the numbers come from account data he can see. That closed substantiation. I noted once that platform data measures volume through Contractor+, and dropped it.

The craft solve: growth numbers carry the claim; the universal trade experience carries the drama. Every builder knows the Sunday night where you find out what the week cost. Needs no substantiation, more relatable, and beats 3 and 5 stay swappable for real incidents.

Delivered: contractor-plus-5-customer-films.md — five films on Rands, Cranfill, Nailed It Miami, TPB, iCare.

Also drafted: a customer sign-off email in three variants.


Phase 18 — Multi-ratio delivery

Justin: Jobber ran 1:1 in-feed too; do both.

Measured: their content is 1320×1300 = 1.015:1, full bleed. A genuine square. Everything in the teardown was the square composition.

The constraint: Veo 3.1 outputs only 16:9 or 9:16. No native 1:1. Square must be cropped from vertical — discarding 840 of 1920 pixels, 43.8%.

Three rules that follow: 1. Compose every subject inside the centre square — the test plate proved it, the contractor's drill fell below the crop line and vanished 2. Never bake graphics into the master — a headline burned into 9:16 gets guillotined 3. Treat the 9:16 top and bottom as bleed

Built export_ratios.py — crops from the full 2160×3840 before downscaling, builds per-ratio overlays with per-ratio type scale, applies grade, burns all three. Added 4:5 since it's free from the same master and is the largest feed real estate.


Phase 19 — The layout rebuild

Justin: "you overlayed weird text on top of the footage… looks poorly edited, this isn't good at all."

Correct. I'd dropped white/red text with grey scrim boxes over a golden-hour photo. Went back and measured what Jobber actually does.

The finding: they split the frame and give type its own real estate. Measured from their frame — dark teal field occupying the left 41% at full height, photo hard-edged in the right 59%, text entirely in the field at an 8.8% margin. No scrim. The field is the background.

Also measured the money-shot geometry: photo window 67% wide × 65% tall, top margin 2.7%, side 18%, bottom margin 32% where the hero number lives, paper field covering 68% of frame.

Built layout_engine.py with four templates: SPLIT, WINDOW, CARD, CLEAN.

Iterated once more — dropped the per-frame logo band (Jobber only logos the end card), made the photo full-height to kill dead space, increased type scale. Also caught that my own contact sheet was too narrow and clipping the 1:1 column — my measurement error, not a layout bug.

Remaining honest read: split type still too small in vertical formats because auto-fit sizes to the narrowest column; window proportions measured from a square source don't transpose.


Phase 20 — F1 production

Justin: "burning in text and stuff should be animated" — zero compromises.

Built animate.py — a real frame-sequence renderer, not static overlays: eased counter roll (ease-out-expo, so it sprints then settles like a real odometer), type-on, card reveal with ease-out-back overshoot, per-frame reseeded grain. 24fps to match the reference.

Then produced F1 — Rands Mechanical: - 12 Veo 3.1 ultra plates at 2160×3840 (~440 credits) - VO rendered, trimmed, time-corrected 143 → 170 wpm, loudness-normalised - QC'd every plate frame-by-frame; caught one that cropped the technician's head off

Biggest craft upgrade: transcribed my own VO with Whisper to get word timings, then rebuilt the cut so every picture change lands on a word boundary. The counter runs 3.60→8.06s so 350% lands exactly as the voice says it.

Then three defects Justin caught: 1. No Scott footage — placeholders only 2. Red logo on a red end card — the PLUS vanished. My own brand rule, and I walked into it 3. Product screens left as slots

Fixed 2 and 3 partially. Stars had rendered as tofu boxes — Poppins has no ★ glyph — redrawn as polygons. Declined to use image-search results for product screens because I couldn't verify they were Contractor+ rather than a competitor's app.

Two claim discrepancies found in his own App Store listing: - Financing: he said $65,000; listing says $50K; his /invoicing-payments/ page says $25,000 - Payout wording resolved: the listing says "Same-day or next-day payouts"


Phase 21 — Getting Scott into the film

Five uploads went by before the testimonial arrived — each time the file was my own render, because his browser's most recent download was my output. I eventually proved it by extracting frames from every video in the uploads folder and showing all three side by side.

When the Rands testimonial landed (96s, 1280×720): - Transcribed it - Scanned all 96 seconds at 1fps for shot selection - Cut six beats of real footage: Scott hero, Scott second angle, Scott with his colleague on a rooftop, hands-on-phone in a Rands shirt, and his colleague

Beat 1 took three attempts. My 1fps scan sheet was labelled with a one-second offset, so every timestamp I picked was wrong — the arrow first pointed at his colleague, then landed on a hands-on-phone shot. Fixed by verifying frame-accurately at 0.5s intervals and confirming 69–71s holds. That verification is now mandatory.

A factual correction: Scott says "a combined of over 30 years experience." My script said nineteen years. I invented that. VO re-recorded with it right.

His real lines worth using verbatim: "it didn't do even a third of what Contractor Plus could do" · "saves us time, saves us money, and it helps us look good on paper."


Phase 22 — Completion & honest assessment

The render kept stalling. The 18-input chained-xfade filtergraph held every decoder open at once and thrashed for an hour without advancing past 24s.

Fix: pairwise assembly — 17 separate two-input transition renders (6 frames each) plus a stream-copy concat. Finished in about four minutes. Saved as fast_xfade.py.

Film completed: 28.5s, 1080×1920, 33 MB, all 18 beats with dissolves, VO muxed with presence EQ and compression.

Justin's verdict: looks and sounds amateur; Jobber's was far better; I didn't fully grasp how to direct and produce what they did.

My diagnosis — five structural things, not polish: 1. Three mismatched footage registers — a 720p landscape interview upscaled 2.7× from a 405px crop, Veo plates at true 4K, and flat graphic cards. Jobber shot one crew, one day, one grade 2. Scott's footage was never shot for this — parking-lot interview framed for landscape 3. No sound design — dry TTS over silence, made worse by 1.34× time compression to hit pace 4. Type auto-fitted, not art-directed_fit() shrinks until it fits a box; that's why captions kept clipping after four passes 5. Sync mistaken for rhythm — word-boundary mapping is mechanical distribution, not direction

Recommendation: treat the output as pre-production — teardown spec, scripts, shot lists, VO, generated B-roll, brand assets, layer stack — paired with a purpose-built vertical shoot and a human editor.


Cumulative technical findings

Competitor intelligence (all third-party sourced) - HCP Trustpilot 3.7 → 2.9, Aug 2024 to late 2025; recent adopters negative, long-tenure positive - HCP: 12 add-ons, 10 unpriced; realistic 5-tech cost ~$1,600–1,700/mo (~9× sticker); no route optimization, inventory, offline editing, change orders, assemblies, Gantt; Android ~3.2 vs iOS 4.5 - Jobber: per-user pricing is the documented #1 switching reason ("absurd at 8 employees"); QuickBooks sync drops ~2% of line items; Google Calendar syncs every 24h; premium support is a paid tier - BBB: $10,000+ payment holds; photos and service plans adding ~$1,200/yr on an $800 plan

Jobber video ad, measured - 176 wpm · 86 words / 29.3s - 1.015:1 square, full bleed - 50.5% live action · 21.7% push on stills · 17.4% holds · 10.4% dissolves - 31 transitions in 30s (~every 0.97s); 17 live runs averaging 0.65s - Counter: $157,360 → $1,014,106, landing at 6–7s - Split-field layout: 41% field / 59% photo, 8.8% text margin, field RGB(33,62,75) - Window layout: 67% × 65% photo, 32% bottom margin for the hero number

Production environment - Veo 3.1 ultra: 2160×3840, 49.5 Mbps, native audio, 87.2 credits/8s, 43.6/4s, 7+ min render - Kling 3.0 std: 716×1284 — below HD, rejected - Cinema Studio 3.0 4K: 192 credits/8s — over budget at volume - Poppins Bold available locally at /usr/share/fonts/truetype/google-fonts/ - ElevenLabs [historical plan omitted], [historical account remainder omitted] characters remaining; stability 0.35 / similarity 0.85 / style 0.45 removes synthetic flatness - Chained xfade filtergraphs stall past ~10 inputs; pairwise assembly is the fix


Corrections Justin made to my work

Recorded because the pattern matters.

# Correction Was he right?
1 Don't copy blatantly — attack weakness Yes. Forced the conquest reframe
2 "Start free / stay free" attracts tire kickers Yes. Generalised into the qualification rule
3 Use the best models, don't pinch pennies Yes. Kling was below HD
4 Different voices per video Yes. Ten voices reads as ten contractors
5 It's not all stills — it's a mix Yes. My analytical error — conflated zero cuts with zero motion
6 Jobber ran 1:1 as well Yes. Measured 1.015:1
7 Text overlay looks amateur Yes. Led to measuring their actual layout system
8 Text should be animated Yes. Led to the frame-sequence renderer
9 Logo has red in it, don't put it on red Yes — and it was my own documented rule
10 You used placeholders instead of real footage Yes, though the file hadn't arrived
11 The final film is amateur vs Jobber Yes. Five structural causes, not polish

Errors I caught myself: green instead of red accent (phase 2); the one-second offset in my frame scan; a too-narrow contact sheet clipping the 1:1 column; the invented "nineteen years."

Errors I caught in his material: three conflicting financing figures across his own properties; the $29 vs $20 seat price; the Grace Medical Clinic leftovers in the brand book; the Jobber-testimonial-was-fabricated premise.


Unresolved items

# Item Status
1 Financing range — $65K vs $50K vs $25K across his own properties 🔴 Blocks F3 and several ads
2 Additional seat price — $29 vs $20 🔴 Conflict
3 Change orders / multi-phase / lien waivers shipped? 🔴 6 statements + 1 script depend on it
4 Financing performance stat (1 extra job/week, 4.5×) ⚠️ Needs documented source
5 HCP add-on count ⚠️ Re-verify live, screenshot dated
6 Customer releases for name + company + footage 🔴 Required before any paid run
7 Real product screen recordings 🔴 The one asset that must not be generated
8 Claim figures for TPB and iCare 🟡 Pullable from account data
9 Chad Cranfill's state (F2 beat 1) 🟡 Trivial
10 Switch Kit landing page 🔴 Before any conquest traffic
11 Designer pass — reset all headlines in real Poppins Bold ⚠️ Across all 107 statics
12 Films F2–F5 Not started; scripts and pipeline ready
13 Payout wording ✅ Resolved — "Same-day or next-day payouts"
14 Scott's years of experience ✅ Corrected to "over 30 years combined"

Deliverables produced

9 strategy documents · 107 static creatives · 6 production tools · 1 completed 28.5s film + 18 separate beats + 12 Veo plates · brand asset library · full Jobber teardown with transcript and frame analysis

Packaged in contractorplus-core-package.zip (13 MB) and contractorplus-static-ads.zip (165 MB), with README.md as the index.