[{"data":1,"prerenderedAt":138},["ShallowReactive",2],{"portfolio-x-lead":3,"portfolio-related-x-lead":108},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"order":10,"isActive":11,"longDescription":12,"results":13,"category":15,"image":16,"url":17,"tags":18,"recommended":24,"client":8,"year":28,"metrics":29,"highlights":39,"overview":44,"challenge":45,"solution":46,"architecture":47,"dataFlowSteps":65,"screenshots":71,"features":83,"technical":90,"body":97,"_type":102,"_id":103,"_source":104,"_file":105,"_stem":106,"_extension":107},"/portfolio/x-lead","portfolio",false,"","X-Lead","Bulk email verification inside Google Sheets — results in the grid, optional HubSpot handoff.",1,true,"Spreadsheet addon for bulk email verification with integrated lead management and HubSpot sync — lightweight UI in the sheet, API-backed checks, and an admin surface for operations.",[14],"Automated 3-stage validation that reduced bounce rates for early-adopter sales teams by an average of 22%.","Web App","/images/portfolio/x-lead.jpg","https://x-lead.vercel.app/",[19,20,21,22,23],"Next.js","Google Sheets API","HubSpot API","TypeScript","Tailwind CSS",[25,26,27],"saas-dashboard","logify","media-compressor","2025",[30,33,36],{"value":31,"suffix":7,"label":32},3,"Validation stages (syntax, MX, SMTP)",{"value":34,"suffix":7,"label":35},5,"Surfaces — addon, API, landing, admin, CRM",{"value":37,"suffix":7,"label":38},2,"CRM touchpoints (contacts + pipeline status)",[40,41,42,43],"Verify email columns in bulk without exporting CSVs or switching tools","API performs syntax, MX, and SMTP-oriented checks; heavy work runs off the UI thread via a queue","HubSpot sync for contacts and pipeline status so verified leads land where sales already works","Admin dashboard for usage, logs, and accounts — separate from the marketer’s spreadsheet flow","X-Lead is a spreadsheet addon for teams that live in Google Sheets but still need trustworthy email data. Users select ranges or columns, run verification, and write results back into the grid — same file, same workflow, fewer copy-paste round trips to standalone tools.\n\nBehind the addon sits a verification API and a queue-backed processing path so large batches do not time out in the browser or hit provider rate limits naively. A Next.js landing page covers acquisition and onboarding; an authenticated dashboard gives operators visibility into jobs, failures, and usage.\n\nThe product deliberately meets sales and growth teams where they work. Verified rows can sync into HubSpot as contacts with appropriate lifecycle or deal signals, so the spreadsheet remains the scratchpad while the CRM stays the system of record.\n","Email verification products usually assume a web app or API-only integration. Sheet users expect instant feedback for small jobs but also run multi-thousand-row lists — the system has to feel responsive while still being honest about async work and partial failures.\n\nCRM sync adds another constraint: HubSpot objects and pipelines are easy to get wrong. Updates must be idempotent enough for re-runs, scoped to the right portal, and visible in admin logs when something misconfigures.\n","The addon talks to a dedicated verification API. Interactive checks can return quickly for small selections; bulk jobs are accepted as work items, processed by workers that implement syntax validation, MX lookup, and SMTP-oriented probing, then persist results for the sheet to poll or pull.\n\nThe Next.js app hosts the public landing (hero, product explanation, signup/install path) and the authenticated admin experience — metrics, job history, user-level usage, and integration health. Serverless or API routes handle auth boundaries and proxy sensitive operations.\n\nHubSpot integration uses the official APIs to upsert contacts and map verification outcomes to properties or stages the team configures. The addon does not replace HubSpot; it feeds it from the sheet with clear audit trails in the admin panel.\n",[48,54,60],{"title":49,"items":50},"Frontend",[51,52,53],"Google Sheets addon UI — bulk actions, progress, and per-row results in-grid","Marketing landing (Next.js) — hero, product narrative, install / trial CTAs","Authenticated dashboard — accounts, usage, logs, integration settings",{"title":55,"items":56},"Backend",[57,58,59],"REST-style API for verification requests and job status","Queue and workers for batch processing, retries, and rate-aware outbound checks","Persistence for jobs, results, and audit data consumed by the admin app",{"title":61,"items":62},"Integrations",[63,64],"Google Sheets API — sidebar UI, triggers, and writing results to cells","HubSpot API — contacts, properties, and pipeline / status updates from verified rows",[66,67,68,69,70],"Sheet addon","Verification API","Queue & workers","Results store","HubSpot CRM",[72,76,79],{"title":73,"caption":74,"image":75},"Addon in the spreadsheet","Bulk verification and per-row status without leaving the grid.","/images/portfolio/x-lead-sheet.jpg",{"title":77,"caption":78,"image":16},"Landing page","Hero, product summary, and path to install or sign up.",{"title":80,"caption":81,"image":82},"Admin dashboard","Usage, job history, and user-level visibility for operations.","/images/portfolio/x-lead-dashboard.jpg",[84,85,86,87,88,89],"Bulk email verification from the spreadsheet UI — select a range, run checks, read results in place","Fast, API-driven validation pipeline (syntax, MX records, SMTP-oriented probes as applicable)","Lead workflow — track verification outcomes alongside your columns before pushing to CRM","HubSpot integration for contacts and status / pipeline alignment after verification","Admin panel for monitoring usage, logs, integrations, and user activity","Next.js landing for marketing, pricing context, and onboarding",[91,92,93,94,95,96],"Next.js (TypeScript) for landing and dashboard; Tailwind for layout and component styling","API routes / serverless handlers for auth, job submission, and webhook-style HubSpot callbacks where needed","Addon uses Google Apps Script and the Sheets API for UI surfaces and cell writes; calls backend over HTTPS","Worker tier decouples SMTP and DNS-heavy work from request/response latency","HubSpot client implemented against current REST APIs; mapping layer keeps sheet columns and CRM properties explicit and testable","Structured logging in admin for failed jobs, integration errors, and re-sync operations",{"type":98,"children":99,"toc":100},"root",[],{"title":7,"searchDepth":37,"depth":37,"links":101},[],"markdown","content:portfolio:x-lead.md","content","portfolio/x-lead.md","portfolio/x-lead","md",[109,122,130],{"id":26,"title":110,"description":111,"category":15,"tags":112,"image":121},"Live fleet ops — less phone tag, faster compliance handoffs","Internal real-time platform for trucking — IoT through NATS JetStream, fleet dashboards, FMCSA-oriented reporting, Keycloak, Postgres + Redis.",[113,114,19,22,115,116,117,118,119,120],"AWS","IoT","Node.js","Keycloak","NATS","PostgreSQL","Redis","Compliance","/images/portfolio/logify.jpg",{"id":27,"title":123,"description":124,"category":15,"tags":125,"image":129},"Cross-platform compressor + download funnel — MVP in weeks","Electron app for local image/video compression (Windows, macOS, Linux) plus a landing page with installers and onboarding.",[126,127,128,115],"Electron","Next","Desktop App","/images/portfolio/media-compressor.jpg",{"id":131,"title":132,"description":133,"category":134,"tags":135,"image":137},"ozfame","Course funnel that turns social traffic into paid signups","Landing and checkout flow for an online course — mentor story, proof, pricing, and payment on legacy rails.","Landing Page",[127,136],"TailwindCSS","/images/portfolio/ozframe.jpg",1777088737991]