BOTWAVE — Trades

Dispatch by text.
Your crew doesn't need an app.

BOTWAVE Trades is AI dispatch and crew management for trades businesses — plumbing, electrical, HVAC, and general contracting. Jobs come in by text. Dispatch goes out by text. Revenue summaries, unpaid invoices, job-site check-ins — answered by message, not a dashboard. Currently in private beta running on the operator's own plumbing crew.

4 trade bots live in production

── What it looks like

A conversation, not a dashboard.

Crews live in Telegram. The bot lives there too. No new app to install, no login to forget, no training required.

User: who still owes me money

TRADES: Three open invoices.

  Garcia Plumbing Supply    $2,400   NET-30 expires May 12
  M. Torres                 $285     dispatched Apr 28, no reply
  Riverside Apartments LLC  $950     partial — $500 received

Total outstanding: $3,635

Run "/remind Torres" to queue a follow-up message.

─────────────────────────────────────────────

User: what did I make in April

TRADES: April revenue — $8,240 collected across 6 jobs.
Three invoices still pending from that month ($1,235 total).
Net April: $7,005 after materials ($1,205 logged).

─────────────────────────────────────────────

User: schedule Rodriguez for leak repair tomorrow 9am

TRADES: Scheduled.
  Crew: Rodriguez
  Job: Leak repair
  Time: Tue May 12 · 09:00
  Confirmation sent to Rodriguez via Telegram.
🔧
Plumbing
live · beta
Electrical
in development
❄️
HVAC
in development
🏗️
General Contractor
in development

── Features

What it handles.

Dispatch

SMS and Telegram Dispatch

Jobs assigned by message. Crew members confirm via the same thread. No phone tag, no missed dispatch, no whiteboard.

  • Inbound job request → assigned crew in under 60 seconds
  • Crew confirmation tracked in substrate
  • No-reply after 15 minutes triggers a follow-up automatically

Morning Digest

Daily Crew Digest

Every morning before the first job: open tickets, crew assignments for the day, outstanding invoices. One message, no dashboard.

  • Sent at configurable time — default 06:30 local
  • Pulls from substrate — no manual compilation
  • Replies to digest trigger follow-up actions

Job-Site Check-Ins

Timestamped Arrivals

Crew texts "on site" — arrival logged with timestamp and job ID. Departure same. Time-on-site calculated automatically per job, per crew member.

  • Check-in / check-out by text — one word
  • Per-job time logs in substrate
  • Labor cost per job calculable from logs

Scheduling

Calendar by Message

Schedule a job, reschedule it, check crew availability — by message. The bot resolves conflicts before confirming.

  • Natural language date parsing — "tomorrow at 9" works
  • Conflict detection before confirmation
  • Crew notified automatically on schedule changes

Invoicing

Revenue Tracking by Text

"Who owes me" pulls unpaid invoices. "How much this month" gives collected revenue, pending totals, and materials logged. No spreadsheet required.

  • Invoice log in SQLite — queryable by message
  • Payment recorded when you say "Torres paid"
  • Monthly summary always one message away

Architecture

One Config, Four Trades

The same binary runs all four trades. Set BOTWAVE_TRADE=plumbing and it's a plumbing bot. Electrical, HVAC, GC — same code, different config.

  • python-telegram-bot + SQLite + JSONL substrate
  • Local inference — no cloud required
  • Systemd template unit — one service file, four instances
Trade config — what sets the bot's identity Python
# BOTWAVE_TRADE=plumbing sets everything below via config.json
TRADE_KEY  = os.environ["BOTWAVE_TRADE"].strip().lower()
_TRADE_DIR = (_TRADES / TRADE_KEY).resolve()
_TRADE_CFG = json.loads((_TRADE_DIR / "config.json").read_text())

# Config drives labor rates, company name, bot token, knowledge base.
# Zero hardcoded trade logic in the core binary.
LABOR_RATE = float(os.environ.get(
    "BOTWAVE_LABOR_RATE",
    _TRADE_CFG.get("default_labor_rate", 125)
))

# Four systemd instances from one unit file:
# botwave-sc@plumbing.service   botwave-sc@electrical.service
# botwave-sc@hvac.service       botwave-sc@gc.service

Private beta. Open to trade owners.

Currently running on one plumbing operation. Taking applications for a second beta crew — electrical or HVAC preferred. Send the email below with your trade, crew size, and the problem you want to solve first.