<divclass="source-card"><spanclass="status-dot"id="sourceDot"></span><div><strongid="sourceLabel">Checking source</strong><smallid="sourceSub">Connecting to Maps worker</small></div></div>
<p>Personal workspace<br><span>No outreach is sent</span></p>
<div><spanclass="eyebrow">PERSONAL DISCOVERY WORKSPACE</span><h1>Find the businesses worth a closer look.</h1><p>Search Google Maps, remove places already in your catalogue, then review the strongest opportunities in one calm workspace.</p></div>
<divclass="heading-badge"><spanclass="pulse"></span><spanid="backendLabel">Maps worker</span><small>private & local</small></div>
<divclass="notice-icon">!</div><div><strong>Finish the Maps worker setup</strong><pid="setupText">Start the bundled worker with Docker, then reload this page. The standard worker needs no API key.</p></div><ahref="#setup"class="text-link">Setup guide ↓</a>
<articleclass="stat-card"><divclass="stat-label"><spanclass="stat-icon green">✓</span><span>Approved</span></div><strongid="approved">0</strong><small>ready for your next step</small></article>
<divclass="panel-heading"><div><spanclass="eyebrow">01 · NEW SEARCH</span><h2>Start a discovery run</h2><p>Describe the businesses you want. These criteria apply only to this run.</p></div><spanclass="source-tag"><spanclass="status-dot"></span> Google Maps</span></div>
<formid="discoverForm"class="discovery-form">
<divclass="field wide"><labelfor="keywords">What should we find?<span>Keywords</span></label><inputid="keywords"name="keywords"placeholder="e.g. plumbing services"required></div>
<divclass="field"><labelfor="max-results">Places to import</label><selectid="max-results"name="max_results"><optionvalue="10">10 places</option><optionvalue="20">20 places</option><optionvalue="25"selected>25 places</option><optionvalue="50">50 places</option></select></div>
<divclass="options wide"><labelclass="check"><inputtype="checkbox"id="include-email"name="include_email"><spanclass="check-box"></span><span><strong>Look for public website emails</strong><small>Slower; only follows the business website found by Maps.</small></span></label><labelclass="check"><inputtype="checkbox"id="extra-reviews"name="extra_reviews"><spanclass="check-box"></span><span><strong>Collect extra reviews</strong><small>Useful for research, but increases run time.</small></span></label></div>
<divclass="form-footer wide"><buttonclass="primary-btn"id="discoverBtn"type="submit"><span>Run discovery</span><spanclass="btn-arrow">→</span></button><spanid="discoverMessage"class="form-message"role="status">Results are deduplicated before saving.</span></div>
<divid="activeRun"class="active-run empty-run"><divclass="run-orb">◷</div><div><strong>No active run</strong><p>Start a search to see progress here.</p></div></div>
<divclass="panel-heading explorer-heading"><div><spanclass="eyebrow">03 · CATALOGUE</span><h2>Prospect explorer</h2><p>Sort by opportunity score, inspect the evidence, and mark your next action.</p></div><divclass="explorer-actions"><divclass="search-box"><span>⌕</span><inputid="search"placeholder="Search catalogue"aria-label="Search catalogue"></div><selectid="status"aria-label="Filter by review status"><optionvalue="">All statuses</option><optionvalue="pending">Needs review</option><optionvalue="approved">Approved</option><optionvalue="rejected">Rejected</option><optionvalue="contacted">Contacted</option></select><buttonclass="quiet-btn"id="refresh"type="button">Refresh</button></div></div>
<div><spanclass="eyebrow">SETUP</span><h2>One-time worker connection</h2><p>The bundled standard Maps worker runs locally and does not need a Google or scraper API key.</p></div><ol><li>Run <code>docker compose up -d --build</code>.</li><li>Keep <code>GMAPS_API_MODE=standard</code> in <code>.env</code>.</li><li>Start a discovery run. Open port <code>8081</code> only if you want to inspect the worker's native UI.</li></ol>