# Project export: PathPilot AI

This document was generated by HackStack to give an AI agent context about a hackathon project. Sections are labeled with their provenance; content marked as truncated was cut to keep this document small.

## Project metadata

- Hackathon: OpenAI Build Week
- Tagline: An adaptive AI learning coach that transforms career goals into personalized, evolving learning journeys.
- Devpost: https://devpost.com/software/pathpilot-ai-0do4q1
- GitHub: https://github.com/JasonPG2007/PathPilot-AI
- Demo: https://pathpilotaihackathon.vercel.app/
- Video: https://www.youtube.com/embed/bltIWMO9pk4?enablejsapi=1&hl=en_US&rel=0&start=&version=3&wmode=transparent
- Team: 1 GitHub contributor(s) — Nguyễn Quốc Bảo An (49 commits)

## Devpost submission (written by the team)

### Inspiration

There are more learning resources than ever, but one question is still difficult to answer: "What should I learn next?" Most AI tools and online courses can answer questions or recommend content, but they rarely provide a learning plan that evolves with you. As goals, skills, or available study time change, those plans quickly become outdated. We wanted to build something different—an AI coach that stays with the learner throughout the journey instead of generating a one-time roadmap. That idea became PathPilot AI.

### What it does

PathPilot AI turns a career goal into a personalized learning roadmap. Instead of creating a single static plan, it uses a multi-agent workflow: Planner creates the initial roadmap. Critic reviews the roadmap for quality and feasibility. Revision improves the roadmap based on the feedback. As learners make progress or update their goals, PathPilot adjusts the roadmap while keeping completed work. Every recommendation also includes an explanation so users understand why the AI suggests each step. Other features include: Explain Why Adaptive Replanning Strategy Comparison Journey Dashboard Trusted Resources PDF Export Shareable Roadmaps

### How we built it

PathPilot AI was built with: OpenAI Responses API GPT-5.6 React + Vite ASP.NET Core (.NET 8) Azure Vercel Remotion GPT-5.6 powers the multi-agent workflow. It generates personalized learning plans, critiques and improves them, explains recommendations, compares learning strategies, and adapts roadmaps as learners make progress. Codex played a major role during development. It helped us implement features faster, debug React and ASP.NET Core code, refine the Remotion video pipeline, fix recording alignment and subtitle positioning, and iterate quickly on the final demo.

### Challenges we ran into

One of the biggest challenges was keeping learning plans both personalized and consistent. When users change their goals or available study time, the roadmap should adapt without making them start over. Finding the right prompting strategy to preserve previous progress while generating coherent updates took many iterations. Creating the demo was another challenge. Besides building the application itself, we spent considerable time producing a polished presentation with synchronized narration, subtitles, screen recordings, and interactive highlights using Remotion.

### What we learned

This project reminded us that building an AI product is about much more than choosing the right model. Good user experience comes from combining strong prompting, thoughtful workflow design, and clear explanations that help users trust AI recommendations. We also learned how much faster development becomes when using Codex for implementation and debugging, allowing us to spend more time improving the product instead of fighting small technical issues.

### What's next

We see PathPilot AI as more than a roadmap generator. Our goal is to turn it into a long-term AI learning companion. Next, we plan to explore: Long-term learner memory Calendar and task integration Progress analytics Community learning Mobile applications Deployments for universities and organizations We believe AI should do more than answer questions—it should help people continue learning with confidence over time.

## README (from the GitHub repository)

# PathPilot AI

> An adaptive AI learning coach that plans, critiques, explains, tracks, and replans personalized learning journeys.

**Plan with rigor. Learn with context. Adapt without losing progress.**

[Live demo](https://pathpilotaihackathon.vercel.app) · [Backend health](https://pathpilot-ai-api-2026-agbtbaahced0aff0.centralus-01.azurewebsites.net/health)

PathPilot AI turns a learner's goal, experience, schedule, and preferences into a critic-audited learning journey. It combines GPT-5.6 workflows with deterministic local systems for progress, strategy comparison, achievements, trusted resources, PDF export, and privacy-conscious sharing.

![PathPilot AI roadmap with AI Coach Insights, Journey Dashboard, and achievements](docs/screenshots/journeydashboard.png)

## The problem

Learning advice is often generic, static, and disconnected from execution. Course lists rarely adapt when available time changes, completed work is forgotten, and learners are left without an explanation of why a skill or project matters. Even a strong initial roadmap can become outdated as circumstances change.

## The solution

PathPilot behaves like an adaptive learning coach rather than a one-time roadmap generator. It:

- builds a personalized, phased plan;
- audits feasibility, workload, prerequisites, timeline, and project difficulty;
- revises weak plans before presenting them;
- preserves completed work during strategy changes and replanning;
- explains individual skills, milestones, and recommended projects;
- adapts remaining work when learner constraints change; and
- connects planning to persistent progress, achievements, and next actions.

## Product Tour

### Start with the learner’s goal

PathPilot introduces the product as an adaptive AI learning coach: it plans a path, challenges the draft, and delivers a refined roadmap instead of a generic list of links.

![PathPilot AI landing page with learning-roadmap value proposition and agent workflow](docs/screenshots/landingpage.png)

When a valid saved journey exists in the current browser, the Landing page shows its goal, selected strategy, and last-updated date with a **Continue Journey** action. Creating another journey remains available, but PathPilot asks for confirmation before replacing the saved roadmap.

### Create a personalized journey

The learner defines a goal, starting level, timeline, weekly availability, existing skills, and preferred learning style. A live summary makes the constraints clear before generation begins.

![Create Journey form with learner profile inputs and live summary](docs/screenshots/createform.png)

### Planner → Critic → Revision

Initial generation is an explicit sequential workflow: Planner drafts, Critic audits feasibility and prerequisite order, and Revision returns the validated final plan. The Processing page is driven by flushed Server-Sent Events for each real stage start and validated completion; it does not mark stages complete with timers. These are orchestrated request stages, not autonomous background agents.

![Processing screen showing Planner, Critic, and Revision stages](docs/screenshots/processing.png)

### Roadmap overview, AI Coach, and learner progress

The hero preview above brings the core experience together: personalized AI Coach Insights, current progress, next action, estimated finish, feasibility, and earned achievements. It turns the generated plan into a journey the learner can continue over time.

### Compare Fast, Balanced, and Deep strategies

Learners can compare meaningful trade-offs in speed, workload, depth, risk, confidence, phase content, and project scope. Switching is deterministic and preserves completed-item credit.

![Fast Track, Balanced, and Deep Mastery roadmap comparison](docs/screenshots/alternative.png)

### Understand why each item matters

Explain Why gives contextual reasoning for a selected roadmap item, including its prerequisite role, career impact, and expected benefit, while keeping the roadmap visible.

![Explain Why panel with contextual roadmap recommendation guidance](docs/screenshots/explainwhy.png)

### Adapt without losing completed work

The replan panel captures changed time constraints and learner difficulty while making completed skills and milestones explicit. Completed work remains immutable; only unfinished work is eligible for revision.

![Adaptive Replanning panel with updated constraints and completed work](docs/screenshots/replanpanel.png)

The saved replan result clearly summarizes what changed, why it changed, and the updated workload, timeline, risk, and confidence without resetting progress or strategy selection.

### Learn with trusted resources

Each phase is grounded in a deterministic catalog of reputable providers. Recommendations explain their skill match and strategy fit rather than relying on generated or invented links.

![Trusted learning-resource recommendations matched to roadmap phases](docs/screenshots/resources.png)

### Export a professional roadmap

PathPilot generates a structured multi-page PDF containing the coach summary, progress, phases, projects, and recommended resources—not a screenshot of the webpage.

![Professional PathPilot AI roadmap PDF export preview](docs/screenshots/pdf.png)

### Share honestly and privately

Share & Export supports a concise summary, safe app link, copied roadmap summary, and PDF download. The UI makes clear that the full roadmap and saved progress remain local to the current browser.

![Share and Export dialog with summary, link, PDF, and privacy options](docs/screenshots/shareexport.png)

### Responsive on mobile

The same product story and staged AI workflow remain readable on a narrow mobile layout, with touch-friendly actions and no dependency on a desktop-only experience.

![Responsive mobile PathPilot AI landing experience](docs/screenshots/mobile.png)

## Core user flow

```mermaid
flowchart LR
    A["Profile"] --> B["Planner"] --> C["Critic"] --> D["Revision"]
    D --> E["Personalized Roadmap"] --> F["Track Progress"]
    F --> G["Explain Why"] --> H["Adaptive Replanning"]
    H --> E
```

## Key features

- **GPT-5.6 Planner → Critic → Revision** workflow using the OpenAI Responses API
- **Strict Structured Outputs** validated against the existing roadmap schema
- **Personalized AI Coach Insights** generated with the roadmap
- **Alternative Roadmaps:** Fast Track, Balanced, and Deep Mastery
- **Adaptive Replanning** that revises unfinished work while preserving completed items
- **Explain Why** for skills, milestones, phase projects, and suggested portfolio projects
- **Learner Memory** and browser-persistent local progress
- **Continue Journey** with validated direct-route and browser-restart restoration
- **Progress Tracking** with reversible skill and milestone completion
- **Journey Dashboard** with current status, estimated finish, and next action
- **Achievement Badges** derived deterministically from meaningful progress
- **Trusted Resource Recommendations** from a curated local catalog
- **Professional PDF Export** built as a document rather than a page screenshot
- **Share & Export:** Share Summary, Copy App Link, Copy Roadmap Summary, and Download PDF
- **Responsive, accessible UI** with keyboard support, focus management, status announcements, and reduced-motion handling

Share & Export does **not** create a cloud-hosted public roadmap. The app link opens PathPilot, while the full roadmap and saved progress remain local to the current browser.

## What makes PathPilot different

- The roadmap is critic-audited before delivery, rather than returned as an unchecked first response.
- Adaptive Replanning responds to changed time constraints without rerunning the full initial workflow.
- Completed items are immutable during replan validation and remain credited across strategy variants.
- Recommendations can be explained in their local roadmap context.
- Learners can compare explicit speed, depth, workload, risk, and conf

[README truncated for size]

## Detected evidence (automated analysis)

Indexed codebase: 158 recognized source files, 529 KB.
- C# (language) — detected in the code
- CSS (language) — detected in the code
- HTML (language) — detected in the code
- JavaScript (language) — detected in the code
- React (technology) — detected in the code
- TypeScript (language) — detected in the code
- OpenAI (technology) — claimed on Devpost, not found in the code
- Vercel (technology) — claimed on Devpost, not found in the code

## Codebase structure (from repository index)

### Files (120 of 256)

```
.gitignore
backend/PathPilot_AI/PathPilot_AI_API/appsettings.Development.json
backend/PathPilot_AI/PathPilot_AI_API/appsettings.json
backend/PathPilot_AI/PathPilot_AI_API/Controllers/RoadmapsController.cs
backend/PathPilot_AI/PathPilot_AI_API/Models/ExplainRoadmapRequest.cs
backend/PathPilot_AI/PathPilot_AI_API/Models/GenerateRoadmapRequest.cs
backend/PathPilot_AI/PathPilot_AI_API/Models/ReplanRoadmapRequest.cs
backend/PathPilot_AI/PathPilot_AI_API/Models/RoadmapGenerationProgress.cs
backend/PathPilot_AI/PathPilot_AI_API/Models/RoadmapResponse.cs
backend/PathPilot_AI/PathPilot_AI_API/PathPilot_AI_API.csproj
backend/PathPilot_AI/PathPilot_AI_API/PathPilot_AI_API.csproj.user
backend/PathPilot_AI/PathPilot_AI_API/PathPilot_AI_API.http
backend/PathPilot_AI/PathPilot_AI_API/Program.cs
backend/PathPilot_AI/PathPilot_AI_API/Prompts/AgentPrompts.cs
backend/PathPilot_AI/PathPilot_AI_API/Properties/launchSettings.json
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP1.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP1.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP10.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP10.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP11.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP11.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP2.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP2.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP3.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP3.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP4.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP4.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP5.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP5.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP6.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP6.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP7.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP7.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP8.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP8.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP9.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - FTP9.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy1.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy1.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy10.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy10.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy11.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy11.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy2.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy2.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy3.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy3.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy4.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy4.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy5.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy5.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy6.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy6.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy7.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy7.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy8.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy8.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy9.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Web Deploy9.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy1.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy1.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy10.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy10.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy11.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy11.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy2.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy2.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy3.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy3.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy4.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy4.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy5.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy5.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy6.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy6.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy7.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy7.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy8.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy8.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy9.pubxml
backend/PathPilot_AI/PathPilot_AI_API/Properties/PublishProfiles/pathpilot-ai-api-2026 - Zip Deploy9.pubxml.user
backend/PathPilot_AI/PathPilot_AI_API/Properties/ServiceDependencies/pathpilot-ai-api-2026 - Web Deploy/profile.arm.json
backend/PathPilot_AI/PathPilot_AI_API/Properties/ServiceDependencies/pathpilot-ai-api-2026 - Web Deploy10/profile.arm.json
backend/PathPilot_AI/PathPilot_AI_API/Properties/ServiceDependencies/pathpilot-ai-api-2026 - Web Deploy8/profile.arm.json
backend/PathPilot_AI/PathPilot_AI_API/Services/IReplanRoadmapService.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/IRoadmapExplanationService.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/IRoadmapService.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/MockRoadmapExplanationService.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/MockRoadmapService.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/OpenAIReplanRoadmapService.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/OpenAIResponsesClient.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/OpenAIRoadmapExplanationService.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/OpenAIRoadmapService.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/RoadmapGenerationException.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/RoadmapJsonSchemas.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/RoadmapTitleNormalizer.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/ServiceConfigurationException.cs
backend/PathPilot_AI/PathPilot_AI_API/Services/UnavailableAIService.cs
backend/PathPilot_AI/PathPilot_AI.sln
docs/ARCHITECTURE.md
docs/CODING_RULES.md
docs/DEMO_SCRIPT.md
docs/DEVPOST_SUBMISSION.md
docs/FINAL_RECORDING_CHECKLIST.md
docs/FINAL_SMOKE_TEST.md
docs/JUDGE_QUICK_GUIDE.md
docs/PROJECT_SPEC.md
docs/PROMPTS.md
docs/SCREENSHOT_GUIDE.md
docs/screenshots/README.md
docs/VIDEO_SHOT_LIST.md
frontend/path_pilot_AI/.gitignore
frontend/path_pilot_AI/eslint.config.js
frontend/path_pilot_AI/index.html
[136 more files omitted for size]
```

### Dependencies

- frontend/path_pilot_AI/package.json: @eslint/js@^10.0.1, @fortawesome/fontawesome-svg-core@^7.3.1, @fortawesome/free-regular-svg-icons@^7.3.1, @fortawesome/free-solid-svg-icons@^7.3.1, @fortawesome/react-fontawesome@^3.4.0, @types/react@^19.2.17, @types/react-dom@^19.2.3, @vitejs/plugin-react@^6.0.3, eslint@^10.6.0, eslint-plugin-react-hooks@^7.1.1, eslint-plugin-react-refresh@^0.5.3, globals@^17.7.0, jspdf@^4.2.1, playwright@^1.55.0, react@^19.2.7, react-dom@^19.2.7, react-router-dom@^7.18.1, vite@^8.1.1
- video/package.json: @remotion/cli@^4.0.0, @remotion/media@^4.0.0, @remotion/transitions@^4.0.0, @types/react@^19.0.0, @types/react-dom@^19.0.0, react@^19.0.0, react-dom@^19.0.0, remotion@^4.0.0, typescript@^5.7.0

### Recent commits (newest first)

- feat: finalize OpenAI Build Week submission
- Update: Document OpenAI's role in PathPilot AI development
- update: update README.md
- update: change mobile.png file
- update: include pdf missing file
- rm: remove roadmap.png file
- update: change adaptive image to roadmap
- fix: Implemented the saved-roadmap Landing experience and Updated documentation only
- fix: Fixed direct /roadmap restoration after browser restarts
- docs: add video setup without recordings
- upgrade: UX autofocus for goal input
- fix: Implemented the narrow article correction for grammar title
- fix: Implemented concise roadmap titles without changing the public API contract or adding AI calls
- update: Enhanced the active processing visuals without changing backend-driven behavior
- fix: animation in production
- fix: changing UX processing based on real backend flow
- docs: add video assets
- docs: add screenshots into README
- fix: finalize production generation timeout
- fix: extend production generation timeout

## Key source files (fetched from GitHub, selected and truncated for size)

### docs/PROJECT_SPEC.md

```markdown
# PathPilot AI

## Product Goal

PathPilot AI helps learners transform career or education goals into realistic, personalized learning roadmaps.

## Core Differentiator

The system does not generate a roadmap in one pass.

It uses an agentic workflow:

1. Planner Agent creates an initial roadmap.
2. Critic Agent reviews workload, prerequisites, sequencing, and feasibility.
3. Planner Agent revises the roadmap using the Critic's feedback.

## Target User

Students, self-learners, and career changers who know their goal but do not know how to reach it.

## User Inputs

- Current level
- Goal
- Target timeline
- Weekly available hours
- Existing skills

## Final Output

- Learning phases
- Skills
- Milestones
- Projects
- Weekly workload
- Risks
- Recommended adjustments

## MVP Screens

1. Landing page
2. Goal input form
3. Agent progress screen
4. Final roadmap page

## Tech Stack

Frontend:

- React
- Vite
- TypeScript
- Tailwind CSS

Backend:

- ASP.NET Core Web API
- C#

AI:

- OpenAI GPT-5.6
- OpenAI Responses API

## API

POST /api/roadmaps/generate

## Agent Workflow

Planner Agent
→ Critic Agent
→ Planner Revision
→ Structured JSON response

## Non-Goals

- Authentication
- Database
- Payments
- Chat
- Progress tracking
- Admin panel

```

### docs/PROMPTS.md

```markdown
# PathPilot AI - Prompt Library

## Overview

PathPilot AI uses a simple multi-agent workflow built on GPT-5.6.

Workflow:

Planner Agent
↓

Critic Agent
↓

Planner Revision

Each agent has a dedicated responsibility.

---

# Planner Agent

## Role

You are the Planner Agent for PathPilot AI.

Your responsibility is to transform a learner's goal into a realistic, personalized learning roadmap.

### User Profile

You will receive:

- Current level
- Career or learning goal
- Target timeline
- Weekly available hours
- Existing skills

### Requirements

Generate a roadmap that contains:

- Learning phases
- Skills
- Suggested projects
- Milestones
- Weekly workload
- Prerequisites

The roadmap should be:

- realistic
- actionable
- personalized
- beginner-friendly when appropriate

Return valid JSON only.

---

# Critic Agent

## Role

You are the Critic Agent.

Your responsibility is NOT to generate a roadmap.

Instead, review the roadmap produced by the Planner Agent.

Evaluate:

- timeline feasibility
- workload
- prerequisite order
- missing skills
- project difficulty
- measurable milestones

Return:

```json
{
  "riskLevel": "",
  "issues": [],
  "recommendedChanges": []
}
```

Return valid JSON only.

---

# Planner Revision Agent

## Role

You are the Planner Agent.

You now receive:

- learner profile
- original roadmap
- critic feedback

Revise the roadmap.

Requirements:

- Fix every issue raised by the Critic Agent.
- Keep the roadmap realistic.
- Preserve personalization.
- Improve sequencing when necessary.

Return valid JSON only.

---

# Output Rules

Every agent must:

- Never generate Markdown.
- Never generate explanations.
- Never generate code blocks.
- Return valid JSON only.

```

### video/package.json

```
{
  "name": "pathpilot-demo-video",
  "version": "1.0.0",
  "private": true,
  "scripts": {
    "studio": "remotion studio src/index.ts",
    "preview": "remotion preview src/index.ts",
    "render": "remotion render src/index.ts PathPilotDemo out/pathpilot-demo.mp4"
  },
  "dependencies": {
    "@remotion/cli": "^4.0.0",
    "@remotion/media": "^4.0.0",
    "@remotion/transitions": "^4.0.0",
    "react": "^19.0.0",
    "react-dom": "^19.0.0",
    "remotion": "^4.0.0"
  },
  "devDependencies": {
    "@types/react": "^19.0.0",
    "@types/react-dom": "^19.0.0",
    "typescript": "^5.7.0"
  }
}

```

### frontend/path_pilot_AI/package.json

```
{
  "name": "path-pilot-ai",
  "private": true,
  "version": "0.0.0",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "lint": "eslint .",
    "test": "node --test",
    "preview": "vite preview",
    "capture:video-assets": "node scripts/capture-video-assets.mjs"
  },
  "dependencies": {
    "@fortawesome/fontawesome-svg-core": "^7.3.1",
    "@fortawesome/free-regular-svg-icons": "^7.3.1",
    "@fortawesome/free-solid-svg-icons": "^7.3.1",
    "@fortawesome/react-fontawesome": "^3.4.0",
    "jspdf": "^4.2.1",
    "react": "^19.2.7",
    "react-dom": "^19.2.7",
    "react-router-dom": "^7.18.1"
  },
  "devDependencies": {
    "@eslint/js": "^10.0.1",
    "@types/react": "^19.2.17",
    "@types/react-dom": "^19.2.3",
    "@vitejs/plugin-react": "^6.0.3",
    "eslint": "^10.6.0",
    "eslint-plugin-react-hooks": "^7.1.1",
    "eslint-plugin-react-refresh": "^0.5.3",
    "globals": "^17.7.0",
    "playwright": "^1.55.0",
    "vite": "^8.1.1"
  }
}

```

### video/src/index.ts

```typescript
import {registerRoot} from 'remotion';
import {RemotionRoot} from './Root';
import './styles.css';

registerRoot(RemotionRoot);

```

### frontend/path_pilot_AI/src/main.jsx

```javascript
import { StrictMode } from 'react'
import { createRoot } from 'react-dom/client'
import { BrowserRouter } from 'react-router-dom'
import App from './App.jsx'
import './styles/global.css'

createRoot(document.getElementById('root')).render(
  <StrictMode>
    <BrowserRouter>
      <App />
    </BrowserRouter>
  </StrictMode>,
)

```

### frontend/path_pilot_AI/src/App.jsx

```javascript
import { Route, Routes, useLocation } from 'react-router-dom'
import AppLayout from './components/layout/AppLayout.jsx'
import CreateJourneyPage from './pages/CreateJourneyPage.jsx'
import LandingPage from './pages/LandingPage.jsx'
import ProcessingPage from './pages/ProcessingPage.jsx'
import RoadmapPage from './pages/RoadmapPage.jsx'

function App() {
  const location = useLocation()
  return (
    <Routes>
      <Route element={<AppLayout />}>
        <Route index element={<LandingPage />} />
        <Route path="create" element={<CreateJourneyPage key={location.state?.newJourneyResetId ?? 'create'} />} />
        <Route path="processing" element={<ProcessingPage />} />
        <Route path="roadmap" element={<RoadmapPage />} />
      </Route>
    </Routes>
  )
}

export default App

```

### video/remotion.config.ts

```typescript
import path from 'node:path';
import {Config} from '@remotion/cli/config';

Config.setPublicDir(path.resolve(process.cwd(), '../video-assets'));
Config.setVideoImageFormat('jpeg');
Config.setOverwriteOutput(true);

```

### video/src/types.ts

```typescript
export type SubtitleCue = {
  from: number;
  to: number;
  text: string;
};

export type SceneProps = {
  durationInFrames: number;
};

```

### frontend/path_pilot_AI/vite.config.js

```javascript
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

// https://vite.dev/config/
export default defineConfig({
  plugins: [react()],
})

```

[145 more indexed source files omitted to keep this export small. The full file list is in the Codebase structure section above.]