The Location Evaluation Tool has been completely rebuilt with a new 7-Step Slab-Based Framework that eliminates the uniform scoring issue and provides accurate, differentiated location evaluation for franchise expansion.
- β Before: Same 75-80% score for every location
- β After: True differentiation from 15% (poor) to 95% (excellent) locations
1. Data Fetch β Multi-radius Google Maps API calls
2. Query Processing β Brand-specific keyword matching
3. Signal Extraction β Quality, density, price indicators
4. Proxy Analysis β Measurable business metrics
5. Slab Assignment β 5-tier classification system
6. Confidence Score β Data quality assessment
7. Final Integration β Format-based weight adjustments
- Slab 1: Budget/Mass (0-20%) - Street-heavy, price-sensitive
- Slab 2: Entry-level (21-40%) - Basic organized presence
- Slab 3: Mid-market (41-60%) - Balanced catchment
- Slab 4: Premium (61-80%) - Organized, aspirational
- Slab 5: Luxury/Elite (81-100%) - High-end destination
Parameter | Weight | Purpose |
---|---|---|
Footfall | 18% | Walk-in traffic density |
Delivery Density | 15% | Zomato/Swiggy ecosystem |
Spending Capacity | 12% | Economic indicators |
Target Audience Fit | 10% | Demographics alignment |
Competition Pricing | 8% | Market saturation |
Parameter | Weight | Purpose |
---|---|---|
Schools/Colleges | 7% | Student demographics |
Offices/Businesses | 7% | Lunch crowd potential |
Residential Quality | 7% | Repeat customer base |
Food Brand Presence | 5% | Market maturity |
Nightlife/CafΓ©s | 4% | Aspirational crowd |
Infrastructure, safety, branding opportunities, and lifestyle indicators.
- β¬οΈ Footfall weight: 25%
- β¬οΈ Student demographics: 10%
- β¬οΈ Delivery density: 8%
- β¬οΈ Delivery density: 25%
- β¬οΈ Spending capacity: 15%
- β¬οΈ Footfall: 5%
- β¬οΈ Nightlife/cafΓ© presence: 12%
- β¬οΈ Shopping preferences: 8%
- β‘οΈ Balanced footfall: 15%
- Node.js 16+
- Google Maps API key with Places API enabled
- Environment variables configured
# Clone repository
git clone <repo-url>
cd Location-Evaluation-Tool
# Install backend dependencies
cd backend
npm install
# Install frontend dependencies
cd ../
npm install
# Set environment variables
echo "GOOGLE_MAPS_API_KEY=your_api_key_here" > backend/.env
# Start backend (Port 3001)
cd backend
npm run start:dev
# Start frontend (Port 3000)
cd ../
npm start
POST /analysis/complete
Content-Type: application/json
{
"lat": 28.6139,
"lng": 77.2090,
"radius": 800,
"format": "cart",
"clientName": "Test Location",
"address": "Connaught Place, Delhi"
}
POST /location/analyze
Content-Type: application/json
{
"lat": 28.6139,
"lng": 77.2090,
"radius": 800,
"format": "cloud_kitchen"
}
GET /analysis/health
GET /analysis/config
POST /analysis/validate
{
"success": true,
"evaluation": {
"overall": {
"percentage": 67.5,
"grade": "B",
"confidence": 82.3
},
"parameters": [
{
"name": "Footfall",
"slab": 3,
"score": 58.2,
"weight": 18,
"reason": "Mid market: middle-class families + students",
"indicators": ["CBSE schools", "reviews 200-500", "balanced vehicle mix"]
},
{
"name": "Delivery Density",
"slab": 4,
"score": 74.1,
"weight": 15,
"reason": "Dense hub: 4+ national brands, 2+ cloud kitchens",
"indicators": ["Domino's", "Wow! Momo", "late-night options"]
}
// ... 20 more parameters
],
"recommendations": [
"β
Recommended: Good location with solid fundamentals",
"πͺ Key Strengths: Delivery Density, Office Presence",
"π§ Priority Improvements: Food Brand Presence, Residential Quality"
]
}
}
- Slab 1: 90%+ local outlets, no branded chains
- Slab 2: 1-2 regional chains, no global QSR
- Slab 3: 2-3 national chains, local strong
- Slab 4: 3-4 global QSR + national chains
- Slab 5: Multiple global QSR (β₯5) + national chains
- Data Coverage: % parameters with sufficient data
- Review Density: Average reviews per POI
- Brand Recognition: Clarity of brand identification
- Radius Consistency: Score stability across different radius
Location-Evaluation-Tool/
βββ backend/ # NestJS API server
β βββ src/
β β βββ config/
β β β βββ evaluation.config.json # Core evaluation logic
β β βββ modules/
β β βββ location/
β β βββ location.service.ts # Main evaluation engine
β β βββ analysis.controller.ts
β β βββ location.controller.ts
βββ src/ # React frontend
β βββ components/ # UI components
β βββ services/ # API integration
βββ Evalution-Logic/ # Business logic documentation
β βββ Location Evaluation Tool-Brain.md
β βββ Location Evaluation Tool-Decide Weight.md
βββ NEW_EVALUATION_SYSTEM_SUMMARY.md # Complete technical overview
The system is driven by backend/src/config/evaluation.config.json
:
- 22 evaluation parameters with weights and slab criteria
- Format-based adjustments for different business models
- Brand categorization for quality assessment
- Confidence factors for data reliability scoring
npm run start:dev # Backend with hot reload
npm start # Frontend with hot reload
npm run build # Build both backend and frontend
npm run start:prod # Production server
docker-compose up --build
- β Multi-radius analysis for comprehensive coverage
- β Intelligent API rate limiting to optimize Google Maps usage
- β Confidence-based scoring for data quality assurance
- β Format optimization for different business models
- β Caching mechanisms for repeated evaluations
- β Error handling with graceful degradation
- Define parameter in
evaluation.config.json
- Add slab criteria and weight
- Implement evaluation logic in
location.service.ts
- Update frontend components if needed
Format-specific weights can be adjusted in the formatBasedWeights
section of the configuration.
- Technical Issues: Check logs in
logs/
directory - API Errors: Verify Google Maps API key and quotas
- Configuration: Refer to
NEW_EVALUATION_SYSTEM_SUMMARY.md
π― Built specifically for The Momos Mafia franchise expansion with accurate, data-driven location evaluation.