OR

Dashboard

Loading…

Recent Commissions

Loading…

💰 Company Contribution

▾ Details

📊 Projected Payout

▾ Simulate

Commission Ledger

Loading…

Balance

Loading…

Payout History

Loading…
Loading…

Team Performance

Loading…

My Subagents

Loading…

Subagent Earnings Summary

Loading…

Send Invite

Invite a new subagent. They'll receive an email with a registration link tied to your account.

Sent Invites

Loading…

Agents & Subagents

Loading…

Payout Requests

Loading…

Commission Rules

Loading…

Clients by Group

Select a client group above to view clients.

📦 Clients & Invoices

Click "Sync Clients" to pull the latest data from WHMCS, or select a group and click a tab.

💰 Commission by Salesperson

📊 Sandbox: Projected Payout

Locking a period prevents commission edits for that month. Unlock only if corrections are needed.

Commission Periods

Loading…

Commission Reports

Loading…

Agent Invites

Agents send invites from their portal; admins view all here
Loading…

Commission Rate Overrides

Overrides set a custom commission rate for a specific agent + product combination, taking precedence over the default rule.
Loading…

Webhook Endpoints

System-wide webhooks receive real-time events (invoice.paid, payout.approved, etc.). The secret is shown once on creation.
Loading…

📱 SMS 2FA Code Forwarder

ACTIVE
Forwards SMS 2FA codes from your phone to the Sales Portal so you can quickly copy verification codes when logging into carrier portals (AT&T, Comcast, Verizon, etc.) from the Circuits Cost page.
Webhook URL
https://sales.amer.net/api/v1/sms-forward/webhook
Registered Phone
(415) 716-7240
Setup Instructions
1 Install SMS Forwarder - Forward SMS on the phone that receives carrier 2FA codes
2 In the app, add a new forwarding rule → choose Webhook as destination
3 Paste the Webhook URL above as the endpoint
4 Enable forwarding — filter by sender if desired (e.g. AT&T, Comcast short codes)
5 Go to Circuits Cost page → click a carrier login URL → the 2FA code will appear as a floating toast in the bottom-right corner
Webhook Payload Format
POST https://sales.amer.net/api/v1/sms-forward/webhook
Content-Type: application/json

{
  "timestamp": "2026-04-09T14:30:00Z",
  "content": "Your AT&T verification code is 482916",
  "sender": "+1800288288",
  "contact": "AT&T"
}

🔍 Circuit Billing Scraper

ACTIVE
Local desktop app that logs into carrier portals (AT&T, Comcast, Verizon, Sonic) using your real Chrome browser — bypasses bot detection (Akamai). One-time setup, then runs monthly to sync billing data, download PDF statements, and detect cost changes.
💻
LOCAL MAC APP
Real Chrome + Playwright
Runs on your desktop
🌐
CARRIER PORTALS
AT&T, Comcast, Verizon
Login + scrape + PDF
☁️
SALES PORTAL API
Parse, store, analyze
Circuits Cost table
Features
Auto-login with session reuse — Logs into carrier accounts using stored credentials. Chrome profile persists cookies so subsequent runs skip login entirely.
2FA passthrough — When carrier requires SMS verification, Chrome window pauses and waits for you to enter the code (or use the SMS Forwarder above). Then continues automatically.
Bill & payment history scraping — Captures current balance, due date, monthly charges breakdown, line items, payment history, and account activity.
PDF statement download — Downloads PDF invoices from carrier portals. Syncs to Google Drive (Amernet Financial/Telecom Billing/{Provider}/{Account#}/) and links to circuit records.
PDF parsing (AT&T) — Extracts structured data from downloaded PDFs: line items, payments, previous bill, account charges — more reliable than HTML scraping.
Service column profiling — Configurable per-circuit column layout in Circuits Cost. Define which services (Internet, Static IP, etc.) appear as spreadsheet columns.
Multi-account batching — Groups circuits by carrier login. Logs in once per account, scrapes all circuits under that login, then moves to the next carrier.
Monthly Sync Workflow
1
Run scrapernpm start opens dashboard at localhost:3099. Click "Scrape All" or filter by provider.
2
Auto-login — App opens Chrome, logs into each carrier. If 2FA needed, complete it once in the browser window.
3
Scrape + parse — Current bill captured (page text), bill history imported, PDF statements downloaded and parsed.
4
Data synced — Billing data upserted to Sales Portal (deduped by circuit + bill month). PDFs archived to Google Drive.
5
Review — Check Circuits Cost page: billing spreadsheet, payment status, overdue indicators, rate change flags.
Coming Soon
Rate change detection — Alert when monthly charges increase or new fees appear vs. previous billing cycle
Cost reconciliation — Compare carrier invoice total vs. Provider Cost in Circuits Cost and flag mismatches
Overdue payment alerts — Email/Slack notification when a circuit has an unpaid balance past the due date
Scheduled auto-run — macOS launchd / cron job to auto-scrape on a monthly schedule after billing cycles close
More carriers — Comcast, Verizon, Sonic parser templates (AT&T complete, others in progress)
One-Time Setup
1
Clone the repo: git clone git@github.com:amernet/amernet-sales.git
2
Install: cd local-scraper && npm install
3
Run: npm start — opens dashboard at localhost:3099
4
Login to Sales Portal from the dashboard (credentials stored at ~/.circuit-scraper/token.json)
5
Ensure circuits have billing credentials saved (Circuits Cost → Edit → Login URL / Username / Password)
6
(Optional) Install Google Drive Desktop — PDFs auto-sync to shared Telecom Billing folder
Technical Details
Runtime:Node.js + Playwright (real Chromium, not headless) Chrome profile:~/.circuit-scraper/chrome-profile/ — cookies persist between runs PDF storage:Google Drive Telecom Billing/{Provider}/{Account#}/ or ~/.circuit-scraper/pdfs/ PDF parsing:pdfjs-dist — extracts line items, payments, balance from AT&T PDF statements API sync:Upserts to circuit_billing_history — deduped by (circuit_id, bill_month) Logs:~/.circuit-scraper/logs/

WHMCS Connection

Checking…

Sync Run Log

Loading…

Circuits Cost

Loading…

Contract Tracker

Loading…