Update BOC-3 handler: Process Agent LLC (Registered Agents Inc)

ProcessAgent.com is subsidiary of Registered Agents Inc. $25/yr
blanket BOC-3, no API, will automate via Playwright. Updated
partner details, admin todo steps, removed dead API stub.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
justin 2026-05-29 13:00:31 -05:00
parent 3385ad84a4
commit e473953fef

View file

@ -42,14 +42,17 @@ from datetime import datetime
LOG = logging.getLogger("workers.services.boc3_filing")
# Process agent partner details
# NWRA (Northwest Registered Agent) confirmed they no longer offer BOC-3.
# Registered Agents Inc is the replacement vendor (contract pending).
# Wholesale cost: ~$25 or less. Manual fulfillment until API is available.
# Process agent partner: Registered Agents Inc / Process Agent LLC
# ProcessAgent.com is a subsidiary of Registered Agents Inc.
# They own commercial offices in every US state (blanket agent).
# Cost: $25/year per carrier. No API — file via Playwright on their site.
# Phone: (406) 300-4044
PROCESS_AGENT_PARTNER = {
"name": "Registered Agents Inc",
"contact_email": "", # Update when contract is executed
"api_endpoint": None, # Will be set when RAI API is available
"name": "Process Agent LLC (Registered Agents Inc)",
"website": "https://www.processagent.com",
"phone": "(406) 300-4044",
"cost_cents": 2500, # $25/year
"automation": "playwright", # No API — automate via browser
}
@ -108,25 +111,20 @@ class BOC3FilingHandler:
"requested_at": datetime.utcnow().isoformat(),
}
# If we have a process agent API, submit directly
if PROCESS_AGENT_PARTNER.get("api_endpoint"):
success = self._submit_to_process_agent(designation)
if success:
self._send_confirmation_email(order_number, entity_name, dot_number, customer_email)
return []
# TODO: Automate via Playwright on processagent.com/order
# For now, create admin todo for manual filing
# Otherwise create admin todo
# Create admin todo
todo_data = {
"order_number": order_number,
"service": self.SERVICE_NAME,
"designation": designation,
"current_boc3_status": boc3_status,
"steps": [
"1. Submit BOC-3 designation request to process agent partner",
"1. Go to https://www.processagent.com/order",
"2. Submit BOC-3 order ($25) with carrier's DOT#, MC#, legal name, address",
f" Partner: {PROCESS_AGENT_PARTNER['name']}",
f" Email: {PROCESS_AGENT_PARTNER.get('contact_email', 'TBD')}",
"2. Include: DOT#, MC#, legal name, address for all 48 states + DC",
"3. Process agent files BOC-3 electronically with FMCSA",
"3. Process Agent LLC files BOC-3 electronically with FMCSA (1-5 business days)",
"4. Verify filing at https://li-public.fmcsa.dot.gov/LIVIEW/pkg_carrquery.prc_carrlist",
"5. Send confirmation to client",
],
@ -196,12 +194,6 @@ class BOC3FilingHandler:
except Exception as exc:
return f"Could not check: {exc}"
def _submit_to_process_agent(self, designation: dict) -> bool:
"""Submit designation to process agent partner via API."""
# TODO: Implement when partner API is available
LOG.warning("Process agent API not configured — falling back to admin todo")
return False
def _send_status_email(self, order_number, entity_name, dot_number, customer_email):
"""Send client an email that we're working on their BOC-3."""
if not customer_email: