Console is not connected
Configure the browser-safe Supabase URL and publishable key on Vercel.
Scrape health
Which firms scraped well, which need a different approach.
Every bar is a filter. Click a firm grade or handling to open those firms; click a coverage gap to open those people; click a record issue to see the worst firms and their rows.
GOTO Review Site ↗
Open the live client app ↗
Set CLIENT_APP_URL on Vercel to show a link to the live client app here.
Publishing tracker
Drill-down
Firms
| Firm | Grade | Handling | Rows | Flagged rows | Share | Website |
|---|
No firms carry this issue.
Release
Review, clean up, and publish.
Follow each firm’s next step from its first review through publication. Decisions are recorded with who made them and why. Reviewed gaps remain visible after publishing.
Start with the next step. Firms with fewer blockers come first, then approvals closest to publication, time waiting, and attorney count. Published and excluded firms follow the active work.
Blockers must be resolved. Gaps may remain when reviewed and accepted, and stay visible after publishing.
Advanced filters
Combine filters to find firms across the full queue. All conditions must match. Blank limits mean no limit; unknown counts do not match numeric ranges.
| Firm / Next step | Stage | Days | Blockers | Gaps | Publish | Last modified | Last modified by | Selected by | Last decision | Note | Actions |
|---|
Access
Who can use this console, and what they may do.
Owner grants and revokes roles. Admin runs every console operation but cannot change roles. User is read-only plus tasks. Roles are enforced on the server — hiding a button here does not stop a direct API call.
An invite lets the person set their own password; nothing secret passes through this console. Use an initial password only for accounts that cannot receive email — they are prompted to change it on first sign-in.
| Name | Role | Status | Added |
|---|
Operator work
What to do next, kept beside the console.
Shared with every signed-in reviewer. Drag cards between columns. Pop the board into its own window so it stays visible while you work Firms, Queue, or Playbook.
| Task | Column | Priority | Firm | Due | Created by | Last modified by | Last modified |
|---|
Done 0
Processing pipeline
Every firm we know about, what state it is in, and what to run next.
Firm-level fields come from the ZoomInfo export (employees, revenue, founded, HQ, LinkedIn). Processing state comes from the scraper's own queue. Select firms and queue, reprocess, pause, or prioritize them; the operator PC applies requests within a minute.
Counts are for the whole catalog. Click a bar to filter; click again to clear.
| State | Firm | Slug | Website | Employees | Employee range | Revenue range | Revenue ($k) | Founded | HQ city | HQ state | Country | Locations | Phone | Industry | Ownership | Attorney est. | Scraped | Grade | Handling | Decision | Discovered | Done | Pending | Failed | Job status | Last error | Worker | Last touched | Priority | Playbook | Strategy | Difficult note | Operator note | Recommended URL | Source | Open requests | Last modified | Last modified by | Publish |
|---|
No firms match these filters.
Operator log
Recent requests
| When | Firm | Action | Priority | Note | By | Applied | Result |
|---|
Website review
Small-firm websites
Firms with 1-49 ZoomInfo employees, screenshotted and scored by python -m attorney_scraper site-review on the operator PC. Look at the picture, then decide: Confirm ugly, Not ugly, or Corrected once the site has been fixed. The job never overwrites your decision.
Scraper playbook
Rules every scrape follows, guidance the operator reads.
Rules are applied on the operator PC to every firm and row, whichever worker fetched the page. Save a draft as often as you like; Apply makes it a numbered version, snapshots every firm's grade, and lets you re-review bad firms under the new version and measure what changed.
Guidance (read by the AI operator)
Plain-English direction
Re-review
Apply the new guidance to the bad firms
Queues a reprocess for the cohort: new roster pages plus retries of failed ones. Bios already fetched are not re-fetched. Start small, check the before/after on the version, then widen.
History
Versions and their effect
| Version | Applied | By | What changed |
|---|
Attorney records
Search, review, and edit every record.
Full-text search runs in the database. Click a name to edit; check rows to remove non-attorneys.
| Name | Attorney ID | Firm | Title | Phone | Office | Practice areas | Bar admissions | Law school | JD year | Years since JD | Education | Previous employer | Leadership | Undergraduate | Clerkship | Languages | Industries | Court admissions | Awards | Bio summary | Join year | Photo | Announcements | Bio link | Bio PDF | Profile URL | Firm website | Source URL | Source type | Collection date | Captured at | Updated | Edited at | Edited by | Removed at | Removed by | Removed reason | Last modified | Last modified by | Publish | Tags |
|---|
No records match these filters.
Firm-first workflow
Review a firm. Fix its playbook. Rerun only that firm.
Firm summaries load first. People, jobs, and errors load only after you open one firm.
Click a bar to filter the same way the dropdowns do. Click again to clear that slice.
Work queue
Firms
| Status | Firm | Tags | Scrape grade | Handling | Decision | Quality review | Slug | Website | ZoomInfo employees | Verified attorneys | Rows kept | Removed | Emails | Bios | vs ZoomInfo | Roster links found | Rows ever scraped | Graded | Updated | Reviewed by | Last modified | Last modified by | Publish |
|---|
No firms match these filters.
Review & publish
Publish this firm after review
Checking publication readiness…
Issue and repair report
Counts are issue occurrences; one person may appear in multiple rows. Net resolved is the reduction since publication, not a count of individual edits. Accepted issues remain open until corrected.
Recheck refreshes stored data checks across firms. It does not crawl websites.
| Issue | At publication | Open now | Net resolved | Repair status | Action |
|---|
Fix this firm
Tell the scraper where attorneys and staff are listed
- Find the roster page. Open the firm website and locate the pages that list attorneys and staff. Quick guesses, based on where other firms keep theirs:
- Paste it here (one URL per line for office or alphabet rosters, individual bios, or a replacement firm website).
- Save and rerun. The scraper starts from that page instead of guessing. Results and the firm grade update as records are saved.
Scrape review
Is this scrape good or poor?
Flagged rows
| Name | Title | Practice areas | Profile URL |
|---|
No rows match.
Firm people
People
| Select | ID | Name | Title | Office | Practice areas | School | JD year | City | State | Profile | Updated | Last modified | Last modified by | Publish |
|---|
No people found for this firm.
Click any person to open the record editor.
Runs
Recent jobs
Exceptions
Errors
Audit
Review notes
Audit
Change history
Data quality
Record defects
Global reconciliation
Every open error and record defect, in one queue.
Paste the correct roster page on any error to fix the firm and queue a targeted re-scrape.
Exceptions
Open errors
Data quality
Open record defects
Reprocessing
Every request you sent to the scraper, and what came of it.
Queue / reprocess / pause / priority requests from firm pages and the Pipeline tab land here. The operator PC applies them within a bridge pass. A reprocess finds new roster pages and retries failed ones; it does not refetch bios that are already done.
| Requested | Firm | Action | By | Applied | Bridge result | Firm job now | Outcome |
|---|
No requests match this filter.
Deliverables
Export the directory as CSV.
Exports use the same filters as the People tab and always skip removed records unless you choose otherwise.