CompanyHunter is a full-stack business lead generation platform that helps users discover potential business opportunities using Google's Places API. The application's innovative demo mode allows instant access with 20 free searches and built-in rate limiting, eliminating barriers to entry for users who want to explore the platform before committing. Users can search for businesses by type and location, with support for both single-city searches and comprehensive state-wide searches across 500+ cities per state. The platform includes AI-powered search term generation using OpenAI's API, which intelligently suggests relevant business types based on job roles, making it easier for users to discover companies that match their career interests or business needs.
The application features sophisticated cost optimization through intelligent 48-hour result caching that prevents duplicate API calls and dramatically reduces expenses. Search results are fingerprinted using SHA-256 hashing, allowing identical searches by different users to share cached results instantly. The platform includes comprehensive business management capabilities, allowing users to save businesses to custom lists, mark leads as "bad leads" for filtering, add custom notes and career page links, and export results to CSV format. Advanced duplicate detection uses normalized business names and websites to prevent redundant entries across search sessions. Registered users can manage their own API keys (Google Places, OpenAI, and MongoDB Atlas), providing complete control over costs and data privacy, while demo mode users benefit from shared API keys with automatic 90-day data cleanup.
Built with React 18 and TypeScript on the frontend using Vite for optimal build performance, the application leverages TanStack React Query for efficient data fetching and state management. The backend is powered by Express.js with ES modules, implementing JWT authentication with bcrypt password hashing and Zod schemas for type-safe API validation. MongoDB Atlas serves as the persistent data layer with separate collections for users, saved businesses, API keys (encrypted with AES-256-GCM), and cached searches with automatic TTL expiration. The frontend uses Radix UI components with Tailwind CSS for a modern, responsive design, while the demo mode implements sophisticated rate limiting with 3-second cooldowns, visual countdown timers, and quota tracking. The architecture supports both guest users with temporary data storage and authenticated users with persistent business lists, demonstrating a scalable multi-tenant design pattern that balances accessibility with cost control.