Welcome to GUC Resume Enhancer
Relevant source files
The following files were used as context for generating this wiki page:
- README.md
- INTEGRATION_GUIDE.md
- SUPABASE_SETUP.md
- schema.prisma
- api/resumes/upload/route.ts
- api/enhance-resume/[id]/route.ts
- enhance/[id]/_components/enhance-interface.tsx
- dashboard/_components/upload-section.tsx
- api-keys/_components/api-key-manager.tsx
- api/download-resume/[id]/route.ts
- history/_components/history-list.tsx
- page.tsx
- dashboard/page.tsx
- settings/_components/diagnostics.tsx
- admin/resumes/page.tsx
GUC Resume Enhancer is an AI-powered platform designed to help job seekers optimize their resumes. It leverages multiple AI providers, including OpenAI, Anthropic, and Google Gemini, to offer various enhancement types. The application is built using a modern tech stack featuring Next.js, TypeScript, and Prisma, with Supabase for database and file storage.
Sources: README.md:3-5, INTEGRATION_GUIDE.md:5-9
The system supports two primary user experiences: a "Full Mode" with user authentication, resume history, and API key management, and a "Light Mode" for quick, anonymous enhancements. Users can upload PDF or DOCX files, view a side-by-side comparison of the original and AI-enhanced versions, and download the final product as a professional PDF.
Sources: README.md:23-30, page.tsx:102-105
System Architecture
The application follows a client-server architecture built on Next.js. The frontend is developed with React, TypeScript, and Tailwind CSS, while the backend API routes handle business logic, database interactions via Prisma, and communication with external AI services. Supabase is used for both the PostgreSQL database and private file storage.
Sources: README.md:34-52, INTEGRATION_GUIDE.md:5-9, SUPABASE_SETUP.md:3-5
This diagram illustrates the high-level architecture of the GUC Resume Enhancer.
Core Features
The platform provides a suite of features to streamline the resume optimization process.
| Feature | Description | Source Files |
|---|---|---|
| AI-Powered Enhancements | Utilizes OpenAI, Anthropic, and Google Gemini to rewrite and improve resume content. | README.md:10 |
| Multiple Enhancement Types | Offers specific enhancements like "Skills & Certifications", "Project Experience", and "Client Success & Quality". | enhance/[id]/_components/enhance-interface.tsx:68-88 |
| File Support | Users can upload resumes in both PDF and DOCX formats. | README.md:25, api/resumes/upload/route.ts:71-77 |
| Side-by-Side Comparison | A dual-pane view allows users to compare the original resume with the enhanced version. | enhance/[id]/_components/enhance-interface.tsx:441-558 |
| PDF Export | Enhanced resumes can be downloaded as a cleanly formatted PDF document. | README.md:26, api/download-resume/[id]/route.ts |
| Resume History | Authenticated users can track and access all their past enhancement sessions. | README.md:27, history/_components/history-list.tsx |
| User-Managed API Keys | Users can securely add and manage their own API keys for the AI providers. | README.md:30, api-keys/_components/api-key-manager.tsx |
Database Schema
The application uses a PostgreSQL database managed by the Prisma ORM. The schema is designed to store user data, resumes, enhancements, and encrypted API keys.
Sources: schema.prisma
The following ER diagram shows the relationships between the main database models.
Sources: schema.prisma
Key Data Models
Resume Model
Stores metadata and extracted text content for each uploaded resume.
| Field | Type | Description |
|---|---|---|
id | String | Unique identifier (CUID). |
userId | String | Foreign key linking to the User model. |
originalName | String | The original filename of the uploaded document. |
cloudStoragePath | String | The path to the file in Supabase Storage. |
fileType | String | The type of the file, e.g., 'pdf' or 'docx'. |
originalContent | String | The raw text extracted from the document. |
status | String | The current status (e.g., uploaded, processing). |
| Sources: schema.prisma:100-111 |
ResumeEnhancement Model
Stores the result of an AI enhancement for a specific resume.
| Field | Type | Description |
|---|---|---|
id | String | Unique identifier (CUID). |
resumeId | String | Foreign key linking to the Resume model. |
enhancementType | String | The type of enhancement applied (e.g., skills_certifications). |
enhancedContent | String | The AI-generated resume content in Markdown format. |
llmProvider | String | The AI provider used (e.g., openai, anthropic). |
status | String | The status of the enhancement job (processing, completed, error). |
| Sources: schema.prisma:113-125 |
Key Workflows
1. Resume Upload
This workflow handles file submission, text extraction, and storage. The process begins when a user uploads a file through the dashboard.
This sequence diagram shows the resume upload process.
2. AI Enhancement
Once a resume is uploaded, the user can select an enhancement type to be performed by an AI model.
This sequence diagram illustrates the AI enhancement workflow.
API Endpoints
The application exposes several API endpoints to manage resumes and enhancements.
| Method | Endpoint | Description |
|---|---|---|
POST | /api/resumes/upload | Uploads a new resume, extracts its content, and saves it to storage and the database. |
POST | /api/enhance-resume/[id] | Triggers an AI enhancement for a specific resume using the user's active API key. |
GET | /api/download-resume/[id] | Generates and returns a PDF version of an enhanced resume. |
GET | /api/api-keys | Lists the current user's configured AI provider API keys. |
POST | /api/api-keys | Adds a new, encrypted API key for a user. |
DELETE | /api/api-keys/[id] | Deletes a user's API key. |
| Sources: README.md:120-137, INTEGRATION_GUIDE.md:32-44 |
Configuration
Supported AI Providers and Models
Users can configure API keys for several major AI providers. The system supports specific models for each.
| Provider | Supported Models |
|---|---|
| OpenAI | gpt-4o, gpt-4o-mini, gpt-4-turbo |
| Anthropic | claude-3-5-sonnet, claude-3-opus, claude-3-sonnet |
| Google Gemini | gemini-1.5-pro, gemini-1.5-flash |
| Sources: README.md:141-157 |
Enhancement Types
The following enhancement types are available for users to choose from. Each type uses a specific prompt to guide the AI.
- Skills & Certifications: Highlights trade skills, licenses, and certifications.
- Project Experience: Showcases completed work and technical expertise using strong action verbs.
- Client Success & Quality: Emphasizes customer satisfaction and quality of work.
Sources: enhance/[id]/_components/enhance-interface.tsx:68-88, api/enhance-resume/[id]/route.ts:12-16
Environment Variables
The application requires several environment variables for core functionality.
| Variable | Description | Example |
|---|---|---|
DATABASE_URL | Connection string for the PostgreSQL database. | postgresql://... |
NEXT_PUBLIC_SUPABASE_URL | The public URL for the Supabase project. | https://...supabase.co |
SUPABASE_SERVICE_ROLE_KEY | The secret service role key for Supabase. | ey... |
NEXTAUTH_SECRET | A secret key for NextAuth session signing. | your-secret-key |
ENCRYPTION_KEY | A 32-character key for encrypting user API keys. | your-32-character-encryption-key |
| Sources: SUPABASE_SETUP.md:61-76, README.md:66-82 |