Commit graph

19 commits

Author SHA1 Message Date
justin
edf81765ac 499-A question: "provide and bill" instead of just "bill"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 20:47:42 -05:00
justin
d6780dd9f9 Use entity name in ALL CAPS for compliance questions
RMD: "Does WYOMING FIBER PHONE INC provide any voice services?"
499-A: "Did WYOMING FIBER PHONE INC bill customers for voice or data..."
BDC: "Does WYOMING FIBER PHONE INC provide broadband internet access?"

Also applies entity name to response messages.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 20:46:25 -05:00
justin
3d36d20148 Add 499-A qualifying questions and USAC cancellation option
When 499-A shows as past due, asks:
- "Yes — I need to file" → keeps red, notes each year priced separately
- "No — I had no telecom revenue" → yellow, explains zero-revenue
  filings still required for each year with active filer ID
- "I want to cancel my 499 registration" → yellow, explains catch-up
  filings must be completed first, offers to handle cancellation

All options have "Change answer" undo buttons.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 20:41:29 -05:00
justin
298d7643bc Add voice service question to RMD check + hide DC Agent when 499-A unchecked
- RMD "not found" now asks "Do you provide any voice services?" with
  Yes/No buttons. Clicking No turns it green (data-only, not applicable).
  Includes "Change answer" undo button.
- DC Agent checkbox hides and unchecks when Form 499-A is unchecked,
  reappears when 499-A is re-checked.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 20:39:18 -05:00
justin
6ec28f6a79 Enable Plaid balance verification for ACH payments
Adds financial_connections with balances permission and prefetch
to Stripe Checkout sessions when payment_method is ACH. This uses
Plaid to verify the customer's bank account balance before accepting
payment, reducing ACH return risk.

- permissions: ["payment_method", "balances"]
- prefetch: ["balances"]
- verification_method: "instant"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 20:31:06 -05:00
justin
75ea2c5c6f Fix 3 bugs: BDC undo, JSON parse safety, price formatting
1. BDC Yes/No buttons now have "Change answer" undo — clicking
   Yes or No is reversible without re-running the check
2. intake_data JSON.parse wrapped in try/catch with error logging
   instead of silently returning empty object
3. All CTA price displays use .toFixed(2) for consistent formatting

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 15:13:18 -05:00
justin
a7d7fee154 Fix 6 bugs found in compliance and checkout flows
1. CRITICAL: Add compliance_batch to stripe session tableMap —
   session IDs weren't being stored for batch orders
2. CRITICAL: Fix batch orders using order_number instead of batch_id
   when storing stripe_session_id
3. MAJOR: Tax deductibility note only shows for compliance orders,
   not CRTC/formation/bundles
4. MAJOR: Identity verification fallback changed from localhost:4321
   to performancewest.net with warning log
5. MEDIUM: Fix discount rounding — last service absorbs remainder
   to prevent cent loss across batch orders
6. LOW: Validate at least one paid service in batch orders
7. Standardize support email to info@performancewest.net everywhere

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 09:56:12 -05:00
justin
28d82912f7 Add compliance intake email after payment
Sends next-steps email with services list, USAC delegation
instructions for 499-A, and multi-year catch-up note.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 09:26:26 -05:00
justin
3acdc68994 Update prior-year catch-up messaging
- Explains that each missed year is filed and priced separately
- Tells user we'll contact them for USAC E-File delegation after order
- "Not sure what you need?" leads to the free assessment form

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 08:22:23 -05:00
justin
ea147386b6 Keep search results visible after clicking a result
User can click a different result if they picked the wrong one.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 08:17:58 -05:00
justin
4096c3739e Improve business name search results UI
Results now show as proper clickable cards with:
- Entity name (bold), DBA (if different from legal name)
- FRN (monospace) and Filer ID on the right
- Clear "click to check compliance" hint
- Bordered list with dividers and hover state
- Hides results after selection

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 08:15:32 -05:00
justin
04d65eef85 Fix remaining TypeScript syntax in inline script
Arrow function type annotations (c: any) also crash in browsers.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 08:06:59 -05:00
justin
6c0b602857 Fix JS crash — remove TypeScript syntax from inline script
The quote form code had TypeScript casts (as HTMLInputElement, as
HTMLButtonElement) in a plain <script> tag. Browsers can't parse
TypeScript — this killed the entire page script silently.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 08:04:05 -05:00
justin
aa8ad6d106 Use --no-cache in deploy to prevent stale Docker builds
Docker layer caching was serving old site content after git pull
because file timestamps didn't change enough to bust the cache.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 07:57:14 -05:00
justin
a3028a3b51 Add quote request form to prior-year catch-up section
"Contact us" now opens an inline form that submits a ticket
to ERPNext via POST /api/v1/tickets with category "quote".
Pre-fills entity name, FRN, and overdue items from the check.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 07:50:17 -05:00
justin
7b9c9a48c0 Fix DBA display — other_dba_names is a string, not an array
Spreading a string gives individual characters ("C,a,r,i,e,r...").
Filter as string values instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 07:46:52 -05:00
justin
5016f2e2f3 Fix Get Started button color — use inline style instead of Tailwind
Tailwind purges bg-orange-500 since it's not in the safelist.
Use inline style to guarantee the orange button renders.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 07:43:23 -05:00
justin
0cb9db66ad Add git-based deployment, CLAUDE.md, and .gitignore
- Replace rsync deploy with git pull workflow
- Add CLAUDE.md with deployment rules to prevent file clobbering
- Add .gitignore for node_modules, dist, .env, etc.
- Deploy script now supports: ./deploy.sh prod | ./deploy.sh dev
- Enforces committed changes before deploy

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 06:54:54 -05:00
justin
f8cd37ac8c Initial commit — Performance West telecom compliance platform
Includes: API (Express/TypeScript), Astro site, Python workers,
document generators, FCC compliance tools, Canada CRTC formation,
Ansible infrastructure, and deployment scripts.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-27 06:54:22 -05:00