Prospecta

AI lead generation and CRM as a SaaS you run under your own name: find local businesses, learn why they fit, send polite email sequences from real mailboxes, and turn replies into deals.

Thank you for buying Prospecta. This guide takes you from the download to a live site, step by step. You do not need to write code. If something is unclear, write to us through the item's Support tab on CodeCanyon.

What is in the box

Folders

FolderWhat it is
prospecta_web_nextjs/The app: Next.js 16 (website, workspace, admin, API), Prisma 7 database schema and migrations, the worker, tests.
deploy/docker-compose.yml and .env.example: the whole server in one command.
docs/This guide, as HTML and PDF, with screenshots.
LICENSE.txt, CHANGELOG.mdLicence summary and version history.

Screenshots

The main screens of the website, the workspace and the platform admin, with the sample data loaded.

Website and workspace

Website home page
Website
Workspace dashboard
Dashboard
Lead Finder with results
Lead Finder
Leads table
Leads
Lead page with AI summary
Lead with AI summary
Lead lists
Lists
Deal pipeline
Pipeline
Sequence builder with AI variants
Sequence builder
Inbox with sorted replies
Inbox
Tasks
Tasks
Reports
Reports
Sending mailboxes
Mailboxes
Billing and credits
Billing and credits
Team
Team
Workspace settings
Settings
Dashboard in dark mode
Dark mode

Platform admin

Platform overview
Overview
Workspaces
Workspaces
Plans and credits
Plans and credits
Providers and AI keys
Providers and AI
Setup check
Setup check
Branding
Branding

2. Requirements

Third-party services

Prospecta works on day one without any outside account: each service falls back to a built-in demo provider until you add its key. When you are ready, connect the real services you want. Each of these services is run by another company under its own terms. Each has its own pricing tiers and the buyer is responsible for any costs. Prospecta does not include any paid service or key.

ServiceUsed forWithout a key
OpenAI, Anthropic (Claude) or Google GeminiLead scores and summaries, email drafts, reply drafts and reply sortingA built-in demo writer scores with simple rules and writes from templates
Google Places API (New)Lead Finder searches by business type and locationRealistic demo businesses; CSV import always works
HunterFinding people and work emails for a company domainSample people (never emailed)
ApolloCompany size, industry and LinkedIn (optional)Skipped
StripePlan subscriptions, credit packs and the billing portalDemo payments: plan changes and packs apply at once and are recorded as demo
Any SMTP mailbox (Google Workspace, Microsoft 365, Zoho, your host…)Each workspace sends its sequences from its own mailboxesNothing is sent until a workspace connects a mailbox
Any SMTP service (Postmark, Amazon SES, Mailgun, Brevo…)System email: password resets, invitations, task remindersWritten to the server log
An inbound email service (Postmark, Mailgun, SendGrid, Cloudflare Email Routing…)Forwarding replies into the Inbox automaticallyReplies are logged by hand from the Inbox

Prospecta only uses official APIs and files you import. It does not scrape websites or search results.

3. Quick start (Docker)

This runs everything on your own computer or server: the database, the app and the worker.

  1. Unzip the download and open a terminal in the deploy folder.
  2. Copy the example settings:
    cp .env.example .env
  3. Open .env in a text editor and fill in the first block:
    • POSTGRES_PASSWORD: a long random password. Make one with openssl rand -hex 24.
    • APP_URL: http://localhost:3000 on your computer, or https://app.yourdomain.com on a server.
    • APP_SECRET: 32 or more random characters. Make one with openssl rand -base64 48. Keep it safe and never change it after launch: it encrypts the stored keys and mailbox passwords.
  4. Start it:
    docker compose up -d
    The first start builds the app, which takes a few minutes. Later starts take seconds.
  5. Open APP_URL in your browser. The install wizard opens.
See what is running with docker compose ps and read the logs with docker compose logs -f web worker.

4. Put it online (VPS, HTTPS)

  1. Rent a Linux server (Ubuntu 24.04 with 2–4 GB of RAM is plenty to start) and install Docker: curl -fsSL https://get.docker.com | sh.
  2. Point your domain (for example app.yourdomain.com) at the server's IP address with an A record at your DNS provider.
  3. Upload the prospecta folder (for example with scp -r or SFTP) and open the deploy folder on the server.
  4. In .env set APP_URL="https://app.yourdomain.com" and DOMAIN="app.yourdomain.com".
  5. Start it with automatic HTTPS (Caddy gets and renews the certificate):
    docker compose --profile https up -d
    Ports 80 and 443 must be open in the server's firewall.
Already run Nginx, Traefik or another proxy? Skip the https profile, keep WEB_PORT (default 3000) and forward your domain to it.

5. Other hosting

A server without Docker

  1. Install Node.js 22, pnpm (npm i -g pnpm) and PostgreSQL. Create a database and a user.
  2. In prospecta_web_nextjs: cp .env.example .env and fill in DATABASE_URL, APP_URL and APP_SECRET.
  3. Install, prepare the database and build:
    pnpm install
    pnpm prisma:migrate:deploy
    pnpm prisma:seed
    pnpm build
  4. Run the website with pnpm start (port 3000, change with PORT) and the worker with pnpm worker. Keep both running with a process manager such as pm2 or systemd, and put Nginx or Caddy in front for HTTPS.

Vercel and a managed database

The website runs well on Vercel with a managed PostgreSQL (Neon, Supabase, Railway…). Add the keys from .env.example in the Vercel project settings and set the build command to pnpm prisma:migrate:deploy && pnpm build. Two things to know:

6. Install wizard and sample data

The first visit opens the install wizard. It runs once.

  1. Check the server: the database connection and tables, APP_URL and APP_SECRET.
  2. Create the admin account: your name, email and password. This is the platform admin (you).
  3. Name your product: product name, tagline and main colour. Change them later in Admin → Branding.
  4. Add sample data? A sample workspace, “Northwind Growth”, with about 400 leads, sequences, replies, deals and tasks, plus a list of sample customer workspaces for the admin. You become the owner of the sample workspace. Sample contacts are marked as samples and are never emailed. Remove all of it later in Admin → Sample data with one click.

Your customers then sign up on the website. Each new workspace starts on the Free plan with 100 credits.

7. Every key, explained

All settings live in one .env file (deploy/.env with Docker, prospecta_web_nextjs/.env without). Only the three required keys are needed to start. Most service keys can also be pasted in Admin → Providers and AI instead; a key in .env wins over the admin one. After changing .env, restart: docker compose up -d.

KeyRequiredWhat it does and where to get it
Required
DATABASE_URLYesPostgreSQL connection string. The Docker setup builds it from POSTGRES_* for you.
APP_URLYesThe public address of your site, without a trailing slash, e.g. https://app.yourdomain.com.
APP_SECRETYesA long random string. Signs sessions and encrypts stored API keys and mailbox passwords. Never change it after launch.
AI
AI_PROVIDER-openai, anthropic or gemini. Optional: you can also pick the provider in Admin → Providers and AI.
AI_MODEL-Model name, e.g. gpt-4.1-mini, claude-sonnet-4-5 or gemini-2.5-flash. Empty = the default for the provider.
OPENAI_API_KEY-From platform.openai.com → API keys.
ANTHROPIC_API_KEY-From console.anthropic.com → API keys.
GEMINI_API_KEY-From aistudio.google.com → Get API key.
Lead search
GOOGLE_PLACES_API_KEY-Google Cloud → enable “Places API (New)” → Credentials → API key. Empty = demo search results.
Enrichment
HUNTER_API_KEY-hunter.io → API. Finds people and work emails for a company domain.
APOLLO_API_KEY-apollo.io → Settings → API keys. Adds company size, industry and LinkedIn.
Payments
STRIPE_SECRET_KEY-dashboard.stripe.com → Developers → API keys. Empty = demo payments.
STRIPE_WEBHOOK_SECRET-Stripe → Webhooks → add <APP_URL>/api/stripe/webhook (checkout.session.completed, customer.subscription.deleted) → signing secret.
CURRENCY-Three-letter currency for plans and credit packs. Default usd.
System email
SMTP_HOST-SMTP server for password resets, invites and reminders. Empty = these emails are written to the log.
SMTP_PORT-Usually 587 (STARTTLS) or 465 (SSL).
SMTP_USER-SMTP login.
SMTP_PASS-SMTP password or app password.
SMTP_SECURE-true for port 465, otherwise empty.
SMTP_FROM-Sender, e.g. "Prospecta <no-reply@yourdomain.com>".
Outreach
EMAIL_SENDING-smtp (default) sends sequences through each workspace mailbox; log only writes them to the log; off marks them simulated.
INBOUND_EMAIL_SECRET-Shared secret for the reply webhook <APP_URL>/api/inbound/email (Mailgun, Postmark, SendGrid or Cloudflare Email Routing).
Server
UPLOAD_DIR-Folder for uploaded logos. Docker uses a volume at /app/uploads.
DEMO_MODE-Leave empty. true = public demo (one-click demo sign-in, read-only admin, nightly reset, no email).

Docker only: POSTGRES_DB, POSTGRES_USER and POSTGRES_PASSWORD create the database and build DATABASE_URL for you; WEB_PORT is the port on the host; DOMAIN is used by the HTTPS profile.

8. Setup check

Admin → Setup check lists every requirement and service with its state: Ready, Fallback (works with the built-in demo provider) or Needs setup. Each service has a Test button that makes one small real call with your key (for example a one-word AI answer or one Places search) and shows the answer or the exact error. The same check runs in a terminal:

docker compose run --rm migrate pnpm setup:check

9. Connect the services

AI provider (OpenAI, Anthropic or Gemini)

  1. Create a key: platform.openai.com → API keys, console.anthropic.com → API keys or aistudio.google.com → Get API key.
  2. In Admin → Providers and AI, pick the provider, paste the key, optionally set a model, and press Test connection. Or set AI_PROVIDER and the key in .env.

Defaults: gpt-4.1-mini, claude-sonnet-4-5, gemini-2.5-flash. Every AI action costs your customers credits (see Plans and credits), so you can price your own AI costs into your plans.

Each workspace writes what it sells and to whom in Settings → What you sell. Every AI prompt uses it, so scores and emails fit that business.

Google Places (Lead Finder)

  1. Open Google Cloud Console, create a project and add billing.
  2. Enable Places API (New) under APIs and Services.
  3. Create an API key under Credentials. Restrict it to the Places API.
  4. Paste it in Admin → Providers and AI → Google Places (or GOOGLE_PLACES_API_KEY) and press Test connection.

Default max results sets how many businesses one search returns (up to 60, three pages of 20). Workspaces can always import a CSV file instead: the Lead Finder's CSV tab maps columns such as name, website, phone, city, email and first name, and a sample file is linked on that tab.

Hunter and Apollo (emails and company data)

Hunter (hunter.io → API) finds people and work emails for a company's domain, with a verification status. Apollo (apollo.io → Settings → Integrations → API keys) adds company size, industry and LinkedIn. Both are optional. Without them, enrichment returns sample people that are marked as samples and never emailed.

Sending mailboxes (per workspace)

Each workspace connects its own mailboxes in Mailboxes → Connect mailbox. Sequences send through them, one email at a time, so replies come back to a real inbox.

ProviderSMTP hostPortPassword
Google Workspace / Gmailsmtp.gmail.com587An app password (Google Account → Security → 2-Step Verification → App passwords)
Microsoft 365 / Outlooksmtp.office365.com587The mailbox password with SMTP AUTH enabled for that mailbox in the Microsoft 365 admin
Zoho Mailsmtp.zoho.com465 (SSL on)An app-specific password
Your web hostFrom your host's email settings587 or 465The mailbox password

For each mailbox you set a daily limit, a gap between sends and a sending window (days, hours and time zone). The worker never sends outside them. Start new mailboxes at 20–40 emails a day and raise slowly. Send test email checks the login and delivers a test to yourself. A mailbox whose login fails is marked Failing and its sequences pause until it is fixed.

EMAIL_SENDING controls outreach for the whole install: smtp (real sending), log (written to the worker log, for testing) or off (recorded as simulated).

Replies webhook (Inbox)

Replies reach the Inbox in two ways:

Each reply is matched to the contact by email, sorted by AI (interested, meeting, referral, not now, out of office, unsubscribe, bounced), stops that contact's sequences (except out of office), and updates the lead's status.

System email (SMTP)

Password resets, team invitations and task reminders are sent by the platform, not by workspace mailboxes. Set SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS, SMTP_SECURE and SMTP_FROM with any transactional email service. Until then these emails are written to the log (docker compose logs web worker), so you can still copy a reset link while testing. Test it in Admin → Email delivery.

Stripe (plans and credit packs)

  1. In dashboard.stripe.com → Developers → API keys, copy the secret key (sk_test_… while testing) into STRIPE_SECRET_KEY.
  2. Developers → Webhooks → Add endpoint: https://app.yourdomain.com/api/stripe/webhook with the events checkout.session.completed and customer.subscription.deleted. Copy the signing secret (whsec_…) into STRIPE_WEBHOOK_SECRET.
  3. Restart. Prices come from your plans in Admin → Plans and credits; you can also paste a Stripe Price ID per plan to use your own Stripe products.
  4. Turn on the customer portal in Stripe (Settings → Billing → Customer portal) so workspaces can change cards and cancel.

Without Stripe keys, billing runs in demo mode: plan changes and packs apply at once and are recorded as demo payments.

10. Using Prospecta

Lead Finder

Search by business type and location (Google Places), or import a CSV. Filter by website, phone and minimum rating, select the businesses you want and save them to a list. Businesses already saved are marked. Saving costs credits; searching is free.

Leads

Every company with its AI score, status, lists, contacts, owner and last activity. Switch to Contacts for people. Filter, sort and select many at once to add them to a list, enroll them in a sequence, enrich and score them, create deals or assign an owner. Export downloads a CSV.

Lead page

The AI summary with the score, reasons for and against and a suggested next step; contacts (add, find emails); the activity timeline; emails sent and received; deals; notes; and actions: log a call, write an email (with an AI draft), enroll in a sequence, change status.

Pipeline

Deals in New, Contacted, Meeting, Proposal, Won and Lost. Drag a card to move it. Each deal has a value, an owner, an expected close date and a linked lead.

Sequences

Build steps (emails and call tasks) with delays in days. Write each email yourself or press Write 3 variants to let AI draft them in a chosen tone and length. Insert variables such as {{firstName}}, {{company}}, {{city}}, {{rating}}, {{reviewCount}}, {{aiOpener}} (a personal first line from the lead's data), {{senderName}} and {{unsubscribeUrl}}. Pick the sending mailbox, choose whether to stop when a contact replies and to skip unverified emails, then turn the sequence on and enroll contacts. Test send sends the open step to yourself.

Inbox

Replies sorted by AI, with filters per kind. Open one to see the whole thread, change the label, answer it (with an AI draft based on the lead summary) or create a deal.

Tasks, Reports, Team

Tasks are calls, emails, to-dos and follow-ups with due dates and email reminders. Reports show leads by source, the outreach funnel, sequence performance and team activity for 30 days, 90 days or 12 months, and print to PDF. Owners and admins invite teammates by email; members work leads, sequences and tasks; only owners and admins manage billing, mailboxes and the team.

Prospecta does not use tracking pixels, so it does not count opens. Reports use what is certain: emails sent, replies and meetings.

11. Platform admin

Sign in with the admin account from the install wizard; the admin opens at /admin.

12. Plans and credits

Every workspace has a plan with monthly credits, plus credits bought in packs (which never expire and are used after the monthly ones). Actions cost credits; you set the costs in Admin → Plans and credits.

ActionDefault cost
Save a lead from the Lead Finder1
Import a CSV row0
Find emails for a lead (Hunter / Apollo)2
AI score and summary2
AI email draft (per variant)1
AI reply sorting0
PlanPriceCredits a monthSeatsMailboxes
Free$0100 to start (once)11
Starter$291,00021
Growth$995,00063
Scale$24920,0002010

Credits refill on the 1st of each month. When a workspace runs out, saving, enrichment and AI actions stop with a message that points to Billing and credits; sending already-written sequence emails does not use credits.

13. Background worker

The worker (pnpm worker, the worker service in Docker) runs these jobs. Only one worker does the work at a time, so running two by mistake is safe.

Admin → Setup check shows Not running when the worker has not checked in for two minutes.

14. Customise and rebrand

15. Sending responsibly

You and your customers are responsible for following the email and privacy laws where you and the recipients are (for example CAN-SPAM in the United States, GDPR and PECR in Europe and the UK, CASL in Canada) and the terms of each service. Prospecta helps:

16. Update, back up, move

Update to a new version

  1. Back up the database (below).
  2. Replace the prospecta_web_nextjs and deploy folders with the new ones, keeping your deploy/.env.
  3. Run docker compose up -d --build. Database migrations run automatically on start.

Back up

docker compose exec postgres pg_dump -U prospecta prospecta > backup-$(date +%F).sql

Uploaded logos are in the uploads Docker volume. Keep a copy of .env (with APP_SECRET) somewhere safe: without it, stored keys and mailbox passwords cannot be decrypted.

Restore

cat backup.sql | docker compose exec -T postgres psql -U prospecta prospecta

17. FAQ and troubleshooting

The install wizard says the database is not reachable

With Docker, check docker compose ps: postgres must be healthy and migrate must have exited with code 0 (docker compose logs migrate). Without Docker, check DATABASE_URL.

Sequence emails are not going out

Check, in order: the worker is running (Admin → Setup check); EMAIL_SENDING is smtp; the sequence is on and has a mailbox; the mailbox is not Failing; you are inside its sending window and under its daily limit (Mailboxes → Send queue lists the emails waiting); the contact's email is verified when “skip unverified” is on. The lead page shows the last error for each sequence the contact is in.

Gmail says “Username and Password not accepted”

Use an app password, not the account password. App passwords need 2-Step Verification on the Google account.

Password reset emails do not arrive

Set the system SMTP keys (System email). Until then the reset link is in the log.

Stripe payments do not change the plan

The webhook is missing or its secret is wrong. Check the endpoint URL and events in Stripe, and that STRIPE_WEBHOOK_SECRET matches. Stripe shows each delivery attempt and its answer.

Can I use another AI model?

Yes: any chat model of the selected provider, set in Admin → Providers and AI or AI_MODEL.

I changed APP_URL or the domain

Update APP_URL (and DOMAIN), the Stripe webhook URL and the inbound webhook URL, then restart.

18. Licence

Your rights come from the Envato licence you bought. The Regular Licence covers one end product whose users are not charged. Prospecta is a SaaS: if your customers pay for plans or credits through it, you need the Extended Licence. See LICENSE.txt and codecanyon.net/licenses/standard.

19. Credits

Prospecta is built on these open-source projects, each under its own licence:

All sample businesses, people, emails and phone numbers (555 numbers) are fictional.

20. Changelog

1.0.0 · 16 October 2026

First release: Lead Finder (Google Places, CSV, demo data), leads and contacts, AI scoring and summaries with OpenAI, Anthropic or Gemini, Hunter and Apollo enrichment, lists, deal pipeline, tasks with reminders, email sequences from workspace SMTP mailboxes with limits and windows, one-click unsubscribe, AI-sorted inbox with reply drafts, reports, teams and roles, plans, credits and Stripe billing, platform admin, branding, install wizard, sample data, Docker setup with automatic HTTPS, light and dark mode. Full list in CHANGELOG.md.