CompanyLens is a simple Laravel 11 app for public-source company and contact discovery.
The app accepts a company name and mailing address, then searches free public sources to return up to five likely company or organization matches. Each result includes evidence links, source status, confidence, likely domains, contact information, and possible decision-maker contacts found from public website pages.
The mailing address is used to disambiguate SMBs with similar names and to improve local-source matching. For example, ABC Plumbing may exist in many cities, but ABC Plumbing, 123 Main St, Austin, TX helps narrow Google Maps, Yelp, BBB, Yellow Pages, state registry, and website-address evidence toward the correct business.
- Searches public company and organization sources:
- SEC EDGAR company data
- Wikidata
- GitHub public organizations
- DNS and RDAP domain records
- Adds reproducible public lookup links for:
- Google, Google Maps, Bing, DuckDuckGo
- SEC Form D
- BBB, Yelp, Yellow Pages
- Crunchbase preview
- WHOIS, certificate transparency, Hunter public search
- public social and package-platform searches
- selected state business registries
- Extracts contact data from likely company websites:
- addresses
- emails
- phone numbers
- contact pages
- Finds possible decision-maker contacts using deterministic role/name patterns:
- owner
- founder
- CEO/CFO
- controller
- accounts payable
- office or billing manager
- Shows a console-style progress box while enrichment runs.
The app does not use paid enrichment providers and does not scrape LinkedIn.
- PHP 8.2+
- Composer
- MySQL for normal local usage
- Node is not required for the current Blade/Tailwind CDN setup
Required PHP extensions include curl, dom, json, mbstring, and database extensions such as pdo_mysql.
Install dependencies:
composer installCreate your environment file:
cp .env.example .env
php artisan key:generateCreate a MySQL database:
CREATE DATABASE company_lens;Update .env if needed:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=company_lens
DB_USERNAME=root
DB_PASSWORD=Run migrations:
php artisan migrateStart the app:
php artisan serveOpen:
http://127.0.0.1:8000
php artisan testTests use SQLite in memory through phpunit.xml, so they do not require MySQL.
- External lookup failures are logged to Laravel logs and shown to users only as standard source statuses.
- Website contact extraction is limited to a small public page set:
//contact/contact-us/about/about-us/support/help
- Results are capped to the top five matches.
- Confidence is calculated per result based on source strength, identifiers, evidence links, and contact evidence.