Rethinking B2B Commerce: Building Oversee from the Ground Up

Wholesale commerce has been stuck in the past for a long time. Brands still rely on trade shows, cold emails, and spreadsheets to manage their retail distribution. Oversee set out to change that by building a platform where brands can discover retailers, launch outreach campaigns, and manage wholesale relationships — all from one place.

I joined early and helped build the frontend from scratch.

The Platform

Oversee is a Next.js application with a dense feature set. At its core, it's a B2B tool that combines:

  • Campaign management with multi-step email sequences and customizable templates
  • Retailer discovery with map-based search, geographic filtering, and AI-powered recommendations
  • An integrated inbox for managing conversations with retail buyers
  • Data sync with external platforms like Shopify
  • Stock scanning and product catalog management

Think of it as a CRM purpose-built for wholesale, with the outreach capabilities of a marketing automation tool.

Campaign Engine

The campaign system was the most complex module. Brands create outreach campaigns targeting specific retailers, using templates with sequenced steps — initial contact, follow-ups, and closing messages.

The challenges were around state management across a multi-step workflow: brands could save and resume campaigns mid-creation, reorder template steps, and preview how their sequence would look before launching. We needed to track unsaved changes and warn users before navigation (a custom hook that intercepted route changes), handle template population without redundant backend calls, and keep the rich text editor (Quill) in sync with the campaign state.

Reducing backend calls on template changes was a key optimization. Instead of fetching fresh data every time a user switched templates, we cached intelligently and only hit the API when the underlying data had actually changed.

Discovery and Search

The retailer discovery experience combined Google Maps, Mapbox, and Turf.js for geographic queries. Brands could search for retailers by location, category, and various business attributes, then add them directly to campaign audiences.

Building a responsive map experience that handled thousands of retailer pins without degrading performance required careful attention to clustering, viewport-based loading, and debounced search queries.

Real-Time Communication

The inbox module unified email threads from multiple providers (including Office 365 integration) into a single conversational view. Building this meant handling:

  • Email chip inputs with validation
  • Thread grouping and real-time updates
  • Rich text composition with Quill
  • File attachments via drag-and-drop

The email integration was particularly tricky — parsing response bodies from different providers, handling disconnection flows, and managing OAuth tokens for Office 365 verification.

Technical Stack

The app was built on Next.js 13 with the App Router, MUI for the component library, and Redux Toolkit for state management. Key integrations included:

  • Stripe for payment processing and subscription management
  • Auth0 for authentication
  • Sentry for error tracking
  • FullCalendar for scheduling
  • i18next for internationalization

Charts and analytics were built with Nivo and ApexCharts, giving brands visibility into campaign performance, lead conversion, and geographic reach.

What Made It Interesting

Building Oversee was a lesson in product breadth. Unlike a focused tool that does one thing well, this was a platform that needed to be good at campaigns, search, messaging, payments, and analytics — all at once. The architecture had to support rapid feature development without accumulating debt that would slow us down later.

The most rewarding part was seeing brands go from manually emailing retailers one by one to running targeted campaigns reaching hundreds of stores in minutes. That kind of leverage is what makes building software worth it.