Skip to content

Commit 945cd6e

Browse files
Priyank RaoPriyank Rao
authored andcommitted
Update: README
1 parent c4cc77b commit 945cd6e

1 file changed

Lines changed: 73 additions & 39 deletions

File tree

README.md

Lines changed: 73 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# CriticalPath AI
22

33
> **P6 Schedule Intelligence Assistant — ask questions about your project schedule in plain English.**
4-
> Azure OpenAI · NetworkX · Azure Static Web Apps · Azure Functions · Python
4+
> Azure OpenAI · NetworkX · Azure Static Web Apps · Azure Functions · Python · Live in production
55
66
---
77

@@ -15,16 +15,60 @@ Built for and actively used on gas distribution pipeline project scheduling at a
1515

1616
---
1717

18-
## Key Capabilities
18+
## Demo
1919

20-
| Query | What it does |
21-
|---|---|
22-
| `"Show critical path"` | Computes longest path through the DAG, returns ordered activity list |
23-
| `"Top float risks"` | Ranks activities by total float ascending — lowest float = highest risk |
24-
| `"Project duration"` | Returns early finish of sink node in working days |
25-
| `"Predecessors of A1030"` | Traverses graph edges, returns all upstream dependencies |
26-
| `"Phase X float analysis"` | Filters by WBS phase, computes float distribution |
27-
| `"High float activities"` | Returns activities above float threshold with context |
20+
### Critical path analysis
21+
![Critical Path](docs/screenshots/demo_critical_path.png)
22+
23+
### Date window query
24+
![Date Window](docs/screenshots/demo_date_window.png)
25+
26+
### Baseline slippage + budget analysis
27+
![Slippage and Budget](docs/screenshots/demo_budget.png)
28+
29+
---
30+
31+
## What You Can Ask
32+
33+
CriticalPath AI understands **12 intent types** out of the box. Below are real prompts and what each returns.
34+
35+
### Schedule & Critical Path
36+
37+
| Prompt | Intent | What it returns |
38+
|---|---|---|
39+
| `"Which activities are driving my project finish?"` | `CRITICAL_PATH` | Ordered list of zero-float activities forming the critical path + total duration |
40+
| `"Show critical path"` | `CRITICAL_PATH` | Same as above, trigger phrase shortcut |
41+
| `"What is the total project duration?"` | `DURATION` | Early finish of sink node in working days |
42+
| `"Are any construction activities near critical?"` | `PHASE_FLOAT` | Critical (float=0) and near-critical (float≤30) activities filtered by phase |
43+
| `"Which design tasks are at risk?"` | `PHASE_FLOAT` | Phase-specific float breakdown with critical/near-critical classification |
44+
| `"Which permits have no float for this project?"` | `PHASE_FLOAT` | Permitting phase activities at zero float |
45+
46+
### Float & Resource Analysis
47+
48+
| Prompt | Intent | What it returns |
49+
|---|---|---|
50+
| `"Which tasks could slip without impacting the finish date?"` | `HIGH_FLOAT` | Top non-critical activities ranked by float descending |
51+
| `"Which tasks can I delay if I need to reallocate resources?"` | `HIGH_FLOAT` | Same — float = scheduling flexibility for resource reallocation |
52+
| `"Top float risks"` | `LOW_FLOAT` | Activities with lowest float — highest schedule risk |
53+
| `"What tasks are assigned to the Civil Engineer?"` | `RESOURCE_TASKS` | Activities by resource name with float and criticality |
54+
55+
### Baseline & Budget
56+
57+
| Prompt | Intent | What it returns |
58+
|---|---|---|
59+
| `"Which activities have slipped from baseline?"` | `SLIPPAGE` | Behind/ahead counts, days of slippage, variance summary |
60+
| `"What tasks are behind their original plan?"` | `SLIPPAGE` | Same — natural language variation handled |
61+
| `"What is the total project budget?"` | `BUDGET_TOTAL` | Total budget split by Labor / Material / Equipment with % breakdown |
62+
| `"Which activities have the highest budget?"` | `BUDGET_TOP_TASKS` | Top N activities ranked by budget with phase context |
63+
| `"Show me the top 10 most expensive activities"` | `BUDGET_TOP_TASKS` | Ranked budget list with insights |
64+
65+
### Date Window Queries
66+
67+
| Prompt | Intent | What it returns |
68+
|---|---|---|
69+
| `"What activities are starting or finishing in the next 6 months?"` | `DATE_WINDOW` | Activities starting, finishing, and spanning the window with float |
70+
| `"Show me near-critical activities starting next month"` | `DATE_WINDOW` | Date-filtered + float-filtered combined query |
71+
| `"What tasks are starting in April 2026?"` | `DATE_WINDOW` | Month-specific activity lookup with critical path context |
2872

2973
---
3074

@@ -40,24 +84,23 @@ Browser (Azure Static Web App)
4084
4185
Azure Functions (Python)
4286
├── Intent classifier → routes query to correct handler
87+
│ └── 12 intent types: CRITICAL_PATH · PHASE_FLOAT · HIGH_FLOAT
88+
│ LOW_FLOAT · DATE_WINDOW · SLIPPAGE
89+
│ BUDGET_TOTAL · BUDGET_TOP_TASKS
90+
│ RESOURCE_TASKS · DURATION · ...
4391
├── Graph engine → NetworkX DAG · CPM · float computation
44-
│ ├── critical_path()
45-
│ ├── float_analysis()
46-
│ ├── predecessors()
47-
│ └── phase_float()
92+
│ ├── critical_path() forward + backward pass
93+
│ ├── float_analysis() total float ranking
94+
│ ├── predecessors() upstream dependency traversal
95+
│ └── phase_float() WBS-filtered float analysis
4896
└── Azure OpenAI → natural language explanation layer
4997
5098
5199
Azure Blob Storage
52100
└── P6 CSV data → TASK.csv · TASKPRED.csv · PROJECT.csv
53101
```
54102

55-
**Data flow:**
56-
1. User selects project and types a schedule question
57-
2. Azure Function classifies intent and routes to the correct graph query
58-
3. NetworkX computes the answer directly from the P6 DAG
59-
4. Azure OpenAI wraps the computed result in a clear natural language explanation
60-
5. Response streams back to the chat interface
103+
**Key design principle:** The LLM only explains, never computes. All schedule logic is computed deterministically by the graph engine. Azure OpenAI is invoked only to translate computed results into plain English — this eliminates hallucination risk on schedule data entirely.
61104

62105
---
63106

@@ -86,7 +129,7 @@ ActivityDAG_AI/
86129
│ ├── chat/ ← POST /api/chat — intent + routing
87130
│ └── shared/
88131
│ ├── graph_engine.py ← NetworkX DAG · CPM · float logic
89-
│ └── intent.py ← Query classifier
132+
│ └── intent.py ← Query classifier (12 intents)
90133
├── data/ ← Your P6 CSV files go here (gitignored)
91134
├── scripts/ ← Utility scripts
92135
├── .github/workflows/ ← CI/CD pipeline
@@ -231,11 +274,11 @@ az storage blob upload-batch \
231274
In your GitHub repo → Settings → Secrets → Actions, add:
232275

233276
```
234-
AZURE_STATIC_WEB_APPS_API_TOKEN ← from Step 3
277+
AZURE_STATIC_WEB_APPS_API_TOKEN
235278
AZURE_OPENAI_ENDPOINT
236279
AZURE_OPENAI_KEY
237280
AZURE_OPENAI_DEPLOYMENT
238-
AZURE_STORAGE_CONNECTION_STRING ← from Step 1
281+
AZURE_STORAGE_CONNECTION_STRING
239282
BLOB_CONTAINER_NAME ← p6-data
240283
```
241284

@@ -245,7 +288,7 @@ BLOB_CONTAINER_NAME ← p6-data
245288
git push origin main
246289
```
247290

248-
GitHub Actions will build and deploy automatically. Your app will be live at the Azure Static Web Apps URL within a few minutes.
291+
GitHub Actions will build and deploy automatically.
249292

250293
See [DEPLOYMENT.md](DEPLOYMENT.md) for advanced configuration options.
251294

@@ -263,28 +306,19 @@ The core of this system is a **directed acyclic graph (DAG)** built from P6 pred
263306

264307
**Cycle handling:** If a cycle is detected in the schedule data (common with poorly exported P6 files), the engine falls back to P6's native `driving_path_flag` column when present — graceful degradation rather than a hard failure.
265308

266-
**Key design principle:** The LLM only explains, never computes. All schedule logic — critical path, float, predecessors — is computed deterministically by the graph engine. Azure OpenAI is invoked only to translate computed results into plain English. This eliminates hallucination risk on schedule data entirely.
267-
268-
---
269-
270-
## Why This Matters
271-
272-
Schedule analysis on large infrastructure projects is typically done manually by experienced planners using P6 directly. This tool makes that analysis:
273-
274-
- **Instant** — answers in seconds vs. hours of manual filtering
275-
- **Accessible** — any project stakeholder can query the schedule without P6 access
276-
- **Auditable** — graph-computed answers with full traceability
277-
278309
---
279310

280311
## Roadmap
281312

282313
- [x] Critical path computation
283-
- [x] Float risk ranking
284-
- [x] Predecessor/successor traversal
314+
- [x] Float risk ranking (high + low float)
285315
- [x] Phase-specific float analysis
316+
- [x] Baseline slippage detection
317+
- [x] Budget analysis by activity and resource
318+
- [x] Date window queries (start/finish within range)
319+
- [x] Resource assignment queries
286320
- [x] Project switching in UI
287-
- [ ] Baseline vs. actual variance analysis
321+
- [ ] Baseline vs. actual variance chart
288322
- [ ] Schedule health score dashboard
289323
- [ ] Gantt chart visualization of critical path
290324
- [ ] Multi-project portfolio view

0 commit comments

Comments
 (0)