Field Service CRM
Operations Platform for a Multi-Brand Home Services Franchise
Problem.
Lead capture lived in Google Sheets, estimates in email PDFs, schedules in Google Calendar, payments in Stripe, payroll in spreadsheets, and accounting in QuickBooks. Franchisees couldn't see royalty totals without a manual export each month.
Solution.
A multi-tenant operations platform that runs the full lead → estimate → schedule → field crew → payment → QuickBooks lifecycle. Good/Better/Best estimates with online approval and payment, a customer-facing portal, GPS clock-in via a React Native field app, SMS automation through OpenPhone, and franchise royalty reporting baked into the data model.
- Kanban lead board with owner filters and territory routing
- Tiered estimates, contract signing, down payments, ACH/card
- One-way and two-way QuickBooks sync (customers, invoices, payments)
- Field app with timesheets, performance pay, expense logging
- Royalty invoicing for corporate, segmented dashboards per partner
PHP 8
Aurora MySQL
AWS Lambda
React Native
Stripe
QuickBooks
OpenPhone
Billing Automation
Carrier Billing Reconciliation for a Logistics Brokerage
Problem.
A weekly Excel workbook full of nested FILTER() formulas split UPS, FedEx, and DHL exports across clients, applied markup, and computed commissions. One bad paste broke a Monday morning.
Solution.
A rule-driven PHP app that ingests carrier CSVs, auto-routes each shipment to a customer billing bucket via an AND/OR identifier engine, applies markup multipliers and adders at import, computes commissions at read time, and exports per-client XLSX. New customers and accounts are added in the browser — no code changes.
- 3-layer billing model: customers → tabs → identifier rules
- Triage queue for unmapped rows with one-click rule creation
- EFR dashboards with KPI strips and commission ladder
- Multi-tab XLSX export, one sheet per customer bucket
PHP 8
MariaDB
PhpSpreadsheet
Apache
EC2
Claims Portal
Shipping Claims Operations Portal for a Freight Broker
Problem.
Claims were spread across email threads, spreadsheets, and the UPS portal. Staff re-keyed UPS batch fields by hand and the daily UPS payment CSV was reconciled manually against internal records.
Solution.
A self-service portal where shipper customers submit UPS-aligned claims, staff triage and file them, and the daily UPS CSV is parsed and matched by claim and tracking number. Customers respond to staff requests via tokenized email links without ever logging in. Unmatched rows fall into a reconciliation queue.
- Role-based portal (admin / staff / customer) with CSRF and bcrypt
- Tokenized customer follow-up emails — no portal account needed
- Automated UPS CSV reconciliation with unmatched queue
- Claim payment history and staff action workflow
PHP 8
MySQL 8
Apache
Docker
Subscription SaaS
Sports Analytics Subscription Platform with Creator Marketplace
Problem.
Bettors had no single place to compare prop lines across sportsbooks with historical hit rates, and independent creators had no infrastructure to monetize their picks beyond Discord/Telegram.
Solution.
A multi-sport analytics SaaS with prop research tools, model-driven shortlists, public track records, and AI-assisted game-day chat. A creator marketplace lets independent handicappers sell their own subscriptions, with Stripe billing and automated Discord role sync. Mobile app and iOS home-screen widget for live games.
- Tier-gated dashboards (MLB / NFL / NBA / UFC / All Sports)
- Stripe subscriptions, trials, referrals, promo eligibility
- Creator marketplace with Discord bot for role provisioning
- React Native app with native iOS widget
- AI chat with usage limits and game-day context
PHP 8
MySQL 8
Stripe
React Native
RevenueCat
Node.js
discord.js
Nonprofit Site
Memorial Foundation Website with Programs & Donations
Problem.
A new 501(c)(3) was running scholarship applications through Google Forms, donations through a generic checkout link, and tournament registration over email. There was no single branded presence to tell the story.
Solution.
A fast, brand-aligned Next.js site with the foundation's story and mission, structured scholarship and family-assistance intake (including PDF uploads), Stripe-powered donations, and an annual golf tournament page with gallery and registration link. Form submissions are stored server-side and emailed to staff.
- Mobile-responsive program and story pages
- PDF essay/resume upload with email notification
- Stripe donation CTAs and tournament registration
- Docker deploy to EC2 with standalone Next.js output
Next.js 14
TypeScript
Tailwind CSS
Nodemailer
Stripe
Docker
ERP Add-On Platform
Warehouse & Pricing Operations Platform for a Food Wholesaler
Problem.
Their ERP was the system of record but it had no way to reconcile physical counts against system inventory and production usage, no native price-sheet builder, and AR aging meant exporting CSVs and pivoting in Excel.
Solution.
A Next.js operations platform that syncs the ERP five times a day, applies a domain-specific discrepancy formula ({onHand} − {physicalCount} − {productionQuantity}), and exposes warehouse-friendly views for counts, locations, notes, and history. Tied-in price sheet builder generates branded PDFs from live inventory, and a Food Connex portal surfaces AR aging, orders, and inventory valuation.
- Scheduled ERP sync (categories, items, POs, work orders)
- Real-time discrepancy detection per warehouse code
- Price sheet editor with live HTML preview + React PDF
- AR aging dashboard (0-7, 8-14, 15-21, 22-28, 28+) with salesperson filter
Next.js 16
TypeScript
PostgreSQL
Prisma
NextAuth
React PDF
Carrier Rate Tooling
Multi-Carrier Rate Comparison Tool (this product)
Problem.
Pulling carrier rates one quote at a time through carrier portals doesn't scale. Comparing UPS and FedEx across a few thousand shipments was a multi-day spreadsheet exercise.
Solution.
A login-gated PHP tool that takes a CSV of shipments, dispatches parallel API calls to UPS and FedEx through a long-running worker, and shows live progress with cancel and retry. Plus single-shipment quoting and a weight-by-zone rate card generator that fires ~350 parallel calls per run.
- CSV batch upload with template, validation, and export
- Parallel rate fetching with token caches per carrier
- Live progress with auto-refresh, cancel, retry, unstick
- Single quote and weight × zone rate card with CSV export
PHP 8
MariaDB
UPS API
FedEx API
systemd worker
Nginx