See what they're hiding.
Vantage is a real-time Intelligence Platform for CS2 players. Consolidate data from Steam, Faceit, and Leetify to calculate a proprietary Trust Variance (Risk Factor) score and gain tactical insights into your teammates and opponents.
- Quick Start Guide - Detailed setup instructions
- Security Implementation - API key protection and security architecture
- License - Terms and conditions
- Universal Player Lookup - Search by Steam URL, SteamID64, SteamID32, or vanity name
- Multi-Source Intelligence - Aggregates data from Steam, Faceit, Leetify, and Premier
- Risk Assessment - AI-powered Trust Variance scoring (0-100)
- Real-Time Updates - Live data fetching with Redis caching
- Tactical UI - Radar-style scanning animations and professional dashboard
- Background Processing - BullMQ workers for efficient data scraping
vantage/
βββ apps/
β βββ web/ # Next.js frontend
β βββ api/ # Fastify backend
βββ packages/
β βββ shared/ # Shared types, utilities, risk calculator
βββ prisma/ # Database schema
βββ docker-compose.yml
| Layer | Technology |
|---|---|
| Frontend | Next.js 14, React, TypeScript, Tailwind CSS, Framer Motion |
| Backend | Fastify, TypeScript, BullMQ |
| Database | PostgreSQL (Prisma ORM) |
| Cache | Redis |
| APIs | Steam Web API, Faceit Data API, Leetify API |
- Node.js 18+
- Docker & Docker Compose
- API Keys:
- Steam Web API Key
- Faceit API Key
- Leetify API Key (optional)
For first-time setup, run the automated script:
./setup.shThis will:
- Create
.envfile from template - Start Docker services (PostgreSQL + Redis)
- Generate Prisma client
- Push database schema
If you prefer manual setup, follow these steps:
cd vantage
npm installCopy the example environment file:
cp .env.example .envEdit .env and add your external API keys:
# Database
DATABASE_URL="postgresql://vantage:vantage_dev@localhost:5432/vantage?schema=public"
# Redis
REDIS_HOST="localhost"
REDIS_PORT=6379
# External API Keys - Get yours from:
# Steam: https://steamcommunity.com/dev/apikey
# Faceit: https://developers.faceit.com/
# Leetify: Contact Leetify for API access
STEAM_API_KEY="your_steam_api_key_here"
FACEIT_API_KEY="your_faceit_api_key_here"
LEETIFY_API_KEY="your_leetify_api_key_here"
# Server
API_PORT=3001
API_HOST="localhost"
# Backend API URL
BACKEND_API_URL="http://localhost:3001"
# reCAPTCHA (optional)
RECAPTCHA_SECRET_KEY="your_recaptcha_secret_key_here"
NEXT_PUBLIC_RECAPTCHA_SITE_KEY="your_recaptcha_site_key_here"π Security Note: API keys are stored server-side only and never exposed to browsers. See docs/SECURITY.md for details.
Start PostgreSQL and Redis:
npm run docker:upGenerate Prisma client and push schema:
npm run db:generate
npm run db:pushStart both frontend and backend:
npm run devOr run individually:
# Backend API
npm run dev:api
# Frontend
npm run dev:web
# Worker (optional, for background jobs)
npm run worker- Frontend: http://localhost:3000
- API: http://localhost:3001
- Prisma Studio:
npm run db:studio
The search accepts multiple formats:
-
Steam Profile URL:
https://steamcommunity.com/id/username https://steamcommunity.com/profiles/76561198... -
SteamID64:
76561198012345678 -
SteamID32:
STEAM_0:1:12345 -
Vanity Name:
username
The Trust Variance score (0-100) is calculated based on weighted red flags:
| Flag | Weight | Trigger Condition |
|---|---|---|
| New Account | +30 | Account < 1 year old |
| Private Profile | +10 | Profile visibility set to private |
| VAC Ban | +40 | Active VAC ban on record |
| Game Ban | +25 | Active game ban on record |
| No Prime | +15 | No Prime status |
| Inconsistent Stats | +25 | High aim (>90) but low positioning (<30) on Leetify |
| High K/D, Low Matches | +20 | K/D > 1.5 with < 50 matches on Faceit |
Risk Levels:
- Low (0-29): Trustworthy player
- Medium (30-49): Some concerns
- High (50-69): Multiple red flags
- Critical (70-100): High-risk account
GET /healthGET /api/profile/:idParameters:
id- Steam URL, SteamID64, SteamID32, or vanity name
Response:
{
"success": true,
"data": {
"steam": { ... },
"faceit": { ... },
"leetify": { ... },
"risk": {
"totalScore": 45,
"level": "medium",
"flags": [ ... ],
"calculatedAt": "2026-01-01T12:00:00.000Z"
}
},
"timestamp": "2026-01-01T12:00:00.000Z"
}apps/web/src/
βββ components/ # React components
βββ pages/ # Next.js pages
βββ styles/ # Global styles
apps/api/src/
βββ routes/ # API routes
βββ services/ # Business logic (Steam, Faceit, etc.)
βββ index.ts # Server entry
βββ worker.ts # BullMQ worker
packages/shared/src/
βββ types.ts # TypeScript interfaces
βββ steam-resolver.ts # Steam ID resolution
βββ risk-calculator.ts # Risk scoring logic
Edit packages/shared/src/risk-calculator.ts:
// Add new flag
if (condition) {
const weight = 20;
flags.push({
flag: 'NEW_FLAG_NAME',
weight,
reason: 'Description of why this is risky',
detected: true
});
totalScore += weight;
}# Create migration
npx prisma migrate dev --name your_migration_name
# Apply migrations
npx prisma migrate deploy
# Reset database (caution!)
npx prisma migrate reset# Start services
npm run docker:up
# Stop services
npm run docker:down
# View logs
docker-compose logs -f
# Restart specific service
docker-compose restart postgres
docker-compose restart redis- Never commit API keys - Always use environment variables
- Rate Limiting - Steam API: 100,000 calls/day; Faceit: varies by plan
- Cache Strategy - Profiles cached for 5 minutes to reduce API calls
- Data Privacy - Only public profile data is accessed
- Steam Game Coordinator integration for Premier ratings
- Historical match analysis
- Player comparison tool
- Discord bot integration
- Public API with authentication
- Mobile app (React Native)
- Advanced analytics dashboard
This project is for educational purposes only. The author is not responsible for any misuse of this software or any violations of terms of service from third-party platforms.
Ensure compliance with:
- Steam Web API Terms
- Faceit API Terms
- Leetify API Terms
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
- Verify the Steam API key is valid
- Check if the profile is public
- Ensure the SteamID64 is correct
- Confirm PostgreSQL is running:
docker-compose ps - Check
DATABASE_URLin.env - Try resetting:
npm run db:push
- Verify Redis is running:
docker-compose ps - Check
REDIS_HOSTandREDIS_PORTin.env
- Implement exponential backoff
- Increase cache TTL
- Use BullMQ worker for batch processing
For issues, questions, or feature requests, please open an issue on GitHub.
Built with by the Vantage Team
See what they're hiding.



