Internal Tool Evidence level · In progress

ABA Command Center, a production-connected operations platform for an Alaska outfitter

An internal operations platform I designed and built for Alaska Backcountry Access: live Xola bookings alongside weather, avalanche, and trail intelligence, fleet and dispatch, maps, and a custom CRM, one screen instead of a dozen tabs. Since October 2026 it runs unattended on its own server and answers questions in Google Chat.

Part of Alaska Backcountry Access
Client
Alaska Backcountry Access
Sector
Adventure tourism, Alaska
Role
Designed & built by me, architecture, integrations, and data model
Period
2025–2026 · internal tool, running on its own server since October 2026
Services
Operations platform design & build · Production Xola integration · Live safety & weather intelligence · Fleet, dispatch & inventory tooling · Custom CRM module · Webhook & automation architecture · Two-way Google Chat assistant · Linux server deployment
Tools
Python · Streamlit · Flask · SQLite · PostgreSQL (migration tooling) · Xola API · Leaflet maps · Webhooks · Google Chat API · Cloud Pub/Sub · Ubuntu Linux & systemd

The business

Alaska Backcountry Access runs its day-to-day across a dozen disconnected places: Xola for bookings, separate sites for weather, SNOTEL, and avalanche conditions, spreadsheets and notes for fleet and dispatch, and scattered files for customer history. Deciding whether a tour is a GO meant checking five tabs and remembering the sixth.

The real problem

Pull the operational picture into one screen (bookings, conditions, fleet, and customers) without faking data the business doesn't have, and without turning a real operating tool into a brittle demo. It had to use production booking data honestly while clearly showing which parts are live and which are still being wired up.

My responsibility

The whole platform: architecture, the live integrations, the booking and CRM data model, the maps and dispatch views, the webhook/automation service, and the test suite that keeps it from breaking silently.

  • Use production Xola data, but never invent bookings, alerts, or 'all systems operational' status the integrations can't actually confirm.
  • Disable cloud editing, dispatch sending, and other actions until their real credentials exist, rather than showing fake controls.
  • Stay honest about maturity: a production-connected internal tool, not a finished SaaS product.

What was built

The solution, in modules

01

One operational dashboard

A daily brief that combines live Xola bookings and manifests with weather, SNOTEL snow depth, avalanche danger, NWS alerts, fleet readiness, and a tour GO/CAUTION/NO-GO recommendation scored against current conditions.

02

Production Xola integration

Live booking data, calendars, manifests, and customer history pulled from the real Xola account, the system reports READY when the production connection is healthy, not as a hard-coded label.

03

Live safety & trail intelligence

A live operations map (Leaflet) with meetup locations and trail routes, plus SNOTEL, CNFAIC avalanche, NWS, and aviation feeds, the conditions a backcountry operator actually decides on.

04

Fleet, dispatch & inventory

Machine readiness, maintenance and service flags, dispatch planning, trip logs, and performance views for the operational side of the business.

05

Custom CRM Core

A modular CRM with its own database schema, API routes, migration contract, and Postgres rehearsal tooling, contacts, conversations, leads, tasks, follow-ups, and outcome metrics. Designed as an extractable service within the larger platform, not yet a separately deployed app.

06

Runs on its own server

In October 2026 the platform moved off a desktop PC onto a small Ubuntu server. A systemd timer runs its scheduler about every five minutes (Xola sync, email sync, the morning dispatch) and a daily database backup, with no one at the keyboard.

07

ABA Desk, a two-way Google Chat link

Ten read-only slash commands (/today, /tomorrow, /manifest, /booking, /invoice, /open, /status, /policy, /pick, /help) answered in Google Chat from a read-only snapshot of Central's data. Every word comes from fixed templates, with no AI model in the answer path. Only enrolled people and allowed spaces get answers, booking details go only to the asker's private DM, and a kill switch stops it. Google delivers messages through Pub/Sub, so the server opens no public port.

08

Honest system state

Fake alerts and misleading 'all systems operational' messaging were removed; actions that need credentials (cloud editing, dispatch sending, OpenPhone SMS) are disabled until those credentials exist, so the UI never implies a capability that isn't wired up.

System view

How the platform comes together

  1. 01

    Live data sources

    Production Xola bookings and manifests; SNOTEL, CNFAIC avalanche, NWS, and aviation feeds; fleet and inventory records.

  2. 02

    Command Center

    A Streamlit interface plus a Flask webhook/automation service pull it together with a durable database and migration tooling.

  3. 03

    Operational decisions

    Daily brief, tour GO/NO-GO scoring, dispatch planning, and customer follow-up, the calls the business makes every morning.

Conceptual view of the data sources feeding one operational screen, not a screenshot of the live tool.

Inspectable proof

Proof you can inspect

Sanitized artifacts show the underlying work without exposing client identities, credentials, private dashboards, or customer data.

  • Build & integration status

    Fresh status from the latest build and live test pass. Production booking data is real; everything is labelled by what is actually wired up.

    Automated tests
    116 passed / 1 skipped
    Production Xola
    READY, live booking data
    CRM migration contract
    Passed
    Architecture
    Streamlit UI + Flask webhook/automation service

    Build, test suite, and live integration check · verified June 2026

  • October 2026: running on its own

    What changed in October, counted from the server's logs rather than estimated.

    Scheduler runs, Oct 10 to 15
    1,303, zero failed
    Daily database backups
    5 of 5 finished
    Google Chat link
    Live since October 11, read-only
    Answers written by
    Fixed templates, no AI model

    Server journal and database, read-only check · verified October 15, 2026

  • Claims boundary

    This case separates what is built and production-connected from what is still being wired up.

    Built & live
    Xola integration, ops dashboard, fleet/dispatch, maps, intelligence feeds, scheduled automation on its own server, Google Chat link
    Built, use not yet measured
    Custom CRM (real records), the owner's daily use of the Chat link
    In progress
    OpenPhone SMS, shared editing, off-site backups, AI free-text questions in Chat
    Not claimed
    Finished SaaS, autonomous system, or measured time savings

    Dated project status record · verified October 15, 2026

  • ABA Command Center dashboard showing the daily brief with no bookings today, fleet readiness, and tour decisions scoring Blue Ice Jetboating, Summer Snowmobile Tour, Turnagain Pass, and Spencer Glacier as GO, CAUTION, or NO-GO against current conditions

    The daily operational brief

    The real dashboard on a quiet day: live Xola booking status (no bookings today), weather and fleet readiness, and GO/CAUTION/NO-GO scoring for the outfitter's own tours against current conditions. The state reflects what the integrations actually report, not a hard-coded 'all systems operational'.

    Screenshot of the running internal tool · verified June 2026

  • ABA Command Center operations map showing loaded meetup locations on a Leaflet map of Alaska, with a trail-intelligence panel listing Nelchina Glacier, Tazlina Glacier, and Monument Mountain routes

    Live operations map & trail intelligence

    A real screen from the running tool: the Leaflet operations map with loaded meetup locations, plus the trail-intelligence panel drawing on SNOTEL, CNFAIC avalanche, and NWS feeds. No bookings or customer records are shown.

    Screenshot of the running internal tool · verified June 2026

  • ABA Command Center on a mobile screen showing the Operations tab with a live map and bottom navigation for Home, Calendar, Ops, Inbox, and CRM

    The same platform on a phone

    The operations platform in a responsive mobile layout, live map, assets, guest list, and dispatch tabs with bottom navigation. No customer data is shown.

    Screenshot of the running internal tool · verified June 2026

Evidence

What backs this up

  • Production Xola integration (live)

    Verified

    The platform connects to the real Xola account and reports READY; live testing loaded Xola status, weather, NWS alerts, SNOTEL, fleet data, and tour recommendations.

  • Automated test suite

    Verified

    1,514 tests passing, 1 skipped, on the main branch (run October 15, 2026); the CRM migration contract passes.

  • Unattended on its own server (October 2026)

    Verified

    From the move on October 10 to October 15, 2026, the scheduler ran 1,303 times with zero failed runs, and the daily database backup finished 5 times out of 5. Counts read from the server's own logs.

  • Two-way Google Chat link (live)

    Verified

    ABA Desk sent its first live reply on October 11, 2026, in a private DM and then in the team's shared Chat space. It is read-only and template-based, and it refuses anyone who is not enrolled.

  • Custom CRM Core (populated)

    Project record

    The CRM now holds real history: 4,385 contacts, 24,052 messages and 2,197 leads (counted on October 15, 2026), much of it from recovered text-message history. Outcome tracking is not yet measured.

  • OpenPhone SMS migration

    Pending

    Inbound/outbound SMS architecture is built and OpenPhone-ready, but credentials and live testing are pending, the largest remaining business workflow.

  • Production-readiness gaps

    Pending

    Shared cloud editing and an off-site copy of the backups are pending, and the runtime still uses SQLite rather than the prepared Postgres path. The interface is reachable only on a private network, not through app-level sign-in.

Results & current state

What's true today

  • The scattered operational picture lives on one screen, built on real booking data.

    Production Xola integration reports READY; the dashboard combines live bookings with weather, avalanche, fleet, and tour-decision intelligence.

  • It's engineered to last, not demoed to impress.

    1,514 automated tests, a durable database with migrations, webhook security, and a CRM migration contract that passes, with fake alerts and misleading status removed. Since October it has run unattended on its own server: 1,303 scheduler runs in its first five days, none failed.

  • The business can ask it questions from Google Chat.

    Ten read-only commands answer from a snapshot of Central's data with fixed templates, so bookings and manifests are a message away without opening the tool.

  • The CRM is real architecture, now holding real history.

    A modular CRM Core with its own schema, API routes, and Postgres tooling, designed as an extractable service, now holding thousands of real contacts and messages. Outcome tracking is the next step, not a claimed result.

Running your operation across a dozen disconnected tabs and apps?

Describe your setup in a few sentences. You'll get a plain answer about whether and how I can help.