An intelligent project/business name generator that helps you create, refine, and validate business names with real-time domain availability checking.
- Intelligent Name Generation: AI-powered business name creation using LLMs via LiteLLM (Gemini, OpenAI, OpenRouter supported) — defaults to free OpenRouter models, no paid LLM subscription or API required
- Creative Profiles: Generate names with unique creative personas, angles, and constraints
- Iterative Refinement: Select your favorite names and generate new variations based on your preferences
- Free Domain Checking: Check availability across 12 popular TLD extensions (.com, .net, .org, .io, etc.) via DNS and RDAP — no paid domain API (GoDaddy, Namecheap, etc.) required
- Competitive Analysis: Analyze potential naming conflicts with existing businesses (requires Brave Search API key — optional, rest of app works without it)
- Favorites Management: Save and organize your preferred names with notes
- Live AI Reasoning: Watch the AI's thought process in real-time during generation
# Clone the repository
git clone https://github.com/jeremynsl/localnamer.git
cd localnamer
# Install dependencies
pip install -r requirements.txtCreate a .env file with your API keys:
# Required for name generation (defaults to free OpenRouter models)
OPENROUTER_API_KEY=your_openrouter_api_key
# Optional: only needed for the Analyze (competitive conflict) feature
BRAVE_API_KEY=your_brave_search_api_key
# Optional: only if you want to use OpenAI models instead of OpenRouter
OPENAI_API_KEY=your_openai_api_key
# Optional: only if you want to use Gemini models instead of OpenRouter
GEMINI_API_KEY=your_gemini_api_key
# Optional: Server configuration (defaults shown)
# SERVER_HOST=127.0.0.1 # Binds to localhost only (secure default)
# SERVER_PORT=8000 # Default port
# ALLOW_REMOTE_ACCESS=false # Keep false for local-only modeSecurity Note: This app is local-only by default. Non-loopback clients are blocked unless you explicitly set ALLOW_REMOTE_ACCESS=true.
# Start the server (binds to localhost:8000 by default)
python -m app.main
# Alternative: Run with uvicorn directly (recommended)
uvicorn app.main:app --host 127.0.0.1 --port 8000
# Optional: bind externally only if you intentionally want remote access
uvicorn app.main:app --host 0.0.0.0 --port 8000
# and set ALLOW_REMOTE_ACCESS=trueThe application will be available at http://localhost:8000
- Input: Enter your business idea and any suggested names
- Generate: AI creates relevant business names with domain availability
- Select: Choose names you like using checkboxes
- Iterate: Generate new names inspired by your selections
- Refine: Repeat the process to continuously improve results
- Competitive Analysis: Analyze potential naming conflicts with existing businesses
- Profile Creation: Generate unique creative briefs with personas and constraints
- Creative Generation: AI creates names following the creative direction
- Profile Management: Reuse successful creative profiles from your recent history
- Selective Components: Enable/disable specific parts of creative profiles
POST /check_names- Generate initial business namesPOST /iterate_names- Generate names based on selectionsPOST /creative_names- Generate names using creative profilesPOST /check_tld- Check a specific additional TLD on demand
POST /generate_brief- Create new creative profilesGET /recent_profiles- Get recently used profiles
POST /analyze_names- Detailed competitive analysisGET /user/favorite-names- Manage saved namesPOST /user/favorite-names- Save favorite names
POST /check_names_stream- Stream AI reasoning during generationPOST /creative_names_stream- Stream creative generation processPOST /iterate_names_stream- Stream iteration process
Frontend (Static Files)
├── Interactive name cards with domain status
├── Creative profile management
├── Real-time AI thoughts streaming
└── Favorites management
Backend (FastAPI)
├── app/ - Main application and configuration
├── routers/ - API endpoint definitions
├── services/ - Business logic and LLM integration
├── models/ - Data validation and types
└── Static SQLite database for persistence
- Backend: FastAPI, Python 3.10+
- AI Integration: Multiple LLM providers via LiteLLM
- Domain Checking: DNS + RDAP with intelligent caching
- Search: Brave Search API for competitive analysis
- Database: SQLite for local data persistence
- Frontend: Vanilla JavaScript with Tailwind CSS
- Standard Generation: DeepSeek R1 (high creativity, thinking)
- Creative Briefs: gpt-oss-120b (fast)
- Competitive Analysis: DeepSeek R1 (high creativity, thinking)
- Temperature: Optimized for creative naming (1.0-1.1)
- Model Selection: Defaults to free OpenRouter models, can be configured for OpenAI or Gemini via environment variables
- Supported TLDs: .com, .net, .org, .io, .co, .ai, .biz, .info, .app, .dev, .ca, .uk
- Performance: DNS-first optimization with RDAP fallback
- Caching: 1-hour TTL to speed up iterations
localnamer/
├── app/ # FastAPI application
│ ├── main.py # Entry point
│ ├── settings.py # Configuration
│ └── database.py # SQLite operations
├── routers/ # API routes
├── services/ # Business logic
├── models/ # Data models
├── static/ # Frontend files
└── tests/ # Test suite
# Run all tests
python -m pytest
# Run specific test files
python -m pytest tests/test_main.py -v
python -m pytest tests/test_creative_profiles.py -vThe application uses SQLite with tables for:
creative_profiles- Saved creative personas and constraintsfavorite_names- User's favorite generated names with metadata
MIT License - see LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
For issues and feature requests, please create an issue.
