SaaS / Lead Discovery / Full-Stack Product2026Testing

SiteGapLeads.com

A responsive lead discovery platform for freelance web designers and small agencies to find local businesses without websites, rank opportunities, unlock contact details, and manage outreach.

SiteGapLeads is a responsive SaaS platform I designed and built for freelance web designers and small agencies. It turns local prospecting from a scattered research task into one focused workflow.

Users can find active businesses without independent websites, compare opportunities with a transparent score, unlock the contact details they need, and manage outreach in a lightweight pipeline.

01

Overview and Goal

The product began with one practical question: how can a web designer move from “Where can I find potential clients?” to “These are the businesses I should contact next” without switching between maps, directories, spreadsheets, and a CRM?

I built the MVP around that transition. Discovery, qualification, contact unlocking, saved leads, and outreach tracking all follow the same sequence, with the interface showing only the information and controls needed at each step.

02

The Manual Problem

Finding website clients is usually a repetitive research process. The work is slow, lead quality is unclear, and the workflow breaks as soon as discovery ends.

A business without a website is not automatically a strong opportunity. The product also needed to show whether that business looked active, trusted, local, and reachable before asking the user to spend time or a credit.

  • Search maps and business directories manually
  • Open individual listings to check whether a website exists
  • Compare ratings, reviews, activity, and contact information by hand
  • Copy possible leads into a spreadsheet
  • Track outreach separately from the original research
  • Spend equal time on weak and high-potential prospects
03

The End-to-End Product Flow

  1. 01

    Set the market

    Enter a city, ZIP code, or address, choose a radius, then select a preset and business categories.

  2. 02

    Review the area

    See the center point and radius on a map so the geographic scope is clear before the search runs.

  3. 03

    Find eligible businesses

    Remove businesses with independent websites, closed listings, chains, invalid coordinates, and likely duplicates.

  4. 04

    Compare opportunities

    Review synchronized map and list results, then sort or filter by score, rating, activity, contactability, and distance.

  5. 05

    Preview before unlocking

    Use business context, reputation signals, and the Opportunity Score to judge relevance before spending a credit.

  6. 06

    Unlock and save

    Reveal exact contact details for one credit, with single and bulk actions that never charge twice for the same lead.

  7. 07

    Manage outreach

    Add notes, export unlocked data, and move prospects from New through Contacted, Proposal Sent, Won, or Lost.

04

Website Opportunity Score

Every eligible result already lacks an independent website. The score measures something more useful: how valuable, active, and contactable the business appears.

Every recommendation keeps its point breakdown, so the ranking remains understandable instead of becoming an unexplained AI score.

CategoryMaxExample signals
Contactability25Valid phone number and additional contact methods
Business reputation25Strong rating and healthy review count
Business activity20Recent reviews, listed hours, and recent listing activity
Social presence15Facebook, Instagram, LinkedIn, or TikTok presence
Local business fit15Independent business and complete local listing
80–100

Hot Lead

60–79

Strong Lead

40–59

Possible Lead

Below 40

Low Priority

05

Core Product Experience

Map and list workspace

Keeps business density, proximity, ranking, and search coverage visible in one discovery view.

Useful locked previews

Shows enough context to make a decision while exact contact details remain protected on the server.

Transparent scoring

Stores and displays every signal and point behind the recommendation instead of presenting a black-box score.

Single and bulk unlocks

Explains new unlocks, credits used, current balance, and remaining balance before the action is confirmed.

Saved leads and details

Keeps contact information, reviews, score reasons, notes, status, and activity together.

Lightweight pipeline

Connects prospecting to outreach without turning the MVP into a complex enterprise CRM.

Search history and export

Lets users reopen or rerun searches and move unlocked data into external tools when needed.

Contextual plan limits

Explains radius, category, export, result, and credit restrictions at the point where they matter.

06

UX and Responsive Decisions

Progressive disclosure

Required search decisions appear first. Advanced filters and deeper lead information arrive only when they become useful.

Predictable credits

Searching is free. The interface states exactly when a credit will be used and whether a retry or failed search affects the balance.

Responsive by workflow

The desktop workspace becomes focused Search, Leads, and Map views on mobile instead of a compressed three-panel layout.

Accessible alternatives

Labeled controls, semantic actions, status text, keyboard-friendly primitives, and non-drag status changes support more users.

07

Technical Architecture

I built SiteGapLeads with Next.js 16, React 19, TypeScript, Tailwind CSS 4, Supabase, Mapbox, Stripe, and a provider-based business discovery layer.

The application can also run end to end with deterministic demo data. That makes the complete workflow testable without live provider credentials or usage costs.

  1. 01Validate the plan and daily limits
  2. 02Validate presets and selected categories
  3. 03Geocode the location
  4. 04Reuse recent matching results when available
  5. 05Run the business-data provider when needed
  6. 06Normalize, filter, and deduplicate businesses
  7. 07Calculate transparent Opportunity Scores
  8. 08Apply plan result limits
  9. 09Persist results and return safe locked previews
  • Plan limits are enforced on the server, not trusted to the interface
  • Locked contact data is removed before a response reaches the browser
  • Supabase Row Level Security scopes users to their own records
  • Credits use an append-only ledger instead of a mutable balance field
  • Idempotent unlocks prevent duplicate charges for the same lead
  • Stripe signatures are verified before subscription changes are accepted
  • Matching searches can reuse cached results for up to 21 days
  • Review enrichment waits until unlock and cannot reverse a successful unlock
08

Business Model

Search is free; users spend credits only when they choose to reveal actionable contact data. Paid plans add more unlocks, larger search areas, more categories, higher result limits, export, history, and advanced filters.

PlanPriceUnlocksRadiusCategoriesResults
Free$010 total5 mi115
Starter$29/mo500/mo15 mi275
Pro$59/mo2,000/mo30 mi3250
Agency$99/mo5,000/mo50 mi10750
09

Validation and Current Status

26Scored leads in demo search
1Credit per new lead unlock
MVPFeature-complete demo mode
  • A demo search returned 26 scored leads across the map and ranked list
  • Unlocking one new lead revealed contact details and deducted exactly one credit
  • Saving the lead added it to Saved Leads and the Pipeline
  • Previously unlocked leads remained free on later searches
  • Plan limits were enforced on the server
  • Free-plan preview limits and locked radius options behaved as intended
  • The production build and TypeScript checks pass

Before live launch

  • Connect and migrate a production Supabase project
  • Complete Stripe test-mode verification end to end
  • Run an approved paid live-provider test
  • Add production error monitoring
  • Test the product with 5–8 freelance web designers

The product has not launched to customers yet, so this case study does not claim conversion, retention, revenue, or customer time-saved metrics.

10

My Role and Key Challenges

I owned the product strategy, UX design, visual system, and full-stack implementation. I defined the target user and MVP scope, mapped the end-to-end lead workflow, created the scoring model, and built the responsive product architecture.

01

Qualifying raw businesses

Finding businesses without websites was only the first step. I designed an explainable score to separate active, reachable opportunities from weak results.

02

Protecting locked data

Preview-safe information is separated from full lead records on the server, so users can judge quality without exposing exact contact data.

03

Preventing duplicate charges

A unique user-and-business relationship, idempotent unlock flow, and append-only ledger keep every credit action auditable.

04

Controlling provider cost

Caching, plan limits, daily provider limits, chain filtering, deduplication, and on-demand enrichment reduce unnecessary paid work.

05

Making maps work on mobile

I redesigned the workspace as three focused mobile states and replaced wide tables and Kanban columns with cards and status tabs.

11

Reflection and Next Steps

The most important product lesson was that discovery alone is not enough. Users need help deciding what is worth their time and a simple way to act on that decision. Transparent scoring, useful locked previews, and a focused pipeline turn listings into a practical prospecting workflow.

The next step is usability testing with 5–8 freelance web designers. I want to validate whether users understand the score, know what an unlock reveals, can complete a first search without instruction, and can move a useful lead into outreach.

Feature-Complete MVP · Demo Mode

From scattered listings to a focused next action.

SiteGapLeads brings discovery, qualification, contact unlocking, and outreach management into one responsive product for web designers.

Next project
Field & Flow Group
← All work