Admin sign in

ACCESS IS LIMITED TO THE AUTHORIZED ADMIN EMAIL. OTHER ACCOUNTS CAN SIGN IN BUT CANNOT READ OR WRITE LISTINGS.

Admin console

Submissions awaiting review

Add a listing PUBLISHES IMMEDIATELY

All listings

Domains here are permanently barred from re-entering the directory. The reject_blocked_domain BEFORE INSERT trigger raises on any attempt to insert a domain that matches. Add sparingly — this is the "never again" list, not the "not right now" list.

The two-way referral network from /partner.html. Partners keep 20% on referrals to Miss Pepper; Miss Pepper takes 10% on referrals out. Track partner enrollment, log referrals, and record payments.

Pending applications

Partner ledger

Add partner

Referrals

Payments

Contact-email coverage from the Apify enrichment passes. Rows without contact_email either haven't been enriched yet or failed strict-verified matching. Suppressed rows are excluded from any outbound campaign.

Coverage by category

Coverage by source

Suppressed listings

Composition by category

Top 15 US states

Hourly-rate distribution

Most recent additions (last 20)

Editorial briefings and the monthly state-of-the-index cadence. Briefings themselves live in build-news.mjs; this surface tracks pipeline state and lists what's published. Drafts (from generate-monthly-briefing.mjs) are gitignored and only exist on the operator's local machine.

Cadence snapshot

How to publish next month's briefing

  1. Locally: node generate-monthly-briefing.mjs
  2. Review data/draft-briefing-YYYY-MM.txt — fill in the editorial paragraph
  3. Paste into build-updates.mjs UPDATES array
  4. node build-updates.mjs && node build-pages.mjs --pages-only
  5. Commit + push. Live on the next Pages deploy.

Published briefings

Read-only viewer for the audit and reference reports committed to the repository. Files load from GitHub raw content on click.

AI-agent visits to HTML pages, captured client-side by nav.js. Covers browsing agents that execute JS (ChatGPT search, Perplexity, Claude web, GPTBot/PerplexityBot when interactive). Direct fetches to /llms.txt or /llms/*.txt are static GETs and don't appear here — see docs/agent-layer-notes.md for the Cloudflare path.