How artaxerxesnazareno/ovia works
This is a Laravel/Inertia career-guidance application. A signed-in user completes a question-based assessment; the backend saves responses, queues processing, uses an LLM to generate career/course recommendations and a roadmap, then presents results and dashboard views. The graph separates the web experience, assessment processing, guidance data, and account access. Some routes and frontend page wiring were not excerpted, so uncertain links are omitted; the LLM provider call and recommendation persistence are directly visible in sampled source.
Main entry points: AssessmentController.php Assessment handler · ProcessAssessmentJob.php Assessment job · RecommendationService.php Recommendation writer · Assessment.php Assessment
Components 25
User experience
- Assessment screens
resources/js/pages/Assessment.tsx - Question flow
resources/js/pages/Questions.tsx - Processing view
resources/js/pages/Processing.tsx - Results
resources/js/pages/Results.tsx - Course details
resources/js/pages/ResultCourseDetails.tsx - Dashboard
resources/js/pages/dashboard.tsx
Assessment processing
- Assessment handler
app/Http/Controllers/AssessmentController.php - Assessment job
app/Jobs/ProcessAssessmentJob.php - Prompt builder
app/Services/Assessment/AssessmentPromptService.php - LLM adapter
app/Services/LLM/LLMService.php - Recommendation writer
app/Services/Assessment/RecommendationService.php
Career guidance data
- Assessment
app/Models/Assessment.php - Assessment responses
app/Models/AssessmentResponse.php - Question bank
app/Models/Question.php - Course catalog
app/Models/Course.php - Career paths
app/Models/CareerPath.php - Recommendations
app/Models/Recommendation.php - Roadmaps
app/Models/Roadmap.php - Course catalog seed
database/seeders/CoursesSeeder.php - Question seed
database/seeders/QuestionsSeeder.php
Accounts and access
- Authentication routes
routes/auth.php - Session controller
app/Http/Controllers/Auth/AuthenticatedSessionController.php - User account
app/Models/User.php
Other components
- User
- LLM provider
Connections 23
- User → Assessment screens: starts assessment
- Assessment screens → Question flow: continues to
- Question flow → Assessment handler: submits answers
- Assessment handler → Question bank: loads questions
app/Http/Controllers/AssessmentController.php - Assessment handler → Assessment responses: reads and saves
app/Http/Controllers/AssessmentController.php - Assessment handler → Assessment: loads assessment
app/Http/Controllers/AssessmentController.php - Assessment handler → Assessment job: dispatches processing
app/Http/Controllers/AssessmentController.php - Assessment job → Assessment: loads assessment
app/Jobs/ProcessAssessmentJob.php - Assessment job → Prompt builder: builds prompt
app/Jobs/ProcessAssessmentJob.php - Assessment job → LLM adapter: requests generation
app/Jobs/ProcessAssessmentJob.php - Assessment job → Recommendation writer: saves guidance
app/Jobs/ProcessAssessmentJob.php - LLM adapter → LLM provider: sends HTTP request
app/Services/LLM/LLMService.php - Recommendation writer → Course catalog: matches courses
app/Services/Assessment/RecommendationService.php - Recommendation writer → Recommendations: creates recommendations
app/Services/Assessment/RecommendationService.php - Recommendation writer → Roadmaps: creates roadmaps
app/Services/Assessment/RecommendationService.php - User → Results: views results
- User → Dashboard: opens dashboard
- User → Authentication routes: authenticates
- Authentication routes → Session controller: routes sessions
routes/auth.php - Session controller → User account: checks account role
app/Http/Controllers/Auth/AuthenticatedSessionController.php - Assessment → Recommendations: has recommendations
app/Models/Assessment.php - Recommendations → Roadmaps: has roadmap
app/Models/Recommendation.php - Course catalog → Career paths: has career paths
app/Models/Course.php