Help Desk

Help Desk

The full workflow, every page, and what each button actually does — start to finish.

The big picture

Every lead moves through the same pipeline, whichever door it comes in through (a search, or a CSV import):

  1. 1Lead Generator (search) or Import Leads (CSV)
  2. 2Website Research — finds a verified email, if one is public
  3. 3Gemini Analysis ("Analyze Selected") — industry, needs, lead score
  4. 4Email Review — Ready to generate → Generate → Approve/Edit/Reject
  5. 5Manual Send, or add to a Campaign
  6. 6Sent → tracked in Email Review's history and Analytics

Nothing in this pipeline runs automatically in the background — every Gemini call, every email send, every re-research is triggered by you clicking something. That is deliberate: it keeps AI/API costs predictable and means nothing gets sent to anyone without a human approving it first.

1. Lead Generator (the “/” page)

This is where you discover new companies.

Searching

Company Type is required (e.g. "Security", "Clothing"). Location fields (Country/State/City/Area/Radius) are optional but narrow the search. The big "Describe what you're looking for" box is not a company-name lookup — it's parsed by Gemini into the same category + location filters. Typing your own company's name there won't find "companies like yours"; it only understands industry + place.

After a search, the app automatically researches each result's website for a public email — you'll see a "Researching websites…" progress step. Results then split into two lists:

  • Email found — ready to move on to analysis.
  • No email found — either genuinely has no public email, or the site couldn't be checked (see §3).

Selecting & acting

Checkboxes work across both lists together via the top "Select all visible" in the selection bar. The "No email found" section also has its own Select All so you can quickly grab just that group — useful for the two actions specific to that list:

  • Research Again (Selected) — re-checks the website for leads still marked Not Found/Unable to Verify. Never re-checks a lead that already has a confirmed email.
  • Delete Selected Without Email — permanently removes only the selected leads that have no email. A lead with an email is never deletable this way, even if it's in your selection — this protects any Email Review/Campaign history tied to it.

Analyze Selected runs Gemini on the chosen leads (industry, business model, potential needs, lead score) — this costs an API call per lead, so it's manual and cached (re-analyzing is a separate, explicit action). Export CSV downloads whatever is currently selected.

2. Import Leads (“/import”)

Upload a CSV from any source — your own export, a purchased list, anything. Column headers don't need to match exactly: the app guesses a mapping (e.g. "Business Name" → Company Name, "E-mail Address" → Email) which you can review and correct before importing. Duplicate companies (matched by website or a generated id) are skipped automatically. Imported leads land in the same list as searched leads and go through the exact same research/analysis/email pipeline.

3. Email verification — “not found” vs “can’t check”

This distinction matters a lot, so it's worth understanding directly:

  • Not found — the site loaded successfully and there really is no public email on it.
  • Unable to verify — the site couldn't be reached at all (blocked, timed out, needs JavaScript, or otherwise inaccessible from wherever this app is running). This is not the same as "no email" — there may well be one, we just couldn't check.

For a lead stuck on either status, you have two options:

  • Research Again — worth trying if the block might be temporary.
  • Manual entry (on the Email Review page, under "Needs email research") — if you can see the email yourself (e.g. by opening the site in your own browser, possibly via a VPN if it's region-blocked), type it in directly. It's saved and clearly tagged as manually entered.

This app never tries to bypass a site's access controls (no VPN/proxy rotation, no CAPTCHA solving) to fetch a page — if a site blocks it, that's respected, and reported honestly rather than guessed around.

4. Company Services (“/services”)

Define what your company actually offers — name, description, target industries, problems it solves, key benefits. This is the only context Gemini uses to decide which service to pitch in a generated email, and it will only ever pick from what you've listed here — it can't invent a service you don't offer. Set this up before generating any emails.

5. Email Review (“/emails”)

Ready to generate

Analyzed leads with a verified email, no draft yet. Select some (or Select All) and click Generate Emails — each one gets a personalized subject/body from Gemini, grounded only in that lead's verified data and your Company Services list.

Needs email research

Analyzed leads still missing a verified email — Research Again or manual entry lives here too (see §3).

The email list

Each draft starts as a compact row (company, email, status). Click a row to expand it and see the full subject/body, with:

  • Edit — change the subject/body by hand. Saving resets status to Unapproved — an edited email always needs re-approval before it can send.
  • Approve / Reject — only approved emails can ever be sent.
  • Regenerate — throw away the current draft and have Gemini write a new one.
  • Send — appears once approved. Sends that one email immediately.
  • Send Again — appears once it's already been sent. Always asks for confirmation first, and never overwrites the previous send record — every attempt (including this one) is kept in that email's history (first sent, last sent, times sent, status).

Filters (status, campaign, has-email, company, date ranges, lead status) combine together. Select All in the list only ever selects what the current filters are showing — never anything hidden by them. Approve Selected / Reject Selected act on the whole selection at once, behind a confirmation showing the count.

6. Campaigns (“/campaigns”)

A campaign is a named group of approved leads you send to together, with its own optional limits (max emails, daily cap, delay between sends, sending-hour window, sender identity) — anything left blank falls back to the account-wide default, and the campaign page always shows you the actual resolved number, not just "default".

Status — what Draft / Running / Paused / Completed actually mean

  • Draft — just created, nothing has been sent. Click Start to move it to Running.
  • Running — sending is allowed. This does not mean emails are going out on their own — you still have to click Run Batch each time you want it to send its next chunk. Nothing here runs on a background schedule.
  • Paused — sending is blocked until you click Resume. Use this to temporarily stop a campaign without losing its progress.
  • Completed — every approved lead in the campaign has been sent to at least once; it flips to this automatically after a batch finishes them all. You can still add more leads afterward (see below) or click Reopen to send more.

Sending to a campaign

  • Run Batch — sends to members who haven't been sent to yet (must be approved). Click it again for the next chunk if there are more than one batch's worth.
  • Resend All — appears once at least one member has already been sent to. This is the answer to "I already sent this campaign, how do I send it again to everyone?" — it resends the current approved draft to every member who's already received it before (asks for confirmation first). It does not touch members who were never sent to yet — those still need Run Batch.
  • Add Leads — bring more approved leads into an existing campaign at any time, including a completed one.

If you see a message about the daily sending limit, a live countdown shows exactly when it resets (local midnight) — Run Batch and Resend All both re-enable automatically once it does.

7. Analytics (“/analytics”)

Pipeline-wide totals (leads, emails generated/approved/sent, delivered, bounced, replied, interested, converted) plus a per-campaign breakdown. "Replied"/"Interested"/"Converted" are manually-set lead statuses — there's no automatic reply detection (email providers don't expose that), so update a lead's status yourself once you hear back from them.

8. Safety guardrails (please read before going live)

  • Test mode — while EMAIL_TEST_OVERRIDE_RECIPIENT is set in the environment, every outgoing email (manual send, campaign, resend — no exceptions) is redirected to that one address instead of the real recipient, with the subject marked to show who it would really have gone to. A banner on the Email Review page confirms when this is active. This must be deliberately removed before any real outreach.
  • Gemini never invents an email address, phone number, or fact — every generated email is grounded only in verified data and your Company Services list.
  • A lead can only enter the email-generation step once it has a verified (or manually confirmed) email — never a guessed one.
  • Deleting leads is restricted to selected, no-email leads only — nothing with Email Review or Campaign history tied to it can be bulk-deleted.

9. Common questions

I searched and researched, but the "Email found" list didn't update.

This is fixed — the page now re-fetches the true state from the database right after research finishes, instead of relying only on the immediate response. If it still looks stale, a manual refresh always shows the current state.

Why didn't the natural-language search find my own company?

It's not a name search — see §1. It only understands industry + location, the same as the structured filters.

I already sent a campaign — how do I send it again?

Open that campaign's detail page and click Resend All — see §6.

A lead's email shows 'Unable to verify' — is there really no email?

Not necessarily — it means the website couldn't be reached, not that it's confirmed empty. See §3 for how to resolve it (Research Again or manual entry).

Can I delete a lead that has an email?

Not through the bulk delete action — only no-email leads are deletable, specifically to protect any Email Review/Campaign history.