[{"data":1,"prerenderedAt":250},["ShallowReactive",2],{"settings":3,"portfolio-pg-grocery-rewards":31},{"id":4,"apple_touch_icon":5,"cv":6,"default_meta_image":7,"default_meta_image_alt":8,"email":9,"extension":10,"external_links":11,"favicon":21,"favicon_png":22,"location":23,"logo_dark":24,"logo_light":24,"meta":25,"name":26,"round_logo":27,"site_url":28,"stem":29,"__hash__":30},"settings\u002Fsettings.yml","\u002Fimages\u002Fapple-touch-icon.png","\u002Fmark-spirek-resume.pdf","\u002Fimages\u002Fog-ms.png","Mark Spirek, AI + growth systems","mark@markspirek.com","yml",[12,15,18],{"url":13,"text":14},"https:\u002F\u002Fgithub.com\u002Fmspirek","GitHub",{"url":16,"text":17},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fmspirek\u002F","Linkedin",{"url":19,"text":20},"https:\u002F\u002Ffocusstate.com",":focus state","\u002Ffavicon.svg","\u002Fimages\u002Ffavicon-32.png","Austin, TX","\u002Fimages\u002Flogos\u002Favatar.jpeg",{},"Mark Spirek",true,"https:\u002F\u002Fmarkspirek.com","settings","-NgLmQcZCLb8UuBzHIgaqY01HVxlOIncFQJniBnRPlg",{"id":32,"title":33,"blurb":34,"body":35,"categories":237,"cover_image":240,"date":241,"description":65,"extension":242,"meta":243,"meta_description":244,"meta_title":245,"navigation":27,"path":246,"seo":247,"stem":248,"__hash__":249},"portfolio\u002Fportfolio\u002Fpg-grocery-rewards.md","P&G Grocery Rewards","Transforming 70+ one-off promotional microsites into a unified rewards platform with receipt validation, account management, and loyalty features.",{"type":36,"value":37,"toc":227},"minimark",[38,43,47,51,54,60,67,71,74,103,108,112,115,135,140,144,147,179,183,215,220,224],[39,40,42],"h2",{"id":41},"the-problem","The Problem",[44,45,46],"p",{},"For years, P&G ran 3-4 promotional campaigns per quarter at regional grocery stores, each one getting its own branded microsite. Shoppers would buy P&G products, upload their receipt, and receive a prepaid gift card. After building over 70 of these one-off microsites, it was clear this approach wasn't scaling. Each build was time-consuming, and P&G was missing opportunities to collect shopper data and build long-term brand engagement.",[39,48,50],{"id":49},"the-solution-a-rewards-hub","The Solution: A Rewards Hub",[44,52,53],{},"I helped architect and build P&G Grocery Rewards, a single platform that consolidated all their promotional campaigns into one destination with a loyalty layer on top. Instead of spinning up a new microsite every quarter, campaigns now lived as dynamic pages within the hub.",[55,56,57],"blockquote",{},[44,58,59],{},"The shift from building 70 microsites to maintaining one platform was the kind of engineering decision that pays dividends for years.",[44,61,62],{},[63,64],"img",{"alt":65,"src":66},"","\u002Fimages\u002Fportfolio\u002Fpg-grocery-rewards\u002Fscreenshot-1.png",[39,68,70],{"id":69},"the-tags-engine","The TAGS Engine",[44,72,73],{},"The platform was built on top of TAGS (Take Action Get Stuff), a proprietary proof-of-purchase rewards engine. The core flow was deceptively simple: buy, upload receipt, get reward. The integration layer was complex:",[75,76,77,85,91,97],"ul",{},[78,79,80,84],"li",{},[81,82,83],"strong",{},"Receipt processing"," via Snipp API for image validation and product matching",[78,86,87,90],{},[81,88,89],{},"Reward fulfillment"," pipeline handling prepaid gift cards and promotional prizes",[78,92,93,96],{},[81,94,95],{},"Regional targeting"," serving different promotions based on user zip code",[78,98,99,102],{},[81,100,101],{},"Error handling and customer support"," flows for failed receipt submissions",[44,104,105],{},[63,106],{"alt":65,"src":107},"\u002Fimages\u002Fportfolio\u002Fpg-grocery-rewards\u002Fscreenshot-2.jpg",[39,109,111],{"id":110},"the-redemption-flow","The Redemption Flow",[44,113,114],{},"I built a streamlined 3-step redemption process that had to balance simplicity with the reality of validating purchase receipts:",[75,116,117,123,129],{},[78,118,119,122],{},[81,120,121],{},"Step 1: Email + store verification",", with smart retailer lookup to reduce failed submissions",[78,124,125,128],{},[81,126,127],{},"Step 2: Receipt upload",", with annotation guidance, image validation, and surfaced help content (previously hidden behind tooltips)",[78,130,131,134],{},[81,132,133],{},"Step 3: Confirmation",", with conditional CTAs for account creation, game components, and cross-promotion",[44,136,137],{},[63,138],{"alt":65,"src":139},"\u002Fimages\u002Fportfolio\u002Fpg-grocery-rewards\u002Fscreenshot-4.png",[39,141,143],{"id":142},"account-loyalty-features","Account & Loyalty Features",[44,145,146],{},"The account dashboard was the key differentiator from the old one-off approach:",[75,148,149,155,161,167,173],{},[78,150,151,154],{},[81,152,153],{},"Submission tracking"," giving users visibility into receipt validation status (previously email-only)",[78,156,157,160],{},[81,158,159],{},"Reward history"," showing lifetime earnings across all promotions",[78,162,163,166],{},[81,164,165],{},"Punch card system"," incentivizing participation in multiple campaigns",[78,168,169,172],{},[81,170,171],{},"Location-based recommendations"," surfacing upcoming promotions in the user's region",[78,174,175,178],{},[81,176,177],{},"Personalized welcome messaging"," for returning logged-in users",[39,180,182],{"id":181},"the-technical-stack","The Technical Stack",[75,184,185,191,197,203,209],{},[78,186,187,190],{},[81,188,189],{},"Vue.js"," front end with dynamic routing for campaign pages",[78,192,193,196],{},[81,194,195],{},"Node.js"," backend orchestrating multiple third-party integrations",[78,198,199,202],{},[81,200,201],{},"Snipp API"," for receipt processing and validation",[78,204,205,208],{},[81,206,207],{},"Regional content management"," serving location-specific promotions",[78,210,211,214],{},[81,212,213],{},"White-label architecture"," designed for potential licensing to other clients",[44,216,217],{},[63,218],{"alt":65,"src":219},"\u002Fimages\u002Fportfolio\u002Fpg-grocery-rewards\u002Fscreenshot-3.png",[39,221,223],{"id":222},"the-result","The Result",[44,225,226],{},"The Rewards Hub launched as an MVP in spring 2021, with quarterly campaigns now hosted on the platform. The architecture we built was designed from day one to be white-labeled, and that foresight paid off when we started exploring licensing the platform to other CPG brands.",{"title":65,"searchDepth":228,"depth":228,"links":229},2,[230,231,232,233,234,235,236],{"id":41,"depth":228,"text":42},{"id":49,"depth":228,"text":50},{"id":69,"depth":228,"text":70},{"id":110,"depth":228,"text":111},{"id":142,"depth":228,"text":143},{"id":181,"depth":228,"text":182},{"id":222,"depth":228,"text":223},[238,195,239],"Vue","API Integration","\u002Fimages\u002Fportfolio\u002Fpg-grocery-rewards\u002Fcover.png","2021-03-01T05:00:00+0000","md",{},"A centralized rewards and loyalty platform for P&G's grocery promotional campaigns, consolidating 70+ microsites into a single destination.","P&G Grocery Rewards | Work | Mark Spirek","\u002Fportfolio\u002Fpg-grocery-rewards",{"title":33,"description":65},"portfolio\u002Fpg-grocery-rewards","B634KZ8axh53FaeCsRnjnoONfhcGBdxhbJtesMCSJ0c",1788901049129]