Drag cards to rearrange · ‹ › to resize · 👁 to hide — changes save automatically
Total Revenueℹ
Total invoiced amount SUM of extended_price from all line items in the selected period. Includes fuel, taxes, freight, and all charges.
—
Total Gallonsℹ
Delivered volume Gallons actually delivered — quantity received × unit-to-gallon conversion, not ordered. Short-shipped or undelivered lines count only what went out the door. Excludes MF Tax and Charge lines.
—
Delivered gallons
Gross Marginℹ
Revenue minus cost of goods (Price − actual cost) × delivered gallons. Based on what was actually delivered, so it moves with delivered volume — undelivered lines add no margin. Before operating expenses.
—
Ordersℹ
Distinct invoice count COUNT of unique order numbers in the period. One delivery may have multiple line items but counts as one order.
—
Open ARℹ
Accounts receivable balance SUM of open_amount from unpaid invoices (status not Cancelled/Voided). This is the total amount owed by customers.
—
Total outstanding
Avg $/Gallonℹ
Revenue per gallon Total Revenue ÷ Total Gallons. Higher values indicate premium product mix or pricing power.
—
Revenue per gallon
At-Risk Customersℹ
Customers who stopped buying Customers with 3+ orders in the last 12 months who haven't ordered in 30+ days. Click to see the full Win-Back list and re-engage.
—
—
12-Month Revenueℹ
Rolling annual revenue Total revenue for the trailing 12 months from today. Not affected by the period selector.
—
Rolling 12 months
12-Month Gallonsℹ
Rolling annual volume Delivered gallons (quantity received) in the trailing 12 months from today.
—
Rolling 12 months
12-Month Marginℹ
Rolling annual profit Total gross margin for the trailing 12 months. The percentage shows margin as a percent of revenue.
—
Revenue Run Rateℹ
Annualized projection Current period revenue extrapolated to a full year. Based on the daily average × 365.
—
Annualized projection
Rack Terminals · lift points
Open →
OPIS Best Racks · lowest posting per product
Open →
Product
¢/gal
Move
Best Rack
Revenue & Margin Trend
Top Customers
Customer
Revenue
Open AR
Revenue by Location
Revenue by Product
Warehouse Performance · ▲▼ gallons vs. prior period
⌕
Warehouse ↕
Orders ↕
Gal ↕
Revenue ↕
Margin ↕
Margin % ↕
$/Gal ↕
Sales Representatives · ▲▼ gallons vs. prior period
⌕
Rep ↕
Code ↕
Orders ↕
Customers ↕
Gal ↕
Revenue ↕
Margin ↕
Margin % ↕
$/Gal ↕
Products
⌕
Product ↕
Line ↕
Orders ↕
Qty/Gal ↕
Revenue ↕
Avg $/Gal ↕
Margin ↕
Margin % ↕
LTM Gallonsℹ
Last twelve months volume Total gallons for the rolling 12-month period.
—
Rolling 12 months
MTD Gallonsℹ
Month-to-date volume Gallons shipped from the 1st of the current month through today.
—
QTD Gallonsℹ
Quarter-to-date volume Gallons shipped from the start of the current quarter through today.
—
YTD Gallonsℹ
Year-to-date volume Gallons shipped from January 1 through today.
—
Gallons by Month — 3-Year Comparison
Gallons by Product Line
Gallons by Warehouse
LTM Gross Profitℹ
Last twelve months margin Total gross margin for the rolling 12-month period.
—
MTD Gross Profitℹ
Month-to-date margin Gross margin from the 1st of the current month through today.
—
QTD Gross Profitℹ
Quarter-to-date margin Gross margin from the start of the current quarter through today.
—
GP Per Gallonℹ
Margin efficiency metric Gross Margin ÷ Total Gallons. Shows how much profit is earned per gallon sold. Key metric for fuel distributors.
—
Period average
Gross Profit by Month — 3-Year Comparison
GP by Product Line
GP by Warehouse
Current GP/Galℹ
Period GP per gallon Gross margin per gallon for the selected date range.
—
Period average
MTD GP/Gal
—
QTD GP/Gal
—
YTD GP/Gal
—
GP Per Gallon by Month — 3-Year Comparison
GP/Gal by Product Line
Product Line
Qty/Gal
Margin
GP/Gal
GP/Gal by Warehouse
Warehouse
Qty/Gal
Margin
GP/Gal
Customer Analysis
⌕
Customer ↕
Orders ↕
Revenue ↕
Qty/Gal ↕
Margin ↕
Margin % ↕
GP/Gal ↕
Open AR ↕
Last Order ↕
Order Lookup
⌕
Invoice ↕
Date ↕
Customer ↕
Warehouse ↕
Product ↕
Line ↕
Qty ↕
Qty/Gal ↕
Price ↕
Cost ↕
Revenue ↕
Margin ↕
Rep ↕
Gross Profit by Product Category
Gallons by Product Category
Categories are derived from each line's product line and category (fuel is booked with a blank category, so it's keyed off the product line). Tax, freight/fee and finance lines are excluded. Click any category name to drill into the products inside it — that's where individual brand names (Lubriplate, Pyroil, Delo, Primeguard…) live. Gallons reflect delivered volume (quantity received).
Fuel orders only — orders carrying a fuel-rack vendor (lube, DEF & parts orders are excluded). This is who AEG buys fuel from (the AP vendor), not the retail refiner brand — AEG lifts rack fuel through jobbers, so P66/Shell/Chevron don't appear here. For lube, DEF & packaged-goods breakdowns (and their brand names), see By Product Category. Gallons reflect delivered volume (quantity received). Supplier names come from the vendor master; an unmatched code shows as-is.
Daily Terminal Costs — Current Rack Prices
⌕
Vendor ↕
Terminal ↕
Product ↕
Cost / Gal ↕
Effective ↕
Current rack cost per vendor · terminal · product — the newest effective price from RAX's daily terminal costs (the same numbers keyed in each morning). Click any row to compare that grade across every terminal, cheapest-first, then drill into its price history. This is landed cost, not sell price.
OPIS Contract Benchmark — Rack Postings
⌕
Product ↕
Grade ↕
Supplier ↕
B/U ↕
Terms ↕
Price ¢/gal ↕
OPIS Move ↕
Δ Day/Day ↕
Posted ↕
Published OPIS gross contract rack prices (cents per gallon, before taxes/fees) from the daily Contract Benchmark File — the market's posted sell prices, not RAX's landed costs (those live on Rack Prices). OPIS Move is the change OPIS reported at posting; Δ Day/Day compares against the previous report we hold. Click any row for its posting history. Feed arrives by upload or the mailbox poller in Settings. Staff use only — do not redistribute outside AEG pending OPIS license review.
Rack Terminals — Lift Points
Click a pin for that terminal's current prices
Terminals are placed by city/state (street addresses in RAX are placeholders, so they're not used). Terminals sharing a city are fanned out slightly so each stays clickable. Any terminal that can't be geocoded is listed below and still opens.
All Terminals
⌕
Terminal ↕
City ↕
Products ↕
Vendors ↕
Newest ↕
Rebates by Month — Current Year
Rebates by Month
Rebates by Product Line
Rebates by Warehouse
Total Open AR
—
All outstanding
Current
—
Not yet due
Past Due
—
Open Invoices
—
Outstanding
Customers w/ Balance
—
Active accounts
Avg Invoice Age
—
Days outstanding
1–30 Days
—
Past due
31–60 Days
—
Overdue
61–90 Days
—
Critical
90+ Days
—
Seriously past due
Collections Activity (Last 30 Days)
Invoices Paid
—
Amount Collected
—
Top Past-Due Customers
Customer
Open Balance
Max Days Past Due
Invoices
Current
—
Not yet due
1–30 Days
—
Past due
31–60 Days
—
Overdue
61–90 Days
—
Critical
90+ Days
—
Seriously past due
All Open Invoices
⌕
Invoice # ↕
Customer ↕
Location ↕
Rep ↕
Amount ↕
Open ↕
Invoice Date ↕
Due Date ↕
Days Past Due ↕
Bucket ↕
Customers
⌕
Customer ↕
Location ↕
Rep ↕
Orders ↕
Revenue ↕
Qty/Gal ↕
Margin ↕
Margin % ↕
Open AR ↕
Last Order ↕
Revenue
—
Gallons
—
Weighted Margin
—
Weighted Margin %
—
Weighted GP / Gal
—
⚖Sales Performance View — Margin uses weighted cost for sales reporting and hiring/firing decisions. The main Overview uses actual cost for accounting/financials.
Top Customers — Ranked by Weighted Margin
⌕
Customer ↕
Orders ↕
Revenue ↕
Gallons ↕
Weighted Margin ↕
Weighted Margin % ↕
Weighted GP/Gal ↕
Actual Margin ↕
Loading…
By Salesman — Ranked by Weighted Margin
Salesman ↕
Customers ↕
Orders ↕
Revenue ↕
Gallons ↕
Weighted Margin ↕
Weighted Margin % ↕
Weighted GP/Gal ↕
Loading…
Top Products — Ranked by Weighted Margin
⌕
Product ↕
Line ↕
Orders ↕
Revenue ↕
Gallons ↕
Weighted Margin ↕
Weighted Margin % ↕
Weighted GP/Gal ↕
Loading…
Strategy:
Classifies by fixed days since last order: At Risk 30–60d, Stale 61–90d, Inactive 91+d
At Risk
—
—
Stale
—
—
Inactive
—
—
Total At-Risk Revenue
—
— customers · click for all
At-Risk Margin (Actual)
—
—
All At-Risk Customers
⌕
Customer ↕
Rep ↕
Location ↕
Last Order ↕
Days Since ↕
Avg Cadence ↕
Orders 12M ↕
Revenue 12M ↕
Margin 12M ↕
Tier ↕
Contact
Open Invoices
Invoice
Date
Due Date
Amount
Open
Status
Product Mix
Product
Qty/Gal
Avg Price
🏦 Draft Notices
⛽ ULD Dyed Diesel — Government Report
Order History
⌕
Invoice
Date
Location
Qty/Gal
Amount
Open
Status
💳 Payments Received
⌕
Paid
Invoice
Customer
Method
Amount
Fee
Status
Verified
RAX
✉ Payment Requests
⌕
Created
Invoice
Customer
Sent To
Amount
Last Activity
Status
👋
Welcome!
Your account has been created but hasn't been assigned access yet.
Next Steps
Please contact your manager or IT department to request dashboard access. They will assign the appropriate role for your position.
Logged in as:
Account status: Pending Approval
PDF Reports
Formatted reports for executives and staff. Uses the current time period and location filter.
Cities · window total · ▲▼ gallons vs. prior period
⌕
City ↕
Top Rep ↕
Accounts ↕
Gal ↕
Revenue ↕
Margin ↕
On Map ↕
📍 Sales Territory Map Setup
✕
Loading…
Platform Modules
Licensed by Paradigm Technologies · (806) 249-4748
Loading…
Activate a License Key
Keys are signature-verified offline — no internet connection required. Every activation is written to the audit log.
Recent Licensing Activity
Loading…
Branding & Identity
⛽
Logo: PNG, JPG, or SVG · max 500KB. Colors apply to accent elements and sidebar.
Uses app logo
Report Logo
Optional logo used on report output — invoice, statement & draft-notice PDFs and the Dyed Diesel Excel export. When set, it overrides the app logo on those documents. Leave empty to use the app logo above. PNG, JPG, or SVG · max 500KB.
Appearance
Theme
Switch between dark and light interface
Database Connection
Configure the ODBC connection to the VS Petroleum SQL Anywhere database. All queries are read-only.
Not tested
General
Warn the user with a countdown before an idle session signs them out.
Used for Brand Breakdown and Rebate Splits pages
Authentication
Uses LDAP port 389 with SIMPLE bind (user@domain). New AD users get auto-created on first login with the default role above. Requires pip install ldap3 on the server.
Two-Factor Authentication (MFA)
Require MFA for All Users
When enabled, users without MFA will be prompted to set it up on their next login
Displayed in authenticator apps (Google Authenticator, Microsoft Authenticator, Authy)
Login Security
Account Lockout & IP Rate Limiting
Lock accounts after repeated failed sign-ins and throttle abusive IPs. Strongly recommended for internet-facing deployments.
Per-Account Lockout
Fails before lock
Rolling window
How long locked
Per-IP Rate Limit (across all usernames)
Fails per IP
Rolling window
How long blocked
Tip: When IIS or another reverse proxy fronts this app, the per-IP limiter reads the client address from X-Forwarded-For. Make sure the proxy strips any inbound XFF header from untrusted clients before forwarding. Locked users can be cleared from Users via the Unlock button.
Cookie & Session Security
Behind Reverse Proxy (IIS / nginx)
Enable when IIS or another reverse proxy sits in front of Flask. Tells the app to trust X-Forwarded-For and X-Forwarded-Proto for client IP and HTTPS detection. Leave OFF for direct localhost development.
Secure Cookies (HTTPS only)
Enable once SSL/HTTPS is in place. The session cookie will only be sent over HTTPS. If you enable this on plain http://, you will be unable to log in.
Lax allows top-level navigation; Strict blocks all cross-site sends.
Idle session expires after this many minutes.
Default to "Remember Me" on Login
When OFF, sessions end when the browser closes. Recommended OFF for internet-facing portals.
Note: The HttpOnly cookie flag is always on (cannot be disabled). Some changes (e.g. ProxyFix, SameSite) take effect on the next request, but a service restart is recommended after changing these settings to fully apply.
Audit Log Retention
Auto-Purge Old Audit Entries
Automatically delete audit log entries older than the configured retention window. Runs lazily when the app handles requests.
Entries older than this are deleted.
How often to run the purge check.
View / manage: The full audit log is at Admin → Audit Log, where you can filter, export to CSV, and trigger a manual purge.
Email & Alerts
Email Notifications
Enable email to send scheduled reports and AR alerts
SMTP.com API sends via HTTPS (port 443) — no firewall or SMTP relay issues. Get your API key and Sender Name from your SMTP.com dashboard.
AR Aging Alerts
AR Alerts Enabled
Email when invoices hit 30, 60, or 90 days past due
Signed Statement Alerts
Compliance Alerts Enabled
Email when a customer's number is suspended or not found on the Texas registry — both risk fuel-tax fines
Verified ≥% · Fuzzy ≥% (below = Mismatch)
🏦 EFT Draft Notice
Controls the Draft Notice button on the customer portal and the 360 view. Lists the open invoices that will be drafted from a customer's bank account on the draft date.
today +day(s) (rolled forward off weekends; staff can override per-print)
The "Drafting from …" bank line is pulled automatically from each customer's BANK record (bank_name), and the notice is gated to customers flagged eft_auto_draft in customer_credit. Account and routing numbers are never printed.
💳 Online Payments (Hyfin)
Lets customers pay open invoices online (card / ACH) via Hyfin's hosted payment page, and lets AR staff send text/email payment requests. Card data never touches this server. Payments land in the Portal Payments queue — AR still posts the cash receipt in RAX.
Staff can still send payment requests when hidden.
day(s)
Requires public HTTPS at the base URL above so Hyfin's payment webhooks can reach /api/hyfin/webhook/<secret>. Webhook payloads are verified against the Hyfin API before a payment is trusted. Develop against Stage; flip to Production only after end-to-end testing.
▤ OPIS Rack Feed (Mailbox Poller)
Automatically ingests the daily OPIS Contract Benchmark File from the mailbox OPIS emails it to. Manual upload on the OPIS Racks page works with or without the poller. Transport is swappable — if AEG moves to OPIS's FTP delivery later, only the fetch side changes. Staff use only pending OPIS license review.
minutes (min 5)
Save settings before testing — the test uses the saved credentials. The poller only reads unseen messages matching the filters, and every ingest lands in the Ingest Log on the OPIS Racks page.
Windows Service
Run as a Windows Service for automatic startup, background operation, and crash recovery.
Checking…
Requires Administrator privileges and pywin32 installed.
About
ApplicationFuel Intelligence v1.0
DatabaseSQL Anywhere via ODBC
Port5200
Build—
Built byParadigm Technologies
Order Entry · Sales Portal SKU
Emailed the full order when the desk forwards it for approval. Comma-separated for multiple managers. Blank = in-app only.
A rep cannot submit for an account exceeding the threshold. Managers and admins can override with a logged reason.
Unsaved changes · click Save All to apply
Portal Settings
Configure your branding, customer experience, and user defaults. Changes apply immediately across the app.
Brand
Your company identity. Used throughout the app, the customer portal, and on reports.
Enter your homepage URL and we'll detect your company name, theme color, and logo. You can edit the results before saving.
Buttons, links, and accents
Charts and secondary UI
PNG, JPG, or SVG. Up to 500KB. Shown in the sidebar, login pages, and emails.
Customer login page
A public-facing login at /portal. Link to this from your main website.
Shown below the sign-in card. Line breaks supported.
Password reset and access requests are delivered here for manual review. Falls back to your SMTP "To" address if blank.
Where the "New User? Click to Enroll!" form is delivered. Falls back to the admin notification email, then your SMTP "To" address if blank.
Where customer users land when they sign out. Leave blank to return them to the customer login page. Typically your main company website.
Optional. Shown behind the login card with a light overlay. Use a photo from your website — a truck, refinery, or branded image works well. JPG or PNG. Up to 2MB.
Customer portal (after login)
What customers see on their My Account page after signing in.
Welcome banner
Optional greeting at the top of My Account.
Sales rep contact card
Rep is pulled from the user record matching the customer's salesman code. Configure a fallback for customers with no assigned rep.
Customer portal sections
Show or hide individual cards on the customer's account dashboard.
Quick links
Tiles shown to customers above their KPIs.
Icon
Label
Type
Target
Announcement banner
A dismissable message shown at the top of the app. Users see it until they dismiss. Clearing the message hides the banner.
Default landing pages
Where each role lands after signing in. Individual users can override this from their user menu.
User Management
⌕
Username
Full Name
Role
Auth
Rep Code
MFA
Status
Last Login
Audit Log
Security & activity events. Used for incident review and compliance.
Total Entries
—
Showing
—
Oldest Entry
—
Retention
—
Timestamp
User
Action
Detail
IP
Loading…
SQL Console
Read-only — SELECT / WITH only. Every query is logged to the audit trail.
Results capped at 1,000 rows. Writes (INSERT / UPDATE / DELETE / DDL) are blocked.
New User
✕
AD accounts sign in with their Windows domain password — no password is stored in this app.
Shown on customer portal if user is a rep
Links the user to their RAX / VS salesman code
Links to VS customer table for portal access
Margin / Cost Visibility
Sales reps are hidden from margin by default. Override per user — e.g. show margins to a trusted rep.
Account Active
Inactive accounts cannot log in
Two-Factor Auth
Not configured
Set Up Two-Factor Authentication
✕
Scan this QR code with your authenticator app (Google Authenticator, Microsoft Authenticator, Authy, etc.)
Manual Entry Key
✅
MFA Enabled Successfully
Two-factor authentication is now active on your account. You'll need your authenticator app code each time you sign in.
Disable Two-Factor Authentication
✕
⚠ Security Warning
Disabling MFA will make your account less secure. You will only need your password to sign in.
— or —
Change Password
✕
Password change required. You must set a new password before continuing. This is required for new accounts, after an admin-initiated reset, or on first sign-in.
Temporary Password Generated
✕
This password will only be shown once. Convey it to through a secure channel (in person, phone, or encrypted message — not unencrypted email or chat). The user will be required to change it on next sign-in.
After closing this dialog, the password cannot be retrieved. If lost, reset again.
TX Exemptions
—
All TX exemptions
Verified
—
Name ≥95% match
Fuzzy
—
Name 80–95% match
Suspended
—
Stop tax-free
Not Found
—
No state record
Mismatch
—
Name <80% match
No Number
—
Statement missing
Other
—
Non-DD/AG exempt
State Registry
Loading…
Exemption Reconciliation
⌕
Status ↕
Customer ↕
City ↕
Code ↕
Type ↕
Reg # ↕
State Tax ID ↕
Note ↕
Forgot Password
✕
Enter your username or email below. An administrator will verify your identity and reset your password, then contact you directly.
✓ Request received. An administrator will contact you shortly.
Request Portal Access
✕
Fill out this form and an administrator will verify your account and create your login.
✓ Request received. An administrator will contact you shortly.
⏱️
Are you still there?
You've been inactive for a while. For security, you'll be signed out in: