ADS · WEBSITES · ASSISTANTS

Your product is fine. The ad is why nobody clicks.

Whatever a business needs, we'll build it: a video, an ad, a website, a digital assistant or an AI receptionist.

Spec work is labeled. It is not a client list.

SPEC
SPEC
SPEC
SPEC
SpeedFirst drafts in 5 business days
Testing2 hooks per concept
Formats9:16 and 4:5
OwnershipYou keep the files
01Spec work

Spec ads

Tap any ad to watch it full screen with sound.

Spec · Skincare

Spec · Kitchen appliance

Spec · Athletic shoe

Spec · Supplement

Spec · Home gadget

Spec · Apparel

Spec · Pet product

Spec · App / SaaS

8 of 8 are spec. Client work replaces a tile when a brand allows it.

02Free offer

Free ad video

Claim a free ad video for your product.

  • A custom 3-second scroll-stopper hook for your product
  • Delivered as a captioned MP4
  • First drafts in 5 business days
Get a free ad

Open to any business. No spend minimum.

03Offers

What we can build

Whatever a business needs, we'll build it. Enquire or get a quote — there is no checkout on this page.

Video ads

All prices CAD plus GST.

  • 1 × 15s ad CA$299 per ad + GST
  • 2-ad pack
    We send you the 2 finished ads.
    CA$500 + GST one-time
  • 5-ad pack
    We send you the 5 finished ads.
    CA$1,000 + GST one-time
  • 1 × 30s ad CA$600 per ad + GST
Each ad includes
  • Hook / script
  • A 15–16s vertical 9:16 video (30s on the 30s option)
  • Captions, music and logo
  • One revision
  • Full rights to post it or run it as a paid ad

Made from your photos, phone clips or AI-assisted editing — not a filmed shoot. Ad spend and running the ads are not included.

Get a quote

Managed Ads

CA$1,750 / month + GST

  • 5 new ads each month
  • We post and run them
  • Short monthly report

Ad spend is paid separately to Meta.

Month-to-month, no long contract.

Get a quote

Websites

Custom quote

  • A site built for your business
Get a quote

AI assistants & workflows

Custom quote

  • Tools and workflows that take work off your plate
Get a quote
IN TESTING

AI Digital Receptionist

CA$99 / month + GST

Setup fee: CA$149 one-time + GST

Enquire

Google Business Profile setup

CA$299 one-time + GST

  • One-time setup of your Google Business Profile
Enquire

Website care & updates

CA$85–99 / month + GST

  • Ongoing updates and care for your site
Enquire

No checkout on this page.

04Process

How it works

Steps

From brief to files

  1. 1Brief
  2. 2Concepts as text first
  3. 3Captioned MP4s, named and ready to upload
Fit

For

  • Businesses that need a video, an ad, a website or an assistant
  • Physical products and local services
  • You run your own ads manager
Fit

Not for

  • On-camera creator/UGC talent
  • Media buying
  • Logo work
People

Who makes these

Justin Tortorelli, founder. He writes every script and edits every cut himself.

Risk

Safety net

  • You approve the scripts before we make anything. If none of them land, you pay nothing.
Inputs

What you send us

  • Product photos, clips and your logo.
05Brief

Get a quote

Tell us about the business. If this is a fit, you hear back within one business day.

(function(){var d=document.documentElement,k='vd-theme';try{var t=localStorage.getItem(k);if(t)d.setAttribute('data-theme',t)}catch(e){} function go(){if(d.getAttribute('data-vd'))return;d.setAttribute('data-vd','1'); var Q=function(s){return Array.prototype.slice.call(document.querySelectorAll(s))}; Q('.vd .tog').forEach(function(b){b.addEventListener('click',function(){var n=d.getAttribute('data-theme')==='light'?'dark':'light';d.setAttribute('data-theme',n);try{localStorage.setItem(k,n)}catch(e){}})}); var rm=window.matchMedia&&matchMedia('(prefers-reduced-motion: reduce)').matches,io=window.IntersectionObserver; var vs=Q('.vd video[data-auto]'); function P(v){if(rm)return;v.preload='auto';var p=v.play();if(p&&p.catch)p.catch(function(){})} vs.forEach(function(v){v.muted=v.defaultMuted=true;v.controls=false;v.setAttribute('aria-description','Spec ad. Not a paid campaign. Fictional brand.')}); if(io){var o=new io(function(es){es.forEach(function(e){e.isIntersecting?P(e.target):e.target.pause()})},{rootMargin:'150px 0px',threshold:.15});vs.forEach(function(v){o.observe(v)})}else vs.forEach(P); var x=document.querySelector('.vd .vx'),xv=x.querySelector('video'),xp=x.querySelector('p'),xb=x.querySelector('button'),last; function cl(){if(x.hidden)return;xv.pause();xv.removeAttribute('src');xv.load();x.hidden=true;d.style.overflow='';last&&last.focus()} Q('.vd .vid').forEach(function(b){b.addEventListener('click',function(){var v=b.querySelector('video');last=b;xv.src=(v.currentSrc||v.getAttribute('src')).split('#')[0];xv.muted=false;xp.textContent=b.parentNode.querySelector('.cap').textContent+' · not a client ad';x.hidden=false;d.style.overflow='hidden';xb.focus();var p=xv.play();if(p&&p.catch)p.catch(function(){})})}); xb.addEventListener('click',cl);x.addEventListener('click',function(e){e.target===x&&cl()});document.addEventListener('keydown',function(e){e.key==='Escape'&&cl()}); var bar=document.querySelector('.vd .bar'),h=document.getElementById('top'),f=document.getElementById('vdform')||document.getElementById('request'),sh={}; if(io&&bar&&h){var ob=new io(function(es){es.forEach(function(e){sh[e.target===h?'h':'f']=e.isIntersecting});bar.classList.toggle('on',!sh.h&&!sh.f)});ob.observe(h);f&&ob.observe(f)}} document.readyState==='loading'?document.addEventListener('DOMContentLoaded',go):go()})();

Target platforms

!function(){var t=document.getElementById("vdform");if(t&&!t.getAttribute("data-ready")){t.setAttribute("data-ready","1");var e=function(t){return document.getElementById(t)},n=e("vf-form"),r=e("vf-submit"),i=e("vf-status"),a=e("vf-alert"),o=e("vf-email"),s=e("vf-email-warn"),u=e("vf-website"),c=e("vf-type");if(c&&!c.getAttribute("data-extra")){c.setAttribute("data-extra","1");[["Video ads: 1 × 15s ad (CA$299 per ad + GST)","video"],["2-ad pack (CA$500 + GST one-time)","pack2"],["5-ad pack (CA$1,000 + GST one-time)","pack5"],["Video ads: 1 × 30s ad (CA$600 per ad + GST)","video30"],["Managed Ads (CA$1,750/mo + GST)","managed"],["Website (custom quote)","website"],["AI assistant / workflow (custom quote)","assistant"],["AI Digital Receptionist","receptionist"],["Google Business Profile setup (CA$299 + GST)","gbp"],["Website care & updates (CA$85–99/mo + GST)","care"]].forEach(function(a){var o=document.createElement("option");o.value=o.textContent=a[0];o.setAttribute("data-kind",a[1]);o.setAttribute("data-pack",a[0]);c.appendChild(o)});}l=e("vf-win"),d=e("vf-win-opt"),f=e("vf-pdf-wrap"),v=e("vf-pdf"),h=Array.prototype.slice.call(n.querySelectorAll("input[data-platform]")),m=n.querySelector(".vf-chips"),p=window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,b=!1,y=!1,g=["\u0040gmail.com","\u0040yahoo.com","\u0040hotmail.com"],E="A work email helps us look at your brand faster. A personal address is fine if that's what you use.",w={"vf-name":function(t){return t.trim()?"":"Enter your full name."},"vf-email":function(t){return(t=t.trim())?/^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/.test(t)?"":"Enter a valid email, like you\u0040yourbrand.com.":"Enter your email."},"vf-company":function(t){return t.trim()?"":"Enter your company or brand name."},"vf-website":function(t){return t.trim()?function(t){if(/\s/.test(t))return!1;try{var e=new URL(t);return("https:"===e.protocol||"http:"===e.protocol)&&/^([a-z0-9-]+\.)+[a-z0-9-]{2,}$/i.test(e.hostname)}catch(t){return!1}}(A(t))?"":"Enter a valid URL, like yourbusiness.com.":""},"vf-spend":function(t){return t||F()?"":"Choose a monthly spend range."},"vf-win":function(t){return t.trim()||L()||F()?"":"Tell us what a win looks like."},"vf-deadline":function(t){return t?"":"Choose a turnaround."},"vf-type":function(t){return t?"":"Choose a request type."}};Object.keys(w).forEach(function(t){var n=e(t);n.addEventListener("blur",function(){"vf-website"===t&&n.value.trim()&&(n.value=A(n.value)),(n.value.trim()||y)&&S(n),"vf-email"===t&&O()}),n.addEventListener("SELECT"===n.tagName?"change":"input",function(){"SELECT"===n.tagName&&I(n),(n.getAttribute("aria-invalid")||y&&"SELECT"===n.tagName)&&S(n),"vf-email"===t&&O()})}),h.forEach(function(t){var e=t.parentNode;t.addEventListener("change",function(){e.classList.toggle("is-on",t.checked),(y||m.classList.contains("is-invalid"))&&x()}),t.addEventListener("focus",function(){var n=!0;try{n=t.matches(":focus-visible")}catch(t){}n&&e.classList.add("is-focus")}),t.addEventListener("keyup",function(){e.classList.add("is-focus")}),t.addEventListener("blur",function(){e.classList.remove("is-focus")})}),c.addEventListener("change",T);var k={"test pack":"test",monthly:"retainer",single:"single"};Array.prototype.forEach.call(document.querySelectorAll(".vd .packs .card"),function(t){var e=t.querySelector("h3"),n=e&&k[e.textContent.trim().toLowerCase()];n&&Array.prototype.forEach.call(t.querySelectorAll('a[href="#request"]'),function(t){t.addEventListener("click",function(){N(n)})})}),Array.prototype.forEach.call(document.querySelectorAll("[data-pick]"),function(t){t.addEventListener("click",function(){N(t.getAttribute("data-pick"))})}),window.addEventListener("hashchange",j),j(),n.addEventListener("submit",function(t){if(t.preventDefault(),!b){y=!0,a.hidden=!0,u.value.trim()&&(u.value=A(u.value));var r=function(){var t=[];return Object.keys(w).forEach(function(n){var r=e(n);S(r)||t.push(r)}),x()||t.push(h[0]),O(),t.sort(function(t,e){return t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1}),t}();if(r.length){i.textContent=1===r.length?"Check the highlighted field.":"Check the "+r.length+" highlighted fields.",i.classList.add("is-err"),(r[0].closest(".vf-field")||r[0]).scrollIntoView({behavior:p?"auto":"smooth",block:"center"});try{r[0].focus({preventScroll:!0})}catch(t){r[0].focus()}}else{q();var s=L(),l=c.options[c.selectedIndex],d=e("vf-company").value.trim();e("vf-platforms").value=h.filter(function(t){return t.checked}).map(function(t){return t.value}).join(", "),e("vf-replyto").value=o.value.trim(),e("vf-subject").value=s?"Voss brief: FREE AD VIDEO claim — "+d:"Voss brief: "+l.getAttribute("data-pack")+" — "+d,s||(v.value="",v.disabled=!0);var f=new FormData(n);["name","email","company","win","pdf_tool"].forEach(function(t){f.has(t)&&f.set(t,String(f.get(t)).trim())}),z(!0),i.textContent="Sending your brief…";var m=window.AbortController?new AbortController:null,g=setTimeout(function(){m&&m.abort()},2e4);fetch("https://formspree.io/f/xzezyjbq",{method:"POST",body:f,headers:{Accept:"application/json"},signal:m?m.signal:void 0}).then(function(t){clearTimeout(g),t.ok?(z(!1),q(),V(s)):D()}).catch(function(){clearTimeout(g),D()})}}}),T(),[e("vf-spend"),e("vf-deadline")].forEach(I)}function K(){var t=c.options[c.selectedIndex];return t&&t.getAttribute("data-kind")||""}function L(){return"hook"===K()}function F(){return/^(website|assistant|receptionist|gbp|care)$/.test(K())}function A(t){return(t=(t||"").trim())&&!/^[a-z][a-z0-9+.\-]*:\/\//i.test(t)&&(t="https://"+t.replace(/^\/+/,"")),t}function C(t,n){var r=e(t.id+"-err");return r&&(r.textContent=n),n?t.setAttribute("aria-invalid","true"):t.removeAttribute("aria-invalid"),!n}function S(t){return C(t,w[t.id](t.value))}function x(){if(F()){return e("vf-platforms-err").textContent="",m.classList.remove("is-invalid"),m.removeAttribute("aria-invalid"),!0}var t=h.some(function(t){return t.checked});return e("vf-platforms-err").textContent=t?"":"Pick at least one platform.",m.classList.toggle("is-invalid",!t),t?m.removeAttribute("aria-invalid"):m.setAttribute("aria-invalid","true"),t}function O(){var t=o.value.toLowerCase(),e=g.some(function(e){return-1!==t.indexOf(e)})&&!o.getAttribute("aria-invalid");s.textContent!==(e?E:"")&&(s.textContent=e?E:"")}function I(t){t.value?t.removeAttribute("data-empty"):t.setAttribute("data-empty","")}function q(){i.textContent="",i.classList.remove("is-err")}function T(){var t=L(),q=F(),j=t||q;I(c),d.textContent=j?" (Optional)":"",l.required=!j;var B=e("vf-platforms-opt"),H=e("vf-spend-opt"),M=e("vf-spend");B&&(B.textContent=q?" (Optional)":"");H&&(H.textContent=q?" (Optional)":"");M&&(M.required=!q);q?(C(M,""),x()):(y&&M&&S(M),y&&x());t?(C(l,""),v.disabled=!1,f.classList.add("is-open"),f.setAttribute("aria-hidden","false")):(v.value="",v.disabled=!0,f.classList.remove("is-open"),f.setAttribute("aria-hidden","true"),(l.getAttribute("aria-invalid")||y)&&S(l))}function N(t){if(!n.hidden){for(var e=0;e < c.options.length;e++)if(c.options[e].getAttribute("data-kind")===t){c.selectedIndex=e;break}T(),c.getAttribute("aria-invalid")&&S(c)}}function j(){"#claim-hook"===(location.hash||"").toLowerCase()&&N("hook")}function z(t){b=t,r.disabled=t,r.textContent=t?"Sending…":"Send brief",t?n.setAttribute("aria-busy","true"):n.removeAttribute("aria-busy")}function V(t){var r=e(t?"vf-done-hook":"vf-done-brief");t&&(e("vf-done-hook-msg").textContent="Justin and the Voss Digitals production team are reviewing your store layout right now. We will script and build your free ad video, a custom 3-second scroll-stopper hook, and deliver the captioned MP4 asset straight to your inbox. First drafts in 5 business days.");n.hidden=!0,n.style.display="none",r.hidden=!1;try{r.focus({preventScroll:!0})}catch(t){r.focus()}r.scrollIntoView({behavior:p?"auto":"smooth",block:"start"}),location.hash=t?"#voucher-received":"#brief-received";try{window.dispatchEvent(new CustomEvent("vdform:success",{detail:{type:t?"hook":"brief",request_type:c.value}}))}catch(t){}}function D(){z(!1),q(),a.hidden=!1,a.scrollIntoView({behavior:p?"auto":"smooth",block:"center"})}}()
VOSS DIGITALSAds, websites and assistants for any businesshello@© 2026

Welcome to Voss Digitals, serving businesses across Canada and beyond.

Never miss another job because you were on a roof.

When you can't pick up, an AI receptionist answers the call, takes the caller's name, number and what they need, and texts you the lead.

Keep your own number.

How it works

Three steps, no new phone

Calls you don't answer forward to the receptionist. Your number stays the same.

  1. 1

    You miss a call

    You're on a roof, under a sink or driving between jobs.

  2. 2

    The receptionist answers

    It takes the caller's name, number, address and what they need.

  3. 3

    You get a text with the lead

    Who called, how to reach them, the job and how urgent it is. Call back when you're down.

Dashboard

Every call, in one place

Leads, calls, transcripts and bookings in a simple dashboard that works on your phone.

Leads list in the dashboard, with each caller's need and how urgent it is
Dashboard screenshot: leads list
Every lead in one list, sorted by how urgent it is.
One lead opened, showing the summary, details and transcript
Dashboard screenshot: lead detail
Open a lead for the summary, details and full transcript.
A test call showing what the caller said and what the receptionist captured
Dashboard screenshot: test call
A test call, and what the receptionist captured from it.
The leads list on a phone
Phone screenshot
The same leads on your phone.

Screenshots use test data from a demo business. The names, numbers and counts are made up.

Pricing

CA$99 / month + GST

Setup fee: CA$149 one-time + GST

A monthly subscription. It answers business calls 24/7, takes messages, and sends you a text or email. Still in testing — leave your details below for early access.

Good to know
  • You keep your own number.
  • Urgent jobs are flagged so you see them first.
Included

Free with your subscription

These tools come with the receptionist, at no extra cost.

JobProof

Turns before-and-after job photos into a branded PDF report for pressure washers, detailers and landscapers.

Open

Contractor Quote Builder

Quick professional quotes for contractors and excavator work.

Open

Story Owl

Kids' read-aloud stories narrated by Ollie the Owl.

Open
Early access

Get early access

The receptionist is still in testing. Tell us about your business and we'll email you.

You keep your own number.

VOSS DIGITALS[email protected]© 2026
!function(){ var IMG_BASE="https://voss-receptionist-assets.pages.dev/img/"; var R=document.getElementById("vrf");if(!R||R.getAttribute("data-ready"))return;R.setAttribute("data-ready","1"); Array.prototype.forEach.call(document.querySelectorAll(".vr img[data-img]"),function(im){var fr=im.parentNode;if(im.getAttribute("src"))return;if(!IMG_BASE){fr.classList.add("nopic");return}im.onerror=function(){fr.classList.add("nopic")};im.src=IMG_BASE+im.getAttribute("data-img")}); var $=function(i){return document.getElementById(i)},f=$("vrf-form"),sb=$("vrf-submit"),st=$("vrf-st"),al=$("vrf-alert"),busy=!1,tried=!1; var V={"vrf-name":function(v){return v?"":"Enter your name."},"vrf-business":function(v){return v?"":"Enter your business name."},"vrf-email":function(v){return v?(/^[^\s\u0040]+\u0040[^\s\u0040]+\.[^\s\u0040]{2,}$/.test(v)?"":"Enter a valid email, like you\u0040yourbusiness.com."):"Enter your email."},"vrf-phone":function(v){var d=v.replace(/\D/g,"");return v?(d.length>=10&&d.length<=15?"":"Enter a phone number with area code."):"Enter your phone number."},"vrf-trade":function(v){return v?"":"Choose your trade or industry."}}; function chk(id){var el=$(id),m=V[id](el.value.trim());$(id+"-er").textContent=m;m?el.setAttribute("aria-invalid","true"):el.removeAttribute("aria-invalid");return!m} Object.keys(V).forEach(function(id){var el=$(id);el.addEventListener("blur",function(){if(el.value.trim()||tried)chk(id)});el.addEventListener(el.tagName==="SELECT"?"change":"input",function(){if(el.getAttribute("aria-invalid"))chk(id)})}); function set(b){busy=b;sb.disabled=b;sb.textContent=b?"Sending\u2026":"Get early access"} function fail(){set(!1);st.textContent="";al.hidden=!1} f.addEventListener("submit",function(e){e.preventDefault();if(busy)return;tried=!0;al.hidden=!0; var bad=Object.keys(V).filter(function(id){return!chk(id)}); if(bad.length){st.textContent=bad.length===1?"Check the highlighted field.":"Check the "+bad.length+" highlighted fields.";$(bad[0]).focus();return} var biz=$("vrf-business").value.trim();$("vrf-subject").value="Voss receptionist sign-up: "+biz;$("vrf-replyto").value=$("vrf-email").value.trim(); var fd=new FormData(f);set(!0);st.textContent="Sending\u2026"; var ac=window.AbortController?new AbortController:null,to=setTimeout(function(){ac&&ac.abort()},2e4); fetch("https://formspree.io/f/xzezyjbq",{method:"POST",body:fd,headers:{Accept:"application/json"},signal:ac?ac.signal:void 0}).then(function(r){clearTimeout(to);if(!r.ok)return fail(); $("vrf-done-msg").textContent="We have your details for "+biz+". We'll email you at "+$("vrf-email").value.trim()+" about next steps."; f.hidden=!0;$("vrf-done").hidden=!1;try{$("vrf-done").focus({preventScroll:!0})}catch(x){}$("vrf-done").scrollIntoView({block:"center"})}).catch(function(){clearTimeout(to);fail()})}); }()