Open-source, local-first lead prospecting for freelancers and small agencies.
FreelancEye helps you find local businesses, run AI online-presence audits, save prospects, manage follow-ups, and turn weak websites into outreach opportunities. It is built for people selling websites, SEO, design, marketing, automation, or other digital services to local businesses.
Try the hosted demo · Self-host on GitHub · Support the builder
The hosted demo is intentionally capped to control API costs. The MIT repo is the unlimited path: clone it, add your own keys, and run it however you want.
Finding clients manually is messy. FreelancEye gives freelancers a lightweight workflow:
- Search real local businesses by city or area.
- Spot businesses with weak or missing online presence.
- Run an AI audit to get practical improvement angles.
- Save prospects into a small CRM.
- Track call status, notes, follow-ups, and estimated value.
No forced account. No heavy sales stack. No hidden payment flow.
- Local business search powered by OpenStreetMap data.
- AI audits through Groq, Gemini, or OpenRouter.
- Saved leads with call status, notes, follow-up dates, and estimated value.
- List and Kanban views for managing prospects.
- CSV import/export for moving lead data around.
- Client-ready report and proposal sharing foundations.
- Local-first IndexedDB storage, with optional Supabase schema included.
- Transparent hosted limits that point users to self-hosting instead of pretending unlimited API usage is free.
Requirements: Node.js 18+ and npm.
git clone https://github.com/wuzz-dev/MoneyPot.git
cd MoneyPot
npm install
cp .env.example .env.local
npm run devOn Windows PowerShell, use this instead of cp:
copy .env.example .env.localThe dev server runs on http://127.0.0.1:5000.
The app can run without credentials for browsing and local lead management. AI audits need either local browser keys or server-side keys on Vercel.
Copy .env.example to .env.local.
Frontend variables:
VITE_SUPABASE_URL=
VITE_SUPABASE_ANON_KEY=
VITE_GITHUB_REPO_URL=https://github.com/wuzz-dev/MoneyPot
VITE_BUILDER_NAME=wuzz-dev
VITE_TIP_URL=https://paypal.me/AldridNabuya
VITE_HOSTED_DEMO=false
VITE_AUDIT_PROXY_URL=
VITE_PLACES_PROXY_URL=/api/places
VITE_GROQ_API_KEY=
VITE_GEMINI_API_KEY=
VITE_OPENROUTER_API_KEY=
VITE_OPENROUTER_MODEL=openrouter/freeFor personal local testing, direct browser keys are fine:
VITE_OPENROUTER_API_KEY=your_keyFor a public hosted deployment, do not expose AI keys through VITE_. Use the proxy:
VITE_HOSTED_DEMO=true
VITE_AUDIT_PROXY_URL=/api/audit
VITE_PLACES_PROXY_URL=/api/placesThen add at least one server-only AI key in Vercel:
GROQ_API_KEY=
GEMINI_API_KEY=
OPENROUTER_API_KEY=
OPENROUTER_MODEL=openrouter/free
CONTACT_EMAIL=Hosted /api/audit reads the non-VITE_ names. If you only add VITE_OPENROUTER_API_KEY on Vercel, the browser may have a key but the serverless audit endpoint will still fail.
FreelancEye is currently designed for Vercel:
Framework: Vite
Install command: npm install
Build command: npm run build
Output directory: dist
Short checklist:
- Import this repo into Vercel.
- Set the frontend env vars.
- Set at least one server AI key for hosted audits.
- Redeploy after changing env vars.
- Test search, saving leads, audit limits, and self-host links.
See DEPLOYMENT.md for the full production checklist.
FreelancEye currently works accountless and local-first. Supabase migrations are included for profiles, leads, reports, proposals, activities, and usage events if you want cloud-backed records later.
Run migrations in timestamp order from supabase/migrations/.
npm run dev # local development server
npm run build # production build
npm run preview # preview production build
npm run test # Vitest test suite
npm run lint # ESLint- React + Vite
- Tailwind CSS
- IndexedDB via Dexie
- OpenStreetMap / Nominatim / Overpass
- Vercel serverless functions
- Optional Supabase
- Vitest
api/ Vercel serverless functions
public/ PWA icons, manifest, service worker
shared/ Shared server/client audit prompt
src/api/ Browser API clients
src/components/ UI components
src/context/ App state and optional auth context
src/lib/ IndexedDB, hosted limits, sharing, schema helpers
src/pages/ App routes
src/__tests__/ Unit tests
supabase/migrations/ Optional database schema and RLS policies
- Search works best with city or area queries, not country-wide scraping.
- The hosted demo has visible rolling limits for saved leads, AI audits, and AI assist.
- Unlimited usage means self-hosting with your own provider keys and infrastructure.
- Account and payment flows are hidden for now; the project is focused on open-source distribution first.
- Call Assist is still local/browser-oriented, not a hosted realtime voice backend.
Issues, ideas, and pull requests are welcome. If you are testing it as a freelancer, the most useful feedback is where the lead workflow feels slow, unclear, or not close enough to how you actually find clients.
If FreelancEye helps you land a client, tips are welcome: paypal.me/AldridNabuya.
MIT. See LICENSE.