"Mission Control" Training Operations Portal

4 min read

“Mission Control” Training Operations Portal

TL;DR: A client needed one place for training operations and live CRM data, and to move off unwieldy Excel spreadsheets. I integrated HubSpot (CRM), Airtable (cloud hub with a familiar spreadsheet-style workspace), a stateless Rust connector for real-time sync, and an installable PWA for coordinators that works offline. Result: no more Excel or manual CRM exports; one cloud hub; a reliable field app.

Problem

The client coordinates national in-person corporate training. Two related problems had to be solved together.

CRM data (contacts, deals, activities) lived in HubSpot. Training operations—schedules, deliverables, calendars—were managed in Excel spreadsheets, which didn’t scale and weren’t accessible in the cloud. Operations teams were manually exporting CRM data into spreadsheets or working with stale copies. Meanwhile, coordinators in the field needed to manage schedules, track deliverables, and check dashboards from phones and tablets in venues where connectivity is unreliable. A traditional web app that hit the server on every action would be slow and brittle.

The goal was one integrated system: HubSpot and Airtable connected in real time, Airtable as the operational hub, and a PWA that gave coordinators a fast, offline-capable tool in the field—all reading and writing the same data.

The Integration

The value of this project isn’t any single component—it’s how HubSpot, Airtable, and the PWA work together as one system.

Airtable as the hub. The client needed to move off Excel but still wanted a familiar spreadsheet-style workspace—tables, filters, views. Airtable gave them that while putting everything in the cloud. It became the single place where CRM data and training operations data meet, and where non-technical users can view and edit directly without going through developers.

HubSpot-to-Airtable connector. I built a stateless Rust/Axum microservice that listens for HubSpot webhook events and mirrors CRM data into Airtable in real time. Mappings are configurable via YAML—which fields go where, type coercion, cross-table link lookups, association syncing. It also runs scheduled full syncs and handles soft deletes. Because the service is stateless (each webhook or sync run is self-contained), it’s simple to deploy, scale, and recover. The tradeoff is that rich mappings require config and code changes when schema evolves, but that’s a fair trade for eliminating all manual CRM-to-spreadsheet workflows.

The PWA. Mission Control is an installable PWA (Next.js, TypeScript, Chakra UI) with Microsoft Entra ID authentication. Coordinators use it for trainer scheduling, deliverable tracking, calendar timelines, and operational dashboards. The key design choice was treating the client as the source of truth during use and Airtable as a sync target—not hitting the server on every action. The app reads from IndexedDB (instant), updates the UI optimistically, and queues mutations through a dedicated sync layer that sends them to Airtable in the background with retry on reconnect. Queued changes persist across app restarts.

This pattern made the app fast and resilient regardless of connectivity, but it means local state can diverge from Airtable until the next sync. I implemented conflict detection and a clear sync-status UI (pending changes, last sync time, errors) so coordinators always know whether their data has been persisted to the shared hub.

Outcome

Excel spreadsheets are gone. Operations moved to Airtable without forcing the team to learn a new paradigm. CRM data flows into the hub automatically—no manual exports, no stale copies. Coordinators have a fast, predictable field app that works offline, and the sync status UI keeps trust high. The stateless design of both the connector and the PWA client kept the integration boundaries clean and the system straightforward to maintain.

Technologies

Connector: Rust, Axum, HubSpot webhooks and API, Airtable API, YAML-driven mappings. PWA: Next.js, TypeScript, Chakra UI, IndexedDB (Dexie.js), Service Workers, Airtable API, Microsoft Entra ID.