AI-powered Learning & Development Platform for Škoda Auto
S³ is a comprehensive HR and learning management system that helps Škoda Auto identify skill gaps, recommend personalized learning paths, and track employee development. The platform uses real organizational data to provide actionable insights for both employees and HR managers.
- Personalized Learning Feed - Browse 10,000+ micro-learning modules across multiple categories
- Skill Gap Visualization - "Swiss Cheese" profile showing strengths and areas for improvement
- Course Recommendations - AI-powered suggestions based on your role and skill gaps
- Progress Tracking - Monitor your learning journey and completed courses
- Search & Filter - Find relevant courses quickly with advanced search
- Employee Search - Find employees with advanced filters (skill gaps, department, etc.)
- Analytics Dashboard - Comprehensive insights into workforce skills and learning trends
- Department Overview - Track skill health across departments
- Module Assignment - Assign courses directly to employees
- Learning Analytics - Track completion rates, popular courses, and top learners
The project consists of two main components:
- Data Ingestion Pipeline (
src/s3/) - Python scripts that process raw Škoda data files - Web Application (
web/) - Next.js frontend with TypeScript
.
├── data/ # Raw Škoda data files (Excel, TXT)
├── src/s3/ # Python data processing pipeline
│ ├── ingest.py # Main ingestion script
│ ├── loader.py # Data loading utilities
│ └── ...
├── web/ # Next.js web application
│ ├── src/
│ │ ├── app/ # Next.js app router pages
│ │ ├── components/ # React components
│ │ ├── context/ # React context providers
│ │ └── data/ # Generated JSON data files
│ └── ...
└── artifacts/ # Generated artifacts (translations, vector store)
- Node.js 18+ and npm
- Python 3.11+
- Poetry (for Python dependency management)
-
Clone the repository
git clone https://github.com/yourusername/Skoda.git cd Skoda -
Set up Python environment
# Install Poetry if you haven't already curl -sSL https://install.python-poetry.org | python3 - # Install Python dependencies poetry install
-
Process the data
# This will generate users.json, courses.json, and other data files poetry run python -m src.s3.ingest -
Set up the web application
cd web npm install -
Configure environment variables
Create a
.env.localfile inside theweb/directory:cd web cp .env.local.example .env.local # if the example file exists
Or create it manually with:
NEXT_PUBLIC_LOGIN_USERNAME=Maria NEXT_PUBLIC_LOGIN_PASSWORD=Any(Use your own secure credentials in production.)
-
Run the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
For the login page, you can use any username and password - it's a demo system.
To deploy the application on an Ubuntu server with Apache as a reverse proxy:
-
Clone and navigate to the project
git clone https://github.com/ExceptedPrism3/Skoda.git cd Skoda -
Run the automated setup script
chmod +x setup-server.sh ./setup-server.sh
The script will:
- Install Node.js 20+ and Python dependencies
- Set up the Python virtual environment
- Process data files (if present in
data/folder) - Build the Next.js application
- Configure PM2 for process management
- Set up Apache reverse proxy configuration
- Start the application
-
Manual setup (if needed)
If you prefer manual setup or need to customize:
# Set up Python environment python3 -m venv venv source venv/bin/activate pip install pandas transformers scikit-learn numpy scipy openpyxl sentencepiece pydantic # Process data export PYTHONPATH="${PYTHONPATH}:$(pwd)/src" python -m s3.ingest # Build Next.js app cd web npm install NEXT_PUBLIC_BASE_PATH=/skoda npm run build cd .. # Start with PM2 pm2 start ecosystem.config.js pm2 save pm2 startup # Follow the output to enable auto-start on boot
-
Apache Configuration
The setup script automatically configures Apache. If you have an existing SSL VirtualHost, it will add the
/skodalocation blocks to it. Otherwise, it creates a new HTTP-only configuration.The app runs on port 3002 by default (configurable in
ecosystem.config.js). -
Access the application
- HTTP:
http://your-server-ip/skoda - HTTPS:
https://your-server-ip/skoda(if SSL is configured)
- HTTP:
- Port Configuration: The app uses port 3002 by default. Make sure this port is available or update
ecosystem.config.jsand Apache configuration accordingly. - Base Path: The application is configured to run under
/skodasubpath. To change this, updateNEXT_PUBLIC_BASE_PATHin both the build command andecosystem.config.js. - Login Credentials: Set
NEXT_PUBLIC_LOGIN_USERNAMEandNEXT_PUBLIC_LOGIN_PASSWORD(preferably via.env.local) before building so the login page can validate against them. - SSL/HTTPS: If you have SSL certificates, ensure your Apache SSL VirtualHost includes the
/skodalocation blocks (the setup script handles this automatically). - Data Files: Place your data files in the
data/folder before running the setup script, or run the data ingestion manually after setup.
# PM2 Management
pm2 status # Check app status
pm2 logs skoda-web # View logs
pm2 restart skoda-web # Restart app
pm2 stop skoda-web # Stop app
# Apache Logs
sudo tail -f /var/log/apache2/skoda_error.log
sudo tail -f /var/log/apache2/skoda_access.log
# Rebuild after code changes
cd web
NEXT_PUBLIC_BASE_PATH=/skoda npm run build
pm2 restart skoda-webThe platform uses real Škoda Auto data from multiple sources:
- ERP Data (
ERP_SK1.Start_month - SE.xlsx) - Employee profiles, roles, education - Training History (
ZHRPD_VZD_STA_007.xlsx,ZHRPD_VZD_STA_016_RE_RHRHAZ00.xlsx) - Course completions - Degreed Platform (
Degreed.xlsx) - External learning platform data - Skill Mapping (
Skill_mapping.xlsx) - Course-to-skill mappings - Organizational Hierarchy (
RLS.sa_org_hierarchy - SE.xlsx) - Department structure - Course Descriptions (TXT files) - Multi-language course content
- Job Descriptions (RE_RHRHAZ00 files) - Role-specific responsibilities
/- Employee search with filters/employee/[id]- Individual employee profile with skills and recommendations/feed- Daily micro-challenges and course catalog/analytics- Comprehensive analytics dashboard/department- Department overview and skill health/documentation- Platform documentation and help/settings- User settings
- Next.js 15 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- Recharts - Data visualization
- Lucide React - Icon library
- Python 3.11+ - Data processing
- Pandas - Data manipulation
- Transformers - Czech-to-English translation
- scikit-learn - Vector embeddings and similarity
Skoda/
├── data/ # Raw data files (Excel, TXT, PDF)
├── src/s3/ # Python data processing
│ ├── ingest.py # Main ingestion script
│ ├── loader.py # File loading utilities
│ ├── chunker.py # Text chunking
│ ├── tagger.py # Content tagging
│ ├── embedder.py # Text embeddings
│ ├── vector_store.py # Vector storage
│ └── ...
├── web/ # Next.js application
│ ├── src/
│ │ ├── app/ # Pages (App Router)
│ │ │ ├── page.tsx # Employee search
│ │ │ ├── employee/[id]/ # Employee detail
│ │ │ ├── feed/ # Learning feed
│ │ │ ├── analytics/ # Analytics dashboard
│ │ │ └── ...
│ │ ├── components/ # React components
│ │ ├── context/ # Context providers
│ │ └── data/ # Generated JSON data
│ ├── package.json
│ └── ...
├── artifacts/ # Generated artifacts
│ ├── translation_cache.json # Translation cache
│ └── vector_store/ # Vector embeddings
└── README.md
- Load Raw Data - Read Excel and text files from
data/directory - Translate - Convert Czech text to English using translation models
- Process - Extract courses, users, skills, and relationships
- Enrich - Add job descriptions, course descriptions, and metadata
- Export - Generate JSON files for the web application
Run the ingestion script whenever you update the source data:
poetry run python -m src.s3.ingest- Dark Mode Support - Full dark/light theme support
- Responsive Design - Works on desktop, tablet, and mobile
- Smooth Animations - Polished UI with smooth transitions
- Accessibility - WCAG-compliant design patterns
- Department distribution and skill health
- Top skills and proficiency levels
- Learning activity trends
- Course completion rates
- Top learners leaderboard
- Popular courses analysis
The platform uses a simple demo authentication system. In production, this would integrate with Škoda's SSO system.
This project is released under the MIT License. See LICENSE file for details.
This is a hackathon project for Škoda Auto. For questions or contributions, please open an issue or contact the team.
- Škoda Auto - For providing the dataset and hackathon opportunity
- 42 Heilbronn × 42 Prague - Hackathon organization
- Built with ❤️ for better employee learning experiences
Note: This is a prototype/demo system. For production use, additional security, performance optimizations, and integrations would be required.