A Next.js 15 platform offering two powerful AI-powered services: Podcast Generator, CV Reviewer and Job Application Tailor. Create professional podcasts, get AI-powered CV analysis to match with job descriptions or Tailor your CV with the Job Description with a Cover letter.
CareerCastAI is a comprehensive web platform that provides three distinct AI-powered services:
Transform simple prompts into professional podcast episodes. The platform generates realistic debate-style podcasts between two AI voices, creates accompanying PDF briefs, and manages the entire workflow from prompt to publication.
Upload your CV and job description to get AI-powered analysis. The system evaluates your CV against job requirements, provides match percentage, identifies strengths and weaknesses, and offers actionable recommendations to improve your job application.
Upload your CV and job description to generate a job-specific application. The system tailors your CV and optional cover letter by rephrasing, reorganizing, and optimizing existing content for ATS systems β without fabricating experience. Get role-aligned documents, match score improvements, and detailed explanations of every change.
- π€ AI-Powered Content Generation: Transform simple prompts into full podcast episodes
- π€ Multiple Voice Options: Choose from various AI voices for realistic conversations
- π Automatic PDF Generation: Get detailed briefs and summaries automatically
- π¨ Image Generation: AI-generated cover images using DALL-E
- β±οΈ Customizable Duration: Create 1, 5, 10, or 20-minute podcasts
- ποΈ Voice Speed Control: Adjustable playback speed
- π AI-Powered Analysis: Analyzes CVs against job descriptions
- π― Match Scoring: Provides percentage match and detailed feedback
- πͺ Strengths Identification: Highlights your key qualifications
β οΈ Weakness Detection: Identifies areas for improvement- π Actionable Recommendations: Suggests specific improvements
- π Missing Skills Detection: Identifies critical skills gaps
- π Experience Assessment: Compares required vs. actual experience
- π― Job-Specific CV Tailoring: Customize your CV for each job description without rewriting from scratch
- βοΈ Smart Content Rewriting: Rephrases summaries and experience using role-relevant language.
- π Skills Reordering & Emphasis: Highlights the most relevant skills for the target role
- π€ ATS Optimization: Integrates job keywords naturally to improve ATS compatiblity
- π Cover Letter Generation: Create tailored cover letters with customizable tone and length
- π Before & After Match Scores: See measurable improvement in job alignment
- π Keyword Gap Analysis: Identifies missing or underutilized job-critical keywords
- π§Ύ Change Tracking & Transperency: Shows exactly what was changed and why
- π Authenticity Guaranteed: No fabricated skills or experience - strictly CV-based
- βοΈ Custom Tailoring Controls: Lock sections, adjust focus, and control optimization depth
- π Secure Authentication: Better Auth with role-based access control
- π³ Subscription Management: Free and Pro tiers with Polar integration
- π― Admin Dashboard: User management and analytics
- π Dark Mode: Full dark mode support
- π± Responsive Design: Mobile-first approach
- π Credential Management: Securely store and manage OpenAI API keys
- Next.js 15 (App Router) - React framework
- React 19 - UI library
- TypeScript - Type safety
- Tailwind CSS v4 - Styling
- Radix UI - Accessible components
- TanStack Query v5 - Data fetching & caching
- Framer Motion - Animations
- Sonner - Toast notifications
- Next.js API Routes - Server endpoints
- tRPC v11 - Type-safe APIs
- Prisma ORM - Database toolkit
- PostgreSQL - Database
- Better Auth - Authentication
- Inngest - Background job processing
- OpenAI - GPT-4, TTS, DALL-E
- UploadThing - File storage
- Polar - Subscription management
- Sentry - Error tracking
- Upstash - Rate limiting (Redis)
careercast-ai/
βββ app/ # Next.js App Router
β βββ (auth)/ # Authentication routes
β β βββ sign-in/
β β βββ sign-up/
β βββ (community)/ # Community features
β β βββ community/
β β βββ contact/
β β βββ how-it-works/
β βββ api/ # API endpoints
β β βββ auth/
β β βββ generate/
β β βββ generate-image/
β β βββ trpc/
β β βββ uploadthing/
β βββ podcast/ # Podcast Generator routes
β βββ reviewer/ # CV Reviewer routes
β βββ layout.tsx # Root layout
βββ components/ # React components
β βββ ui/ # Reusable UI components (Radix)
β βββ podcast-form/ # Podcast creation forms
β βββ cv-reviwer/ # CV review components
β βββ home/ # Homepage components
β βββ ...
βββ actions/ # Server actions
β βββ index.ts # AI helpers (text, TTS, summary, image)
β βββ cv-reviewer.ts # CV analysis logic
βββ trpc/ # tRPC setup
β βββ routers/ # API routers
β βββ client.tsx # Client setup
β βββ init.ts # Server setup
βββ utils/ # Utility functions
β βββ auth.ts # Auth configuration
β βββ db.ts # Prisma client
β βββ uploadthing.ts # UploadThing client
β βββ pdf-utils.ts # PDF generation
βββ lib/ # Shared libraries
β βββ encryption.ts # Credential encryption
β βββ ratelimit.ts # Rate limiting
β βββ utils.ts # Helper functions
βββ prisma/ # Database
β βββ schema.prisma # Database schema
β βββ migrations/ # Migration files
βββ features/ # Feature-level code
β βββ create-podcast/
β βββ subscriptions/
βββ hooks/ # Custom React hooks
βββ public/ # Static assets
- Node.js 20+
- PostgreSQL database
- OpenAI API Key
- UploadThing Account
- Polar Account (for subscriptions)
-
Clone the repository
git clone <repository-url> cd careercast-ai
-
Install dependencies
npm install # or pnpm install -
Set up environment variables
cp .env.example .env
Fill in the required values in
.env:# Database DATABASE_URL="postgresql://user:password@localhost:5432/dbname" # Authentication AUTH_SECRET="your-secret-key" AUTH_URL="http://localhost:3000" # OpenAI OPENAI_API_KEY="sk-..." # UploadThing UPLOADTHING_SECRET="sk_..." UPLOADTHING_APP_ID="..." # Polar (Subscriptions) POLAR_ACCESS_TOKEN="..." POLAR_WEBHOOK_SECRET="..." # Sentry (Optional) SENTRY_DSN="..." SENTRY_AUTH_TOKEN="..." # Upstash (Rate Limiting) UPSTASH_REDIS_REST_URL="..." UPSTASH_REDIS_REST_TOKEN="..."
-
Run database migrations
npx prisma migrate dev # or for production npx prisma migrate deploy -
Generate Prisma Client
npx prisma generate
-
Start development server
npm run dev
Open http://localhost:3000 in your browser.
npm run devnpm run build
npm startnpm run dev- Start development servernpm run build- Build for productionnpm start- Start production servernpm run lint- Run ESLintnpx prisma studio- Open Prisma Studio (database GUI)
- User fills out podcast form (title, description, voices, duration)
- User selects credential (OpenAI API key)
- User generates/selects cover image
- Form submission triggers
createPodcasttRPC mutation - Inngest job processes:
- Generates script via OpenAI
- Generates audio via TTS
- Creates PDF brief
- Uploads files to UploadThing
- Saves to database
- User receives notification with links
- Upload CV: User uploads their CV in PDF format
- Select Credential: User chooses their OpenAI API credential
- Paste Job Description: User pastes the complete job description
- AI Analysis: System analyzes the match and provides:
- Match Percentage: Overall compatibility score (0-100%)
- Match Verdict: Boolean indicating if candidate is a good fit
- Matched Skills: Skills from job description found in CV
- Missing Skills: Critical skills not found in CV
- Strengths: 4-6 specific strengths with evidence
- Weaknesses: 3-5 areas where CV falls short
- Recommendations: 5-7 actionable improvements
- Experience Match: Comparison of required vs. actual experience
- Key Highlights: Standout achievements from CV
- Review Results: User receives comprehensive analysis report
- Upload CV: User uploads their CV in PDF format. The system extracts and structures the text for safe, non-fabricated tailoring
- Paste Job Description User pastes the full job description they want to apply for.
- Select AI Provider & Credential User chooses an AI Provider (OpenAI or Gemini) and selects or adds their API credential
- Choose Tailoring Options
User customizes how the application should be tailored:
- Enable/Disable CV tailoring
- Enable optional cover letter generation
- Select cover letter tone and length (Pro)
- Optimize for ATS
- Lock specific CV sections (education, certifications, etc.)
- Specify target role, company type, and seniority level
- Submit Tailoring Request
From submission triggers:
tailorCVFree(Free tier - limited tailoring)- or
tailorCVPro(Pro tier - full tailoring)
- AI Tailoring Process
The system performs
- Job-specific CV rewriting and reordering
- Natural keyword integration for ATS system
- Skills prioritization by relevance
- Optional cover letter generation
- Match score calculation (before vs after)
- Detailed change tracking and explanations (All changes strictly based on original CV content - no fabrication)
- Validation & Safety Checks
- Content is validated against the original CV
- Fabrication patterns are detected and flagged
- Locked sections remain unchanged
- Results Delivery
User receives:
- Tailored CV sections
- Optional cover letter
- Match score improvement analysis
- ATS optimization report
- Keyword usage and gap analysis
- Clear summary of all changes made
- Upgrade Prompt (Free Tier)
Free users see:
- Applied limitations
- Unlocked Pro features
- Upgrade recommendation based on detected gaps
getHomePodcast- Get featured podcastsgetPodcastsWithPagination- Paginated podcast listsinglePodcast- Get single podcast details
getUser- Get current user profileupdateUser- Update user profilegetCredential- Get user credentialsaddCredentials- Add new credentialdeleteCredential- Delete credentialcreatePodcast- Create new podcast (Podcast Generator)changePodcastStatus- Toggle public/private
generateImage- Generate cover image (Podcast Generator)generateCVReview- Analyze CV (CV Reviewer Pro)
allUsers- Get all usersadminDashboardStats- Dashboard statisticsdeleteUser- Delete usergetUserByAdmin- Get user detailsgetUserPodcastsPublic- Get user's public podcasts
POST /api/generate- Generate podcast (legacy)POST /api/generate-image- Generate image (legacy)POST /api/uploadthing- UploadThing file routerPOST /api/auth/*- Better Auth endpointsPOST /api/trpc/*- tRPC HTTP handlerPOST /api/polar-webhook- Polar subscription webhooksPOST /api/inngest- Inngest webhook
- User - User accounts, subscriptions, trials
- Podcast - Generated podcasts with metadata (Podcast Generator)
- Credential - Encrypted API keys
- CVReviewer - CV review results (CV Reviewer)
- Session - User sessions
- Account - OAuth accounts
See prisma/schema.prisma for full schema.
- β Authentication with Better Auth
- β Role-based access control (USER, ADMIN)
- β Input validation with Zod
- β Rate limiting with Upstash
- β Credential encryption with Cryptr
- β Protected API routes
- β CSRF protection
- β Error tracking with Sentry
Podcast Generator:
- Create AI-generated podcasts
- Generate cover images
- Manage podcast library
- Share podcasts
- Download PDF briefs
CV Reviewer:
- Upload and analyze CVs
- Get match percentage
- Receive improvement recommendations
- Track review history
Platform:
- Manage credentials
- Edit profile
- Subscription management
- View usage statistics
- User management
- Analytics dashboard
- Content moderation
- Subscription management
- Podcast Generator: 3 trial podcasts
- CV Reviewer: Not available
- Podcast Generator: Unlimited podcasts
- CV Reviewer: Unlimited CV reviews
- Image Generation: Access to DALL-E image generation
- Priority Support: Faster processing
Currently, the project does not include automated tests. Recommended additions:
- Unit Tests: Vitest or Jest
- Integration Tests: Testing Library
- E2E Tests: Playwright or Cypress
See .env.example for all required variables.
Prisma Client not found
npx prisma generateUploadThing uploads failing
- Check
UPLOADTHING_SECRETandUPLOADTHING_APP_ID - Verify file size limits
OpenAI API errors
- Verify API key is valid
- Check rate limits
- Ensure model names are correct
Database connection issues
- Verify
DATABASE_URLis correct - Check PostgreSQL is running
- Run migrations:
npx prisma migrate dev
CV Review not working
- Ensure you have CV Reviewer Pro subscription
- Verify credential is valid
- Check PDF format is correct
This is a public project. For questions or suggestions, please contact the development team.
- OpenAI for AI capabilities
- UploadThing for file storage
- Radix UI for accessible components
- Next.js team for the amazing framework