Automated EPC Schedule Assessment & Analysis Application
The Schedule Quality Analyzer is a web-based application designed to automate the assessment and analysis of EPC (Engineering, Procurement, Construction) project schedules against industry best practices. It implements DCMA 14-Point Schedule Assessment and GAO Schedule Assessment Guide methodologies, providing project managers and schedulers with instant, data-driven insights into schedule quality, risks, and improvement opportunities.
- โ Automated Schedule Analysis - DCMA 14-Point and GAO compliance checking
- ๐ Interactive Dashboards - Real-time metrics with visualizations
- ๐ Professional Reports - Generate DOCX and Excel reports
- ๐ Schedule Comparison - Track quality improvements across versions
- ๐ฅ Multi-User Access - Role-based permissions (Admin/Viewer)
- ๐ก Smart Recommendations - Prioritized, actionable improvement suggestions
- ๐ฏ Health Score - Composite 0-100 metric for schedule quality
- Python 3.11 or higher
- pip package manager
- Git
- Clone the repository
git clone https://github.com/drogoXX/ScheduleAss.git
cd ScheduleAss- Install dependencies
pip install -r requirements.txt- Run the application
streamlit run app.py- Access the application
- Open your browser to
http://localhost:8501 - Login with demo credentials (see below)
Admin Account:
- Username:
admin - Password:
admin123
Viewer Account:
- Username:
viewer - Password:
viewer123
- Navigate to Upload Schedule page
- Select an existing project or create a new one
- Upload your P6 CSV export file
- Click Upload and Analyze
- Wait for analysis to complete (10-30 seconds)
- Go to Analysis Dashboard
- Select a schedule from the dropdown
- Explore different tabs:
- Overview: Health score and key metrics
- Detailed Metrics: In-depth analysis with charts
- Issues: Identified problems by severity
- Recommendations: Prioritized improvement actions
- Activities: Searchable activity list
- Visit Reports page
- Select a schedule
- Choose report type:
- DOCX: Executive summary for stakeholders
- Excel: Detailed analysis for technical teams
- Click Generate and download
- Navigate to Comparison page
- Select two schedule versions
- View side-by-side metrics
- Analyze improvements or regressions
ScheduleAss/
โโโ app.py # Main application entry point
โโโ requirements.txt # Python dependencies
โโโ .streamlit/
โ โโโ config.toml # Streamlit configuration
โโโ src/
โ โโโ auth/
โ โ โโโ auth_manager.py # Authentication logic
โ โโโ parsers/
โ โ โโโ schedule_parser.py # CSV parser for P6 exports
โ โโโ analysis/
โ โ โโโ dcma_analyzer.py # DCMA metrics calculator
โ โ โโโ metrics_calculator.py # CPLI, BEI, health score
โ โ โโโ recommendations.py # Recommendations engine
โ โโโ database/
โ โ โโโ db_manager.py # Data storage manager
โ โโโ reports/
โ โ โโโ docx_generator.py # DOCX report generator
โ โ โโโ excel_generator.py # Excel report generator
โ โโโ utils/
โ โโโ helpers.py # Utility functions
โโโ pages/
โ โโโ 1_Upload_Schedule.py # Upload interface
โ โโโ 2_Analysis_Dashboard.py # Main dashboard
โ โโโ 3_Comparison.py # Schedule comparison
โ โโโ 4_Reports.py # Report generation
โ โโโ 5_Settings.py # Settings and profile
โโโ data/
โ โโโ sample_schedule.csv # Sample P6 export
โโโ README.md # This file
The application expects Primavera P6 CSV exports with the following columns:
- Activity ID
- Activity Name
- Activity Status
- Start
- Finish
- Total Float
- Duration Type
- WBS Code
- At Completion Duration
- Free Float
- Predecessors / Predecessor Details
- Successors / Successor Details
- Primary Constraint
- Activity Type
- Resource Names
When exporting from P6:
- File โ Export โ Spreadsheet
- Select "Activity" layout
- Include all columns listed above
- Export as CSV format
| Metric | Description | Target |
|---|---|---|
| Negative Lags | Activities with lead relationships | 0 |
| Positive Lags | Percentage of relationships with lags | โค5% |
| Hard Constraints | Activities with mandatory dates | โค10% |
| Missing Logic | Activities without predecessors/successors | 0 |
| Long Durations | Activities exceeding 20 days | Minimize |
| High Float | Excessive total float activities | Review |
-
CPLI (Critical Path Length Index)
- Formula: (Critical Path + Total Float) / Critical Path
- Target: โฅ 0.95
- Measures schedule compression risk
-
BEI (Baseline Execution Index)
- Formula: Completed Tasks / Planned Tasks
- Target: โฅ 0.95
- Measures schedule adherence
-
Health Score
- Composite metric (0-100)
- Based on DCMA compliance
- Ratings: Excellent (90-100), Good (75-89), Fair (60-74), Poor (40-59), Critical (0-39)
| Role | Permissions |
|---|---|
| Admin | Upload schedules, run analysis, generate reports, delete data, manage users |
| Viewer | View dashboards, access reports (read-only) |
- 30-minute inactivity timeout
- Password-based authentication
- Session state isolation
- Audit logging for all actions
| Component | Technology |
|---|---|
| Frontend | Streamlit 1.28+ |
| Backend | Python 3.11+ |
| Database | Session-based (upgradeable to Pocketbase) |
| Data Processing | Pandas, NumPy |
| Visualization | Plotly, Altair, Matplotlib |
| Reports | python-docx, openpyxl |
| Authentication | Streamlit Session State |
- CSV Parsing: <10 seconds for 1000-1500 activities
- Analysis Execution: <30 seconds for full DCMA assessment
- Dashboard Rendering: <5 seconds for all visualizations
- Report Generation: <15 seconds for DOCX and Excel
"Missing required columns" error
- Verify P6 export includes all required fields
- Check column names match expected format
"Failed to parse CSV" error
- Ensure file is valid CSV format
- Remove special characters or formatting issues
- Try re-exporting from P6
Analysis takes too long
- Large schedules (>5000 activities) may take longer
- Check system resources (RAM, CPU)
- Try with smaller schedule first
Login not working
- Verify correct username/password
- Try refreshing the page
- Clear browser cache
- Push code to GitHub repository
- Visit streamlit.io/cloud
- Connect your GitHub account
- Deploy from repository
- Configure secrets (if needed)
# Production mode
streamlit run app.py --server.port 8501 --server.address 0.0.0.0# Dockerfile example
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["streamlit", "run", "app.py"]- โ Basic authentication
- โ CSV parser
- โ DCMA analysis engine
- โ Dashboards and visualizations
- โ Report generation (DOCX & Excel)
- โ Schedule comparison
- Pocketbase integration
- Advanced user management
- Monte Carlo risk analysis
- Critical path visualization
- Email notifications
- Custom metric thresholds
- Direct XER file import
- Resource loading analysis
- Portfolio dashboard
- RESTful API
- Mobile app
- Machine learning predictions
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For questions, issues, or suggestions:
- GitHub Issues: Create an issue
- Email: [Your email]
- Documentation: See in-app help sections
- DCMA - For the 14-Point Schedule Assessment framework
- GAO - For Schedule Assessment Guide best practices
- Streamlit - For the amazing web framework
- Community - For feedback and contributions
- DCMA 14-Point Assessment
- GAO Schedule Assessment Guide
- Primavera P6 Documentation
- Streamlit Documentation
Built with โค๏ธ for EPC Project Teams
Version 1.0.0 - November 2025