# akshat-acharya/ai-driven-student-company-recommendation-system architecture

> Architecture diagram of the GitHub repository akshat-acharya/ai-driven-student-company-recommendation-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-06-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/akshat-acharya/ai-driven-student-company-recommendation-system
- Repository: https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system

## Overview

1. This is a Next.js App Router monorepo-style web application split into three main surfaces: public marketing pages, authenticated student dashboards, and authenticated company dashboards. Route groups under `app/(auth)` and `app/(dashboard)` define the primary UI boundary, while `app/api` contains the backend logic.

2. The public site is lightweight and informational: landing/home, about, features, how-it-works, onboarding, and post-auth handoff pages. These pages mainly introduce the product and route users into sign-in/sign-up and role selection flows.

3. Authentication is centered on NextAuth.js with Google OAuth, exposed through `app/api/auth/[...nextauth]`. A separate `app/api/register` and `app/api/user/role` indicate that user creation and role assignment are handled outside the OAuth provider, likely because the system distinguishes student vs company accounts after login.

4. The dashboard layout is role-aware. `app/(dashboard)/layout.tsx` wraps both student and company portals, with shared chrome components such as the sidebar, navbar, logout button, theme controls, and role modal. This suggests a common authenticated shell with role-specific content inside it.

5. The student subsystem includes profile, dashboard, jobs list, job detail, recommendations, and resume pages. UI components like `ApplyButton`, `StudentChat`, `resume-upload`, `skill-gap-card`, and `job-cards` show that students can upload a resume, inspect parsed profile data, chat with an AI assistant, browse jobs, and apply.

6. The company subsystem mirrors that structure with dashboard, jobs list, job detail, and profile pages. Its component set is more operational: creating/editing jobs, candidate comparison, applicant review, job actions, and company chat. This is the employer-side workflow for posting roles and evaluating candidates.

7. The API layer is the main service boundary and is split by domain. Student APIs cover dashboard, jobs, profile, recommendations, chat, and apply; company APIs cover dashboard, jobs, applications, profile, compare, generate-job, re-evaluate, and chat. This clean separation makes the backend act like two coordinated domains rather than one generic CRUD surface.

8. AI functionality is isolated in `lib/ai` and exposed through specialized routes such as resume parsing, job generation, matching, and test endpoints. The repo explicitly uses LangChain and locally hosted Ollama models, so AI calls are treated as an internal service dependency rather than a third-party SaaS integration.

9. The AI layer is used for structured extraction and explanation, not final ranking. `lib/ai/resumeParser.ts`, `matchScore.ts`, and `testModel.ts` indicate three distinct concerns: turning unstructured resumes into normalized data, generating explainable match context, and validating model connectivity. The README confirms the actual recommendation score remains deterministic and rule-based.

10. The matching engine is the core product logic. It compares student profiles against job requirements using skill overlap, CGPA thresholding, experience alignment, and domain relevance. Company views also distinguish applied candidates from recommended non-applicants, so the system supports both reactive and proactive candidate discovery.

11. Persistence is handled through Prisma in `prisma/schema.prisma` with a long migration history, backed by Supabase PostgreSQL. This indicates the data model has evolved around auth support, role handling, student table changes, job status changes, and application workflow expansion. `lib/prisma.ts` is the database access boundary.

12. File upload and resume handling are separate from the main profile flow. The presence of `app/api/resume/upload` and `app/api/resume/parse` shows a staged pipeline: upload PDF, extract text, parse into structured fields, then persist into the student profile/recommendation model.

13. The app has a notable UI component library boundary. Reusable primitives live in `components/ui`, while domain-specific components are grouped under `components/student`, `components/company`, and `components/landing`. This makes the architecture easy to diagram as shared design system plus two functional portals.

14. Supporting infrastructure includes theme handling, mobile responsiveness, and route protection. `providers.tsx`, `theme-provider`, `theme-toggle`, `use-mobile`, and `proxy.ts` point to client-side state wrapping and request gating around authenticated routes. Static assets are minimal, so most behavior is runtime-driven through Next.js server routes and Prisma-backed persistence.

Main entry points: [`app/(dashboard)/layout.tsx`](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/layout.tsx) (Dashboard shell), [`app/api/student/dashboard/route.ts`](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/student/dashboard/route.ts) (Student API), [`app/api/company/dashboard/route.ts`](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/company/dashboard/route.ts) (Company API), [`app/page.tsx`](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/page.tsx) (Home)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public site"]
  node_home["Home<br/>landing page<br/>[page.tsx]"]
  node_about["About<br/>content page<br/>[page.tsx]"]
  node_features["Features<br/>content page<br/>[page.tsx]"]
  node_howitworks["How it works<br/>content page<br/>[page.tsx]"]
end

subgraph group_auth["Auth flow"]
  node_onboarding["Onboarding<br/>handoff page<br/>[page.tsx]"]
  node_login["Login<br/>auth page<br/>[page.tsx]"]
  node_signup["Signup<br/>auth page<br/>[page.tsx]"]
  node_postauth["Post auth<br/>handoff page<br/>[page.tsx]"]
end

subgraph group_dashboard["Authenticated app"]
  node_dashlayout["Dashboard shell<br/>role layout<br/>[layout.tsx]"]
  node_studentdash["Student dashboard<br/>student view<br/>[page.tsx]"]
  node_studentjobs["Student jobs<br/>student view<br/>[page.tsx]"]
  node_studentjobdetail["Job detail<br/>student view<br/>[page.tsx]"]
  node_studentrecos["Recommendations<br/>student view<br/>[page.tsx]"]
  node_studentresume["Resume<br/>student view<br/>[page.tsx]"]
  node_companydash["Company dashboard<br/>company view<br/>[page.tsx]"]
  node_companyjobs["Company jobs<br/>company view<br/>[page.tsx]"]
  node_companyjobdetail["Job detail<br/>company view<br/>[page.tsx]"]
  node_companyprofile["Company profile<br/>company view<br/>[page.tsx]"]
end

subgraph group_api["API layer"]
  node_authapi["NextAuth<br/>auth api<br/>[route.ts]"]
  node_registerapi["Register<br/>user api<br/>[route.ts]"]
  node_roleapi["Role API<br/>user api<br/>[route.ts]"]
  node_studentapi["Student API<br/>domain api<br/>[route.ts]"]
  node_companyapi["Company API<br/>domain api<br/>[route.ts]"]
  node_resumeapi["Resume API<br/>pipeline api<br/>[route.ts]"]
  node_aiapidebug["AI test<br/>debug api<br/>[route.ts]"]
end

subgraph group_ai["AI services"]
  node_ailib["AI helpers<br/>ai library<br/>[matchScore.ts]"]
end

subgraph group_data["Data layer"]
  node_prisma[("Prisma<br/>db client<br/>[prisma.ts]")]
  node_schema["Schema<br/>data model<br/>[schema.prisma]"]
  node_supabase[("Supabase<br/>postgres<br/>[supabase.ts]")]
end

subgraph group_shared["Shared UI"]
  node_providers["Providers<br/>app wrapper<br/>[providers.tsx]"]
  node_navbar["Navbar<br/>chrome component<br/>[navbar.tsx]"]
  node_sidebar["Sidebar<br/>chrome component<br/>[sidebar.tsx]"]
  node_rolemodal["Role modal<br/>auth ui<br/>[role-modal.tsx]"]
  node_studentui["Student widgets<br/>domain ui<br/>[StudentChat.tsx]"]
end

node_home -->|"sign in"| node_login
node_home -->|"sign up"| node_signup
node_home -->|"learn more"| node_features
node_home -->|"about"| node_about
node_home -->|"how it works"| node_howitworks
node_signup -->|"create user"| node_registerapi
node_login -->|"oauth session"| node_authapi
node_authapi -->|"post-login role"| node_roleapi
node_postauth -->|"choose role"| node_rolemodal
node_postauth -->|"enter app"| node_dashlayout
node_dashlayout -->|"shell nav"| node_sidebar
node_dashlayout -->|"shell chrome"| node_navbar
node_dashlayout -->|"client state"| node_providers
node_dashlayout -->|"student portal"| node_studentdash
node_dashlayout -->|"company portal"| node_companydash
node_studentdash -->|"load data"| node_studentapi
node_studentjobs -->|"browse jobs"| node_studentapi
node_studentjobdetail -->|"job detail"| node_studentapi
node_studentrecos -->|"recommendations"| node_studentapi
node_studentresume -->|"upload parse"| node_resumeapi
node_studentresume -->|"profile tools"| node_studentui
node_companydash -->|"load data"| node_companyapi
node_companyjobs -->|"manage jobs"| node_companyapi
node_companyjobdetail -->|"job detail"| node_companyapi
node_companyprofile -->|"edit profile"| node_companyapi
node_studentapi -->|"read/write"| node_prisma
node_companyapi -->|"read/write"| node_prisma
node_resumeapi -->|"parse text"| node_ailib
node_studentapi -->|"match explain"| node_ailib
node_companyapi -->|"generate compare"| node_ailib
node_aiapidebug -->|"test model"| node_ailib
node_ailib -.->|"model shapes"| node_schema
node_schema -->|"stored in"| node_supabase

click node_home "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/page.tsx"
click node_about "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/about/page.tsx"
click node_features "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/features/page.tsx"
click node_howitworks "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/how-it-works/page.tsx"
click node_onboarding "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/onboarding/page.tsx"
click node_login "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(auth)/login/page.tsx"
click node_signup "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(auth)/signup/page.tsx"
click node_postauth "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/post-auth/page.tsx"
click node_dashlayout "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/layout.tsx"
click node_studentdash "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/student/dashboard/page.tsx"
click node_studentjobs "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/student/jobs/page.tsx"
click node_studentjobdetail "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/student/jobs/[jobId]/page.tsx"
click node_studentrecos "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/student/recommendations/page.tsx"
click node_studentresume "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/student/resume/page.tsx"
click node_companydash "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/company/dashboard/page.tsx"
click node_companyjobs "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/company/jobs/page.tsx"
click node_companyjobdetail "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/company/jobs/[jobId]/page.tsx"
click node_companyprofile "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/company/profile/page.tsx"
click node_authapi "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/auth/[...nextauth]/route.ts"
click node_registerapi "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/register/route.ts"
click node_roleapi "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/user/role/route.ts"
click node_studentapi "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/student/dashboard/route.ts"
click node_companyapi "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/company/dashboard/route.ts"
click node_resumeapi "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/resume/upload/route.ts"
click node_aiapidebug "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/ai-test/route.ts"
click node_ailib "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/lib/ai/matchScore.ts"
click node_prisma "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/lib/prisma.ts"
click node_schema "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/prisma/schema.prisma"
click node_supabase "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/lib/supabase.ts"
click node_providers "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/providers.tsx"
click node_navbar "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/components/navbar.tsx"
click node_sidebar "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/components/sidebar.tsx"
click node_rolemodal "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/components/role-modal.tsx"
click node_studentui "https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/components/student/StudentChat.tsx"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_home,node_about,node_features,node_howitworks,node_providers,node_navbar,node_sidebar,node_rolemodal,node_studentui toneBlue
class node_onboarding,node_login,node_signup,node_postauth toneAmber
class node_dashlayout,node_studentdash,node_studentjobs,node_studentjobdetail,node_studentrecos,node_studentresume,node_companydash,node_companyjobs,node_companyjobdetail,node_companyprofile toneMint
class node_authapi,node_registerapi,node_roleapi,node_studentapi,node_companyapi,node_resumeapi,node_aiapidebug toneRose
class node_ailib toneIndigo
class node_prisma,node_schema,node_supabase toneTeal
```

## Components

### Public site

Marketing and onboarding surfaces

- [Home](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/page.tsx): landing page · Public landing page · `app/page.tsx`
- [About](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/about/page.tsx): content page · Public information page · `app/about/page.tsx`
- [Features](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/features/page.tsx): content page · Feature overview page · `app/features/page.tsx`
- [How it works](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/how-it-works/page.tsx): content page · Explains product flow · `app/how-it-works/page.tsx`

### Auth flow

Login, signup, and post-auth handoff

- [Onboarding](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/onboarding/page.tsx): handoff page · Guides new users into the app · `app/onboarding/page.tsx`
- [Login](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(auth)/login/page.tsx): auth page · Sign-in surface · `app/(auth)/login/page.tsx`
- [Signup](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(auth)/signup/page.tsx): auth page · Account creation surface · `app/(auth)/signup/page.tsx`
- [Post auth](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/post-auth/page.tsx): handoff page · Role selection or redirect after authentication · `app/post-auth/page.tsx`

### Authenticated app

Role-aware student and company portals

- [Dashboard shell](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/layout.tsx): role layout · Shared authenticated layout for student and company portals · `app/(dashboard)/layout.tsx`
- [Student dashboard](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/student/dashboard/page.tsx): student view · Student overview page · `app/(dashboard)/student/dashboard/page.tsx`
- [Student jobs](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/student/jobs/page.tsx): student view · Student job listing page · `app/(dashboard)/student/jobs/page.tsx`
- [Job detail](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/student/jobs/[jobId]/page.tsx): student view · Student job detail page · `app/(dashboard)/student/jobs/[jobId]/page.tsx`
- [Recommendations](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/student/recommendations/page.tsx): student view · Student match recommendations · `app/(dashboard)/student/recommendations/page.tsx`
- [Resume](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/student/resume/page.tsx): student view · Resume and profile management · `app/(dashboard)/student/resume/page.tsx`
- [Company dashboard](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/company/dashboard/page.tsx): company view · Employer overview page · `app/(dashboard)/company/dashboard/page.tsx`
- [Company jobs](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/company/jobs/page.tsx): company view · Employer job listing page · `app/(dashboard)/company/jobs/page.tsx`
- [Job detail](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/company/jobs/[jobId]/page.tsx): company view · Employer job detail page · `app/(dashboard)/company/jobs/[jobId]/page.tsx`
- [Company profile](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/(dashboard)/company/profile/page.tsx): company view · Employer profile page · `app/(dashboard)/company/profile/page.tsx`

### API layer

Route handlers grouped by domain

- [NextAuth](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/auth/[...nextauth]/route.ts): auth api · OAuth and session route · `app/api/auth/[...nextauth]/route.ts`
- [Register](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/register/route.ts): user api · User creation endpoint · `app/api/register/route.ts`
- [Role API](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/user/role/route.ts): user api · Role assignment endpoint · `app/api/user/role/route.ts`
- [Student API](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/student/dashboard/route.ts): domain api · Student dashboard, jobs, profile, recommendations, chat, and apply routes · `app/api/student/dashboard/route.ts`
- [Company API](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/company/dashboard/route.ts): domain api · Company dashboard, jobs, applications, profile, compare, generate, reevaluate, and chat routes · `app/api/company/dashboard/route.ts`
- [Resume API](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/resume/upload/route.ts): pipeline api · Resume upload and parsing routes · `app/api/resume/upload/route.ts`
- [AI test](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/api/ai-test/route.ts): debug api · Connectivity test route for model validation · `app/api/ai-test/route.ts`

### AI services

Local model and extraction helpers

- [AI helpers](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/lib/ai/matchScore.ts): ai library · Resume parsing, matching, and model test helpers · `lib/ai/matchScore.ts`

### Data layer

Persistence and external backend services

- [Prisma](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/lib/prisma.ts): db client · Database access boundary · `lib/prisma.ts`
- [Schema](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/prisma/schema.prisma): data model · Prisma schema and migration history · `prisma/schema.prisma`
- [Supabase](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/lib/supabase.ts): postgres · Hosted PostgreSQL backend · `lib/supabase.ts`

### Shared UI

Reusable chrome, design system, and portal widgets

- [Providers](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/app/providers.tsx): app wrapper · Client providers and global state wrappers · `app/providers.tsx`
- [Navbar](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/components/navbar.tsx): chrome component · Top navigation for authenticated areas · `components/navbar.tsx`
- [Sidebar](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/components/sidebar.tsx): chrome component · Primary navigation shell · `components/sidebar.tsx`
- [Role modal](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/components/role-modal.tsx): auth ui · Role selection dialog · `components/role-modal.tsx`
- [Student widgets](https://github.com/akshat-acharya/ai-driven-student-company-recommendation-system/blob/main/components/student/StudentChat.tsx): domain ui · Resume upload, chat, apply, profile, and matching widgets · `components/student/StudentChat.tsx`

## Connections

- Home → Login: sign in · Public entry to authentication
- Home → Signup: sign up · Public entry to account creation
- Home → Features: learn more · Marketing navigation
- Home → About: about · Marketing navigation
- Home → How it works: how it works · Explains product flow
- Signup → Register: create user · Creates the app user record after signup
- Login → NextAuth: oauth session · Google OAuth and session handling
- NextAuth → Role API: post-login role · Role resolution after authentication
- Post auth → Role modal: choose role · Role selection handoff
- Post auth → Dashboard shell: enter app · Routes into authenticated shell
- Dashboard shell → Sidebar: shell nav · Shared authenticated navigation
- Dashboard shell → Navbar: shell chrome · Shared authenticated top bar
- Dashboard shell → Providers: client state · Theme and client provider wrapping
- Dashboard shell → Student dashboard: student portal · Role-specific student surface
- Dashboard shell → Company dashboard: company portal · Role-specific company surface
- Student dashboard → Student API: load data · Fetches student dashboard data
- Student jobs → Student API: browse jobs · Uses student job endpoints
- Job detail → Student API: job detail · Loads a specific job through the student domain API
- Recommendations → Student API: recommendations · Fetches ranked job matches
- Resume → Resume API: upload parse · Uploads and parses resumes
- Resume → Student widgets: profile tools · Uses resume and profile widgets
- Company dashboard → Company API: load data · Fetches company dashboard data
- Company jobs → Company API: manage jobs · Uses company job endpoints
- Job detail → Company API: job detail · Loads employer job detail and related actions
- Company profile → Company API: edit profile · Company profile persistence and updates
- Student API → Prisma: read/write · Student domain persistence
- Company API → Prisma: read/write · Company domain persistence
- Resume API → AI helpers: parse text · Structured extraction from uploaded resumes
- Student API → AI helpers: match explain · Recommendation and chat support
- Company API → AI helpers: generate compare · Job generation, candidate comparison, and reevaluation
- AI test → AI helpers: test model · Model connectivity and validation
- AI helpers → Schema: model shapes · Uses persisted data model for matching and profiles
- Schema → Supabase: stored in · Prisma schema backed by hosted PostgreSQL
