Setup

Every variable the console runs on, what each one does, and where the platform lives.

Everything in the first section is a real variable — change it and the console behaves differently on the next screen you open. It is stored in this browser alongside your leads, so it follows the machine, not the account. Passwords are not here: they sit in environment variables on the server, further down the page.

Who you are

Used in the console header and in anything it sends. Changing your email here does not change the mailbox it sends from — that is the SMTP_USER environment variable further down.

Scraper defaults

What the Scrape screen starts with every time you open it. You can still change any of it for a single run without touching this.

Niches selected by default

What the Scrape screen has already ticked when you open it. 4 selected.

Home services
Auto
Health & appointments
Professional
Food & hospitality
Sources searched by default

OpenStreetMap is the map itself. MerchantCircle is a business directory. Yelp, YellowPages, Manta and Hotfrog refuse server-side requests, which is why they are not options.

Pipeline

How leads behave once they are in the Leads tab.

Reply tracking

How the Inbox reads your mailbox and ties answers back to leads.

Everything this platform runs on

Every account and dashboard behind the console, the website and the mailbox — so you never have to hunt for a URL again. Edit any of them; they are yours.

Shared database

Configured, but signed out — so this console is working on its own copy. Sign in with the Supabase account you created under Authentication and the pipeline becomes shared. The rules grant an anonymous caller nothing, which is why the public API key is safe to ship.

AI email writer

Status: checking…

Open a lead that has an email address and press Write. It reads that business’s own website, takes everything on the lead, and drafts from what we actually sell. Nothing is sent — you copy it and send it from your own mailbox, which is what keeps a first contact reading like a person rather than a campaign.

GEMINI_API_KEY=...             # server-side only, never in the browser
GEMINI_MODEL=gemini-3.5-flash      # optional — this is already the default
  • · Four models are tried in order. If the first is retired or overloaded the next takes over, and a rolling -latest alias sits in the chain so a retirement cannot strand it.
  • · The draft tells you when a fallback wrote it, since the writing can read differently.
  • · The free tier is rate-limited per minute. A rejection is usually that, not the key.
  • · The website read happens on the server: a browser cannot fetch another site.
  • · The draft is checked for leftover [placeholders] before you see it.

Bank details for invoices

Sign in to the shared database to see them. They are stored there, behind the allowlist — not in this app’s code, because anything in the code is in the JavaScript every visitor downloads.

These do not go on the website. A routing number and account number together are enough for someone to attempt an ACH debit against the account, and a publicly listed one invites the invoice scam where your customer is sent altered details and pays a stranger. Send them to a named customer on an invoice instead. If you want a payment route on the public site, use a processor’s hosted checkout — Stripe or Wise — where the account number stays private and every payment is traceable to an invoice.

Mailbox — server side

Sending (SMTP)
checking…
Reply tracking (IMAP)
checking…

These five are set on the server, not here — a browser cannot hold a password safely. Put them in .env.local for local work and in Vercel → Settings → Environment Variables for the live console. I never see the value.

SMTP_HOST=smtpout.secureserver.net
SMTP_PORT=587
SMTP_USER=gieeksoftware@gieek.store
SMTP_PASS=your-mailbox-password
SMTP_FROM="Gieek Software Solutions <gieeksoftware@gieek.store>"
  • · Reply tracking reuses SMTP_USER and SMTP_PASS and works out the matching IMAP host on its own.
  • · It is the Titan mailbox password, not a Google App Password.
  • · Titan allows roughly 300 recipients a day.
  • · Reply tracking only reads — nothing is deleted, moved or marked as read.
  • · Restart the dev server after editing .env.local.

“Authentication failed” with a password you know is right? Check the value in Vercel actually got updated, then confirm IMAP/SMTP access is switched on for the mailbox in its own control panel. Some hosts ship it disabled and the only symptom is this error.

Website enquiries — server side

Status: connected — sign in on the Inbox tab

The public site writes every enquiry into the shared database and this console reads it. Both apps use the same two public values. Free, no daily limit, about five minutes:

  1. 01Create a free project at supabase.com (no card).
  2. 02SQL Editor -> run supabase-schema.sql from the repo.
  3. 03Authentication -> Add user -> that is your login.
  4. 04Add yourself to the members table with the SQL in the repo README.
  5. 05Project Settings -> API: copy the URL and the anon public key.
  6. 06Add NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_ANON_KEY to both Vercel projects, then redeploy.
NEXT_PUBLIC_SUPABASE_URL=https://xxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...

Both values are public by design; Row Level Security on the database is what protects the data. A website visitor may create an enquiry and nothing else, and everything the console shares needs a signed-in account on the members allowlist. The full schema and policies are in supabase-schema.sql.

Your data

0 leads, 0 saved scrape runs and every setting on this page are stored in this browser only. No database, no monthly bill, nothing to leak — and clearing site data wipes all of it. Export before you switch machines or browsers.

Start over

Deletes the leads, the scrape history, and the record of every business ever scraped — so the next run treats the whole map as new ground. This browser only. The shared database is not connected, so any other machine keeps its own copy until you connect it. Website enquiries and your settings are left alone. There is no undo — export first if you might want any of it back.