# Prospecting completion — apply

    cp -R prospecting-complete/app/*    ./app/
    cp -R prospecting-complete/config/* ./config/
    cp -R prospecting-complete/tests/*  ./tests/

Overwrites config/tdlr.php with per-feed layouts.

## Apply in this order
1. docs/fetch-command-patch.md   — FetchTdlrCommand takes a layout per feed (fixes massage)
2. docs/portfolio-license-patch.md — MINI LICENSE EXP + Expired License filter
3. docs/query-service-patch.md   — Competition column
4. docs/ui-county-patch.md       — county selector on practitioner tabs

## Then
    php artisan config:clear
    php artisan test --filter=TenantLicense
    php artisan prospects:tdlr --profession=massage    # should now import ~39k, not 3
    node node_modules/vite/bin/vite.js build

## What each fixes
1. MASSAGE — the health-professions feed uses a 7-column Versa layout, not the
   23-column licence listing. Reading the licence number from the wrong column made
   every row collide, so 39,278 records overwrote each other and 3 survived.
2. MINI LICENCE EXP — tenants are matched to their TDLR licence by phone, then name,
   giving licence number and expiry on the Tenants and Retention tables, with expired
   ones flagged. The 212 tenant matches already seen at Creekside prove the join works.
3. COMPETITION — salon-suite licences cluster at one street address, so grouping by
   normalised address reveals which competitor a prospect currently rents from, plus
   how many suites that building holds.
4. COUNTY MODE — practitioner licences carry no address, so those tabs filter by the
   county of the chosen location and hide the distance column.
