{"id":995,"date":"2026-09-28T20:47:56","date_gmt":"2026-09-28T20:47:56","guid":{"rendered":"https:\/\/scottrschmidt.com\/?page_id=995"},"modified":"2026-09-28T20:57:22","modified_gmt":"2026-09-28T20:57:22","slug":"snapbrief","status":"publish","type":"page","link":"https:\/\/scottrschmidt.com\/","title":{"rendered":"SnapBrief"},"content":{"rendered":"<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Bebas+Neue&#038;family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400&#038;family=Playfair+Display:ital@1&#038;display=swap\" rel=\"stylesheet\">\n<style>\n#snapbrief{\n  --bg:#080808;--surface:#141210;--surface-2:#1b1815;--line:#2a2620;--text:#F5F2EC;--muted:#B7AF9F;--accent:#F2C94C;--accent-dim:#4a4327;\n  --font-display:'Bebas Neue','Arial Narrow',sans-serif;\n  --font-body:'DM Sans',-apple-system,BlinkMacSystemFont,sans-serif;\n  --font-serif:'Playfair Display',Georgia,serif;\n  width:100vw;position:relative;left:50%;margin-left:-50vw;\n  background:var(--bg);color:var(--text);font-family:var(--font-body);line-height:1.6;\n  min-height:100vh;-webkit-font-smoothing:antialiased;text-align:left;color-scheme:dark;\n}\n#snapbrief,#snapbrief *{box-sizing:border-box}\n#snapbrief p{margin:0}\n#snapbrief .sb-wrap{max-width:680px;margin:0 auto;padding:0 24px}<\/p>\n<p>\/* progress *\/\n#snapbrief .sb-bar{display:none;position:sticky;top:0;z-index:20;background:rgba(8,8,8,.94);backdrop-filter:blur(6px);border-bottom:1px solid var(--line);padding:14px 0}\n#snapbrief .sb-bar.on{display:block}\n#snapbrief .sb-bar-in{display:flex;align-items:center;gap:14px}\n#snapbrief .sb-brand{font-family:var(--font-display);font-size:20px;letter-spacing:.04em;color:var(--accent);white-space:nowrap}\n#snapbrief .sb-brand i{font-style:normal;color:var(--muted);margin:0 6px}\n#snapbrief .sb-track{flex:1;height:4px;background:var(--line);border-radius:2px;overflow:hidden}\n#snapbrief .sb-fill{height:100%;width:0;background:var(--accent);transition:width .4s ease}\n#snapbrief .sb-count{font-size:12px;color:var(--muted);white-space:nowrap;min-width:52px;text-align:right}<\/p>\n<p>\/* intro *\/\n#snapbrief .sb-intro{padding:80px 0 60px}\n#snapbrief .sb-intro .sb-brand{font-size:22px;margin-bottom:28px;display:block}\n#snapbrief .sb-title{font-family:var(--font-display);font-size:clamp(52px,12vw,88px);line-height:.92;letter-spacing:.01em;margin:0 0 14px;color:var(--text)}\n#snapbrief .sb-tag{font-family:var(--font-serif);font-style:italic;color:var(--muted);font-size:20px;margin-bottom:26px}\n#snapbrief .sb-copy{color:var(--text);font-size:16px;max-width:52ch;margin-bottom:14px}\n#snapbrief .sb-meta{font-size:13px;color:var(--muted);margin:22px 0 30px}<\/p>\n<p>\/* steps *\/\n#snapbrief .sb-flow{display:none;padding:44px 0 80px}\n#snapbrief .sb-flow.on{display:block}\n#snapbrief .step{display:none}\n#snapbrief .step.on{display:block;animation:sbrise .45s ease both}\n@keyframes sbrise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}\n#snapbrief .eyebrow{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}\n#snapbrief .h{font-family:var(--font-display);font-size:clamp(34px,7vw,46px);line-height:1;letter-spacing:.01em;margin:0 0 14px;color:var(--text)}\n#snapbrief .lead{color:var(--muted);font-size:16px;margin:0 0 30px;max-width:56ch}\n#snapbrief .field{margin-bottom:32px}\n#snapbrief .q{font-size:17px;font-weight:700;margin-bottom:6px;color:var(--text)}\n#snapbrief .req{color:var(--accent)}\n#snapbrief .hint{color:var(--muted);font-size:14px;margin:0 0 12px}\n#snapbrief .opts{display:flex;flex-direction:column;gap:8px;margin-top:12px}\n#snapbrief .opt{display:flex;align-items:center;gap:12px;padding:13px 16px;background:var(--surface);border:1px solid var(--line);border-radius:8px;cursor:pointer;transition:border-color .2s,background .2s;margin:0;font-weight:400;color:var(--text)}\n#snapbrief .opt:hover{border-color:var(--accent-dim)}\n#snapbrief .opt input[type=radio],#snapbrief .opt input[type=checkbox]{position:absolute;opacity:0;pointer-events:none;width:0;height:0}\n#snapbrief .opt .mark{flex:0 0 20px;height:20px;border:2px solid var(--muted);border-radius:50%;position:relative;transition:all .2s}\n#snapbrief .opt input[type=checkbox]+.mark{border-radius:5px}\n#snapbrief .opt input:checked+.mark{border-color:var(--accent);background:var(--accent)}\n#snapbrief .opt input:checked+.mark::after{content:\"\";position:absolute;left:5px;top:1px;width:5px;height:10px;border:solid #080808;border-width:0 2px 2px 0;transform:rotate(45deg)}\n#snapbrief .opt:has(input:checked){border-color:var(--accent);background:var(--surface-2)}\n#snapbrief .opt .txt{font-size:15px;flex:0 1 auto}\n#snapbrief .opt.other .in{flex:1;margin:0;padding:8px 10px}\n#snapbrief input.in,#snapbrief textarea.in{display:block;width:100%;margin:10px 0 0;padding:13px 16px;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:8px;font-family:var(--font-body);font-size:15px;line-height:1.5;outline:none;box-shadow:none;transition:border-color .2s}\n#snapbrief textarea.in{resize:vertical;min-height:110px}\n#snapbrief .in:focus{border-color:var(--accent)}\n#snapbrief .in::placeholder{color:#6f685b}<\/p>\n<p>\/* nav *\/\n#snapbrief .nav{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:40px;padding-top:24px;border-top:1px solid var(--line)}\n#snapbrief .btn{font-family:var(--font-body);font-size:15px;font-weight:700;letter-spacing:.02em;padding:14px 28px;border-radius:8px;border:1px solid var(--accent);background:var(--accent);color:#080808;cursor:pointer;transition:opacity .2s,transform .1s}\n#snapbrief .btn:hover{opacity:.9}\n#snapbrief .btn:active{transform:scale(.98)}\n#snapbrief .btn:disabled{opacity:.5;cursor:default}\n#snapbrief .btn.ghost{background:transparent;color:var(--muted);border-color:var(--line)}\n#snapbrief .btn.ghost:hover{color:var(--text);border-color:var(--muted)}\n#snapbrief .err{display:none;margin-top:16px;color:#ff8a7a;font-size:14px}\n#snapbrief .err.on{display:block}<\/p>\n<p>\/* closing card *\/\n#snapbrief .card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:26px;margin-bottom:26px}\n#snapbrief .card .ct{font-family:var(--font-display);font-size:26px;letter-spacing:.01em;margin-bottom:8px}\n#snapbrief .card p{color:var(--muted);font-size:15px;margin-bottom:16px}\n#snapbrief .pills{display:flex;flex-wrap:wrap;gap:8px}\n#snapbrief .pill{font-size:13px;color:var(--text);border:1px solid var(--line);background:var(--surface-2);padding:6px 12px;border-radius:999px}\n#snapbrief .final-note{font-family:var(--font-serif);font-style:italic;color:var(--muted);font-size:17px}<\/p>\n<p>\/* thanks *\/\n#snapbrief .sb-thanks{display:none;padding:110px 0}\n#snapbrief .sb-thanks.on{display:block;animation:sbrise .6s ease both}\n<\/style>\n<div id=\"snapbrief\">\n<div class=\"sb-bar\" id=\"sb-bar\">\n<div class=\"sb-wrap\">\n<div class=\"sb-bar-in\">\n        <!-- To add logos later, replace this text mark with <img> tags --><\/p>\n<div class=\"sb-brand\">SRS MEDIA<i>\u00d7<\/i>SNAP!<\/div>\n<div class=\"sb-track\">\n<div class=\"sb-fill\" id=\"sb-fill\"><\/div>\n<\/div>\n<div class=\"sb-count\" id=\"sb-count\"><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"sb-wrap\">\n<div class=\"sb-intro\" id=\"sb-intro\">\n      <span class=\"sb-brand\">SRS MEDIA<i>\u00d7<\/i>SNAP!<\/span><\/p>\n<div class=\"sb-title\">SNAPBRIEF<\/div>\n<p class=\"sb-tag\">Final scope questionnaire<\/p>\n<p class=\"sb-copy\">Thanks again for taking the time to chat.<\/p>\n<p class=\"sb-copy\">I have a strong understanding of what you\u2019re looking for, and these final questions will help me tighten the scope, make sure I\u2019m accounting for everything correctly, and put together an accurate quote.<\/p>\n<p class=\"sb-meta\">This should only take a few minutes. Your progress saves automatically.<\/p>\n<p>      <button class=\"btn\" id=\"sb-begin\" type=\"button\">Let\u2019s begin<\/button>\n    <\/div>\n<div class=\"sb-flow\" id=\"sb-flow\">\n<div id=\"sb-steps\"><\/div>\n<div class=\"err\" id=\"sb-err\"><\/div>\n<div class=\"nav\">\n        <button class=\"btn ghost\" id=\"sb-back\" type=\"button\">Back<\/button><br \/>\n        <button class=\"btn\" id=\"sb-next\" type=\"button\">Next<\/button>\n      <\/div>\n<\/p><\/div>\n<div class=\"sb-thanks\" id=\"sb-thanks\">\n<div class=\"sb-title\">THANK YOU<\/div>\n<p class=\"sb-tag\">Your answers are in.<\/p>\n<p class=\"sb-copy\">I\u2019ll use them to finalize the scope and put together a quote that accurately reflects the amount of content, editing, creative involvement, and scheduling involved. You\u2019ll hear from me soon.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n<p><script>\n(function(){\n  \/\/ ====== SETTINGS ======\n  var ACCESS_KEY = '826b61f7-11db-4447-aa47-a457adda5eb8';\n  var STORE = 'snapbrief_srs_v1';\n  \/\/ ======================<\/p>\n<p>  var root = document.getElementById('snapbrief');\n  function $(s){ return root.querySelector(s); }\n  function esc(s){ return String(s).replace(\/&\/g,'&amp;').replace(\/\"\/g,'&quot;').replace(\/<\/g,'&lt;'); }\n\n  function R(id,label,o,x){ return Object.assign({id:id,label:label,t:'radio',o:o},x||{}); }\n  function C(id,label,o,x){ return Object.assign({id:id,label:label,t:'check',o:o},x||{}); }\n  function T(id,label,x){ return Object.assign({id:id,label:label,t:'text'},x||{}); }\n  function A(id,label,x){ return Object.assign({id:id,label:label,t:'area'},x||{}); }\n\n  var steps = [\n    { title:'The Setup',\n      lead:'Here is how I understand the working model: SNAP! films raw UGC at your studio and hands it off. Each month, I edit 10 to 15 videos, write the captions, and schedule the posts, working one month at a time.',\n      qs:[\n        T('name','Your name',{req:true,p:'First and last name'}),\n        T('email','Best email to reach you (optional)',{p:'name@company.com'}),\n        R('model','Does that match your understanding?',['Yes, that\u2019s right','Mostly, with a few adjustments','Not quite, I\u2019ll explain below']),\n        A('modelnote','Anything you would add or change?')\n      ]},\n    { title:'Content Volume',\n      lead:'You mentioned approximately 10 to 15 posts per month.',\n      qs:[\n        R('volume','When you say 10 to 15 posts, what do you envision?',[\n          '10 to 15 core pieces of content that are adapted and distributed across multiple platforms',\n          '10 to 15 unique pieces of content for each platform',\n          'A mix depending on the month',\n          'Not completely sure yet']),\n        A('volumenote','Anything else that would help me understand the monthly volume?'),\n        R('overage','If more than 15 videos are needed in a given month, how would you like to handle it?',[\n          'Quote the extra videos separately',\n          'Let\u2019s talk about it when it comes up',\n          'We plan to stay within the range'])\n      ]},\n    { title:'Raw Content + Footage',\n      qs:[\n        R('footage','How much of the raw content will SNAP! typically provide?',[\n          'Mostly finished footage that just needs editing',\n          'Raw footage that I will need to review and shape into content',\n          'A mix of both',\n          'It may vary from month to month']),\n        A('footagenote','Anything I should know about how the footage is filmed or organized?'),\n        R('assets','Will I ever be expected to source or create supporting visual assets when needed?',['Yes','No','Possibly, depending on the post']),\n        A('assetsnote','If so, what kinds of assets do you have in mind?')\n      ]},\n    { title:'Video Editing',\n      qs:[\n        R('length','What general video length are you envisioning for most posts?',['Under 15 seconds','15 to 30 seconds','30 to 60 seconds','60+ seconds','It will vary']),\n        R('flex','Do I have flexibility to determine the best length for each piece based on the content?',[\n          'Yes, use your discretion','Mostly, within reason','I would prefer videos to stay within a specific range']),\n        T('range','If there is a preferred range, please note it here',{p:'Example: 20 to 40 seconds'}),\n        R('polish','How heavily edited should the content feel?',[\n          'Very natural \/ UGC-first','Clean and polished while still feeling organic','More produced and branded','A mix depending on the content'])\n      ]},\n    { title:'Captions',\n      lead:'As we discussed, I will be handling the captions.',\n      qs:[\n        R('capdir','How should I approach caption direction?',[\n          'Per-post notes from SNAP!',\n          'I\u2019ll write them around the goals of the posts and this initiative',\n          'A mix of both']),\n        C('captone','Should captions generally be:',['Short and conversational','Educational','Playful and personality-driven','Engagement-focused','Product-focused','A mix'],{other:true}),\n        A('capvoice','Anything specific I should know about SNAP!\u2019s preferred voice?')\n      ]},\n    { title:'Content Direction',\n      qs:[\n        A('feel','When someone sees SNAP! content, I want them to feel:',{sub:'For example: family, fun, exciting, effortless, stylish, social, premium, approachable, useful, entertaining.'}),\n        A('notfeel','Are there any feelings, tones, or styles you specifically do NOT want the content to have?')\n      ]},\n    { title:'Primary Goal',\n      qs:[\n        C('goals','What is the biggest goal for the social content right now?',[\n          'Grow the audience','Increase brand awareness','Spread the word about SNAP!','Build a stronger community','Increase engagement','Educate people about the product','Build excitement around the launch','Drive traffic to the website','Generate sales','Encourage sharing \/ word of mouth','Create a consistent brand presence'],{other:true,sub:'Select any that apply.'}),\n        A('goalone','If you had to choose one main priority, what would it be?')\n      ]},\n    { title:'What Does Success Look Like?',\n      lead:'At the end of the first few months, what would make you feel like this project is working? This does not have to be tied to a specific metric.',\n      qs:[\n        A('success','What would success look like to you?',{sub:'For example: more people recognizing the brand, more comments and conversations, more followers, more sharing, increased website traffic, consistent high-quality content going out, less time your team spends managing social.'}),\n        A('longterm','Is there anything specific you hope this project leads to over time?')\n      ]},\n    { title:'Creative Involvement',\n      qs:[\n        R('involve','How involved would you like me to be in developing the content itself?',[\n          'Primarily edit and execute the content SNAP! provides',\n          'Make suggestions when I see opportunities',\n          'Regularly suggest hooks, concepts, and improvements',\n          'Actively help develop monthly content ideas and direction',\n          'A mix depending on the month'])\n      ]},\n    { title:'Platform-Specific Content',\n      qs:[\n        R('adapt','Should the same core piece of content generally be adapted across platforms?',[\n          'Yes, primarily repurpose the same content',\n          'Yes, but make small platform-specific adjustments',\n          'I would like more platform-specific versions when appropriate',\n          'It will depend on the content']),\n        R('capcustom','Should captions also be customized by platform when appropriate?',['Yes','No','Use your discretion'])\n      ]},\n    { title:'Scheduling + Posting',\n      qs:[\n        R('sched','Would you like me to be responsible for scheduling the completed content?',['Yes','No','Possibly']),\n        T('schedplat','Which platform should scheduling happen through?',{p:'BigVU, Meta Business Suite, Later, other...'}),\n        R('schedwho','Will I be responsible for choosing posting dates and times, or will SNAP! provide the schedule?',[\n          'Use your discretion','SNAP! will provide the schedule','We can determine it together'])\n      ]},\n    { title:'Approval Process',\n      qs:[\n        T('approver','Who will give final approval on content before it goes live?',{p:'Name and role'}),\n        A('approvalflow','What does the approval process look like?',{sub:'How does content get reviewed and approved, and through what tool or channel (for example inside BigVU, email, a shared doc, text)?'}),\n        T('ahead','Ideally, how far ahead should content be approved and scheduled?',{p:'Example: one week before posting'})\n      ]},\n    { title:'Revisions',\n      qs:[\n        R('revs','For each piece of content, what would you consider a reasonable revision process?',[\n          'Minor revisions only','One revision round','Up to two revision rounds','Depends on the content']),\n        A('revother','Is there anyone besides the primary contact who may regularly request changes?')\n      ]},\n    { title:'Monthly Check-In',\n      qs:[\n        R('checkin','How often would a check-in or catch-up call be helpful?',[\n          'None needed','Once a month','Twice a month','Only when needed']),\n        C('checkwhat','What would you want to cover in those?',[\n          'Reviewing upcoming content','Reviewing numbers and performance','Brainstorming ideas','Discussing what is working well','Adjusting direction'],{other:true}),\n        A('checknote','Anything else you would like these to include?')\n      ]},\n    { title:'Brand Assets',\n      qs:[\n        C('assetlist','What will be available for me to work with?',[\n          'Logo files','Brand guidelines','Fonts','Brand colors','Product photography','Lifestyle photography','Existing video','Product renders','Templates','Music \/ audio guidelines'],{other:true}),\n        A('rules','Are there any brand rules, claims, words, visual styles, or product details that must always be handled a certain way?')\n      ]},\n    { title:'Anything I Missed?',\n      qs:[\n        A('missed','Is there anything from our call that you want to make sure is reflected in the proposal or quote?'),\n        A('expected','Is there anything you expected me to handle that was not covered above?')\n      ]},\n    { title:'Also Worth Knowing',\n      lead:'One last thing, and no pressure at all.',\n      qs:[],\n      html:'\n\n<div class=\"card\">\n<div class=\"ct\">Other ways I can help<\/div>\n<p>'+\n        '<\/p>\n<p>My focus here is the social content we discussed. Down the road, if it ever becomes useful, I also offer a few other things. This does not add anything to the current scope or quote. It just lets you know what is available as SNAP! grows.<\/p>\n<p>'+\n        '<\/p>\n<div class=\"pills\">'+['Static social graphics','Static ad creative','Graphic design','Website design + landing pages','Creative direction','Marketing materials','Sales decks + presentations','Campaign creative','Social media strategy','Full social media management','Brand + content strategy'].map(function(x){return '<span class=\"pill\">'+x+'<\/span>';}).join('')+'<\/div>\n<\/div>\n<p>'+\n        '<\/p>\n<p class=\"final-note\">Once I have these answers, I\u2019ll use them to finalize the project scope and put together a quote that accurately reflects the amount of content, editing, creative involvement, scheduling, and ongoing support involved.<\/p>\n<p>'\n    }\n  ];<\/p>\n<p>  \/\/ ---------- state ----------\n  var state = {started:false,i:0,a:{}};\n  try{ var s = JSON.parse(localStorage.getItem(STORE)||'null'); if(s && s.a) state = s; }catch(e){}\n  function save(){ try{ localStorage.setItem(STORE, JSON.stringify(state)); }catch(e){} }<\/p>\n<p>  \/\/ ---------- render ----------\n  function qHTML(q){\n    var h = '<\/p>\n<div class=\"field\">\n<div class=\"q\">'+q.label+(q.req?'<span class=\"req\"> *<\/span>':'')+'<\/div>\n<p>';\n    if(q.sub) h += '<\/p>\n<p class=\"hint\">'+q.sub+'<\/p>\n<p>';\n    if(q.t==='radio' || q.t==='check'){\n      var type = q.t==='radio' ? 'radio' : 'checkbox';\n      h += '<\/p>\n<div class=\"opts\">';\n      q.o.forEach(function(o){\n        h += '<label class=\"opt\"><input type=\"'+type+'\" name=\"'+q.id+'\" value=\"'+esc(o)+'\"><span class=\"mark\"><\/span><span class=\"txt\">'+o+'<\/span><\/label>';\n      });\n      if(q.other){\n        h += '<label class=\"opt other\"><input type=\"'+type+'\" name=\"'+q.id+'\" value=\"__other\"><span class=\"mark\"><\/span><span class=\"txt\">Other:<\/span><input class=\"in\" type=\"text\" data-other=\"'+q.id+'\" placeholder=\"Type here\"><\/label>';\n      }\n      h += '<\/div>\n<p>';\n    } else if(q.t==='text'){\n      h += '<input class=\"in\" type=\"text\" data-id=\"'+q.id+'\" placeholder=\"'+esc(q.p||'')+'\">';\n    } else {\n      h += '<textarea class=\"in\" rows=\"4\" data-id=\"'+q.id+'\" placeholder=\"'+esc(q.p||'Type your answer here')+'\"><\/textarea>';\n    }\n    return h + '<\/div>\n<p>';\n  }<\/p>\n<p>  var stepsEl = $('#sb-steps');\n  steps.forEach(function(st,i){\n    var d = document.createElement('div');\n    d.className = 'step';\n    d.id = 'sb-step-'+i;\n    d.innerHTML = '<\/p>\n<div class=\"eyebrow\">'+(i+1)+' of '+steps.length+'<\/div>\n<div class=\"h\">'+st.title+'<\/div>\n<p>'+\n      (st.lead?'<\/p>\n<p class=\"lead\">'+st.lead+'<\/p>\n<p>':'')+(st.qs||[]).map(qHTML).join('')+(st.html||'');\n    stepsEl.appendChild(d);\n  });<\/p>\n<p>  function eachQ(fn){ steps.forEach(function(st){ (st.qs||[]).forEach(fn); }); }<\/p>\n<p>  function collect(){\n    eachQ(function(q){\n      if(q.t==='text' || q.t==='area'){\n        var el = root.querySelector('[data-id=\"'+q.id+'\"]');\n        if(el) state.a[q.id] = el.value;\n      } else {\n        var sel = [].map.call(root.querySelectorAll('input[name=\"'+q.id+'\"]:checked'), function(x){ return x.value; });\n        var oe = root.querySelector('[data-other=\"'+q.id+'\"]');\n        state.a[q.id] = {sel:sel, other: oe ? oe.value : ''};\n      }\n    });\n    save();\n  }<\/p>\n<p>  function restore(){\n    eachQ(function(q){\n      var v = state.a[q.id];\n      if(v==null) return;\n      if(q.t==='text' || q.t==='area'){\n        var el = root.querySelector('[data-id=\"'+q.id+'\"]');\n        if(el) el.value = v;\n      } else {\n        [].forEach.call(root.querySelectorAll('input[name=\"'+q.id+'\"]'), function(x){ x.checked = v.sel.indexOf(x.value) > -1; });\n        var oe = root.querySelector('[data-other=\"'+q.id+'\"]');\n        if(oe) oe.value = v.other || '';\n      }\n    });\n  }\n  restore();<\/p>\n<p>  root.addEventListener('input', function(e){\n    var t = e.target;\n    if(t.dataset && t.dataset.other){\n      var box = t.closest('label').querySelector('input[type=radio],input[type=checkbox]');\n      if(box && t.value.trim()) box.checked = true;\n    }\n    collect();\n  });\n  root.addEventListener('change', collect);<\/p>\n<p>  \/\/ ---------- navigation ----------\n  var errEl = $('#sb-err');\n  function setErr(m){ if(m){ errEl.textContent = m; errEl.classList.add('on'); } else { errEl.classList.remove('on'); } }<\/p>\n<p>  function toTop(){\n    try{\n      var y = window.pageYOffset + root.getBoundingClientRect().top;\n      window.scrollTo(0, Math.max(y,0));\n      if(window.parent && window.parent !== window){ window.parent.postMessage({type:'snapbrief-scroll-top'}, '*'); }\n    }catch(e){}\n  }<\/p>\n<p>  function show(i, noScroll){\n    state.i = i;\n    steps.forEach(function(_,k){ $('#sb-step-'+k).classList.toggle('on', k===i); });\n    $('#sb-fill').style.width = ((i+1)\/steps.length*100)+'%';\n    $('#sb-count').textContent = (i+1)+' \/ '+steps.length;\n    $('#sb-back').style.visibility = i===0 ? 'hidden' : 'visible';\n    $('#sb-next').textContent = i===steps.length-1 ? 'Send final notes' : 'Next';\n    setErr('');\n    save();\n    if(!noScroll) toTop();\n  }<\/p>\n<p>  function begin(noScroll){\n    state.started = true;\n    $('#sb-intro').style.display = 'none';\n    $('#sb-flow').classList.add('on');\n    $('#sb-bar').classList.add('on');\n    show(state.i || 0, noScroll);\n  }<\/p>\n<p>  $('#sb-begin').addEventListener('click', function(){ begin(false); });<\/p>\n<p>  $('#sb-back').addEventListener('click', function(){\n    collect();\n    if(state.i > 0) show(state.i - 1);\n  });<\/p>\n<p>  $('#sb-next').addEventListener('click', function(){\n    collect();\n    if(state.i === 0 && !(state.a.name || '').trim()){\n      setErr('Please add your name to continue.');\n      var n = root.querySelector('[data-id=\"name\"]'); if(n) n.focus();\n      return;\n    }\n    if(state.i < steps.length - 1){ show(state.i + 1); } else { send(); }\n  });\n\n  \/\/ ---------- submit ----------\n  function ans(q){\n    var v = state.a[q.id];\n    if(v==null) return '';\n    if(q.t==='text' || q.t==='area') return String(v).trim();\n    return v.sel.map(function(s){ return s==='__other' ? ('Other: '+(v.other||'').trim()) : s; }).join('; ');\n  }\n\n  function summary(){\n    var nm = (state.a.name||'').trim(), em = (state.a.email||'').trim();\n    var t = 'SNAPBRIEF RESPONSES\\nFrom: '+nm+(em?' ('+em+')':'')+'\\n\\n';\n    steps.forEach(function(st,i){\n      if(!st.qs || !st.qs.length) return;\n      t += (i+1)+'. '+st.title.toUpperCase()+'\\n';\n      st.qs.forEach(function(q){\n        if(q.id==='name' || q.id==='email') return;\n        var a = ans(q);\n        t += 'Q: '+q.label+'\\nA: '+(a || '(no answer)')+'\\n\\n';\n      });\n      t += '\\n';\n    });\n    return t;\n  }\n\n  function send(){\n    if(ACCESS_KEY.indexOf('YOUR_') === 0){\n      setErr('The form is not connected to email yet. Add your Web3Forms access key in the SETTINGS section of the code.');\n      return;\n    }\n    var btn = $('#sb-next');\n    btn.disabled = true; btn.textContent = 'Sending...';\n    var em = (state.a.email||'').trim();\n    var payload = {\n      access_key: ACCESS_KEY,\n      subject: 'SNAPBRIEF submission from '+(state.a.name||'SNAP!').trim(),\n      from_name: 'SNAPBRIEF',\n      name: (state.a.name||'').trim(),\n      message: summary()\n    };\n    if(\/^\\S+@\\S+\\.\\S+$\/.test(em)) payload.email = em;\n\n    fetch('https:\/\/api.web3forms.com\/submit', {\n      method:'POST',\n      headers:{'Content-Type':'application\/json','Accept':'application\/json'},\n      body: JSON.stringify(payload)\n    }).then(function(r){ return r.json(); }).then(function(j){\n      if(j &#038;&#038; j.success){\n        try{ localStorage.removeItem(STORE); }catch(e){}\n        $('#sb-flow').classList.remove('on');\n        $('#sb-bar').classList.remove('on');\n        $('#sb-thanks').classList.add('on');\n        toTop();\n      } else { throw new Error((j &#038;&#038; j.message) || 'failed'); }\n    }).catch(function(){\n      setErr('Something went wrong sending your answers. Your progress is saved, so please try again.');\n      btn.disabled = false; btn.textContent = 'Send final notes';\n    });\n  }\n\n  \/\/ ---------- init ----------\n  if(state.started){ begin(true); }\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>SRS MEDIA\u00d7SNAP! SRS MEDIA\u00d7SNAP! SNAPBRIEF Final scope questionnaire Thanks again for taking the time to chat. I have a strong understanding of what you\u2019re looking for, and these final questions will help me tighten the scope, make sure I\u2019m accounting for everything correctly, and put together an accurate quote. This should only take a few&hellip; <a class=\"more-link\" href=\"https:\/\/scottrschmidt.com\/\">Continue reading <span class=\"screen-reader-text\">SnapBrief<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"nf_dc_page":"","om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_templately_pack_id":"","_templately_imported_at":"","_templately_source":"","_templately_import_session_id":"","footnotes":""},"class_list":["post-995","page","type-page","status-publish","hentry","entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SnapBrief - Scott R Schmidt<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/scottrschmidt.com\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SnapBrief - Scott R Schmidt\" \/>\n<meta property=\"og:description\" content=\"SRS MEDIA\u00d7SNAP! SRS MEDIA\u00d7SNAP! SNAPBRIEF Final scope questionnaire Thanks again for taking the time to chat. I have a strong understanding of what you\u2019re looking for, and these final questions will help me tighten the scope, make sure I\u2019m accounting for everything correctly, and put together an accurate quote. This should only take a few&hellip; Continue reading SnapBrief\" \/>\n<meta property=\"og:url\" content=\"https:\/\/scottrschmidt.com\/\" \/>\n<meta property=\"og:site_name\" content=\"Scott R Schmidt\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-28T20:57:22+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/scottrschmidt.com\\\/\",\"url\":\"https:\\\/\\\/scottrschmidt.com\\\/\",\"name\":\"SnapBrief - Scott R Schmidt\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/scottrschmidt.com\\\/#website\"},\"datePublished\":\"2026-09-28T20:47:56+00:00\",\"dateModified\":\"2026-09-28T20:57:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/scottrschmidt.com\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/scottrschmidt.com\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/scottrschmidt.com\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/scottrschmidt.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SnapBrief\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/scottrschmidt.com\\\/#website\",\"url\":\"https:\\\/\\\/scottrschmidt.com\\\/\",\"name\":\"Scott R Schmidt\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/scottrschmidt.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SnapBrief - Scott R Schmidt","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/scottrschmidt.com\/","og_locale":"en_US","og_type":"article","og_title":"SnapBrief - Scott R Schmidt","og_description":"SRS MEDIA\u00d7SNAP! SRS MEDIA\u00d7SNAP! SNAPBRIEF Final scope questionnaire Thanks again for taking the time to chat. I have a strong understanding of what you\u2019re looking for, and these final questions will help me tighten the scope, make sure I\u2019m accounting for everything correctly, and put together an accurate quote. This should only take a few&hellip; Continue reading SnapBrief","og_url":"https:\/\/scottrschmidt.com\/","og_site_name":"Scott R Schmidt","article_modified_time":"2026-09-28T20:57:22+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/scottrschmidt.com\/","url":"https:\/\/scottrschmidt.com\/","name":"SnapBrief - Scott R Schmidt","isPartOf":{"@id":"https:\/\/scottrschmidt.com\/#website"},"datePublished":"2026-09-28T20:47:56+00:00","dateModified":"2026-09-28T20:57:22+00:00","breadcrumb":{"@id":"https:\/\/scottrschmidt.com\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/scottrschmidt.com\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/scottrschmidt.com\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/scottrschmidt.com\/"},{"@type":"ListItem","position":2,"name":"SnapBrief"}]},{"@type":"WebSite","@id":"https:\/\/scottrschmidt.com\/#website","url":"https:\/\/scottrschmidt.com\/","name":"Scott R Schmidt","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/scottrschmidt.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/scottrschmidt.com\/index.php?rest_route=\/wp\/v2\/pages\/995","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scottrschmidt.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/scottrschmidt.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/scottrschmidt.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scottrschmidt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=995"}],"version-history":[{"count":2,"href":"https:\/\/scottrschmidt.com\/index.php?rest_route=\/wp\/v2\/pages\/995\/revisions"}],"predecessor-version":[{"id":999,"href":"https:\/\/scottrschmidt.com\/index.php?rest_route=\/wp\/v2\/pages\/995\/revisions\/999"}],"wp:attachment":[{"href":"https:\/\/scottrschmidt.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}