https://github.com/dragonscypher/autofile
๐ค AI-Powered Recruitment Assistant - Automate resume screening, ATS scoring, and interview generation with Next.js, Prisma, and Ollama
https://github.com/dragonscypher/autofile
ai ats nextjs15 ollama postgresql prisma reactjs recruitment tailwindcss typescript
Last synced: 3 months ago
JSON representation
๐ค AI-Powered Recruitment Assistant - Automate resume screening, ATS scoring, and interview generation with Next.js, Prisma, and Ollama
- Host: GitHub
- URL: https://github.com/dragonscypher/autofile
- Owner: dragonscypher
- License: mit
- Created: 2025-10-08T06:09:15.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-10-08T06:45:22.000Z (9 months ago)
- Last Synced: 2025-10-08T08:22:28.918Z (9 months ago)
- Topics: ai, ats, nextjs15, ollama, postgresql, prisma, reactjs, recruitment, tailwindcss, typescript
- Language: TypeScript
- Homepage:
- Size: 167 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# ๐ค Autofile - AI Recruitment Assist ๐ฏ Getting Started
## ๐ Project Structure
```
Autofile/
โโโ apps/
โ โโโ web/ # ๐ Main Next.js application
โ โโโ workers/ # โ๏ธ Background job processing
โ
โโโ packages/
โ โโโ ats/ # ๐ Resume scoring logic
โ โโโ llm/ # ๐ค AI provider integrations (Ollama)
โ โโโ utils/ # ๐ ๏ธ Helper functions (text extraction, parsing)
โ
โโโ prisma/ # ๐๏ธ Database schema
โโโ infra/ # ๐ณ Docker setup (PostgreSQL, Redis)
โโโ test-data/ # ๐ Sample data for testing
```
## ๐งช Testing it
### Prerequisites
- ๐ฆ Node.js
- ๐ฆ pnpm package manager (`npm install -g pnpm`)
- ๐ณ Docker Desktop (for PostgreSQL and Redis)
- ๐ค Ollama with llama3 (optional, for enhanced AI features)
### Quick Setup
[](https://www.typescriptlang.org/)
[](https://www.postgresql.org/)
[](https://www.prisma.io/)
[](https://opensource.org/licenses/MIT)
> A smart recruitment system that helps you screen resumes, shortlist candidates, and generate interview questions using AI.
## โจ What does it do?
Autofile streamlines your hiring process by:
- ๐ **Automatically scoring resumes** against job descriptions
- ๐ฏ **Shortlisting candidates** based on customizable thresholds
- ๐ฌ **Generating relevant interview questions** with unique keywords and model answers
- ๐ **Helping you evaluate candidates** systematically
- ๐ **Supporting multiple file formats** (PDF, DOC, DOCX, TXT)
Think of it as your AI-powered hiring assistant that handles the tedious parts of recruitment.
## ๐ Features
- โ
**Smart ATS Scoring** - AI-powered resume analysis with LLM or baseline algorithms
- โ
**File Upload Support** - PDF, DOC, DOCX, and TXT file handling
- โ
**Interview Generation** - Context-aware questions with realistic model answers
- โ
**Keyword Extraction** - Unique, relevant keywords per question (no duplicates!)
- โ
**Real-time Logging** - Comprehensive debugging and monitoring
- โ
**Monorepo Architecture** - Clean separation of concerns with Turborepo
- โ
**Type-Safe** - Full TypeScript implementation
- โ
**Production Ready** - Docker setup included
## ๐ฏ Getting Started
### What you'll need
- Node.js 18 or higher (I'm using 20)
- pnpm package manager
- Docker Desktop (for the database)
- Optionally: Ollama with llama3 for enhanced AI features
### Quick setup
1. **Install dependencies**
```bash
pnpm install
```
2. **Start the database**
```bash
cd infra
docker compose up -d db redis
```
3. **Set up the database schema**
```bash
pnpm prisma generate
pnpm prisma migrate dev --name init
```
4. **Build the packages**
```bash
pnpm -r build
```
5. **Start the dev server**
```bash
cd apps/web
pnpm dev
```
Open http://localhost:3000 and you're ready to go! ๐
## ๐ How it works
The workflow is intuitive and straightforward:
1. ๐ **Create a project** with your job description and requirements
2. ๐ค **Upload resumes** (PDF, DOC, DOCX, or TXT) or paste text
3. ๐๏ธ **Set a threshold** (e.g., 75%) for automatic filtering
4. ๐ฅ **Review shortlisted candidates** who meet your criteria
5. ๐ก **Generate interview questions** tailored to the role with AI
6. โญ **Score candidates** using keyword matching and manual evaluation
7. โ
**Select finalists** based on your cutoff score
## ๐ Project Structure
```
Autofile/
โโโ apps/
โ โโโ web/ # The main Next.js application
โ โโโ workers/ # Background job processing
โ
โโโ packages/
โ โโโ ats/ # Resume scoring logic
โ โโโ llm/ # AI provider integrations
โ โโโ utils/ # Helper functions
โ
โโโ prisma/ # Database schema
โโโ infra/ # Docker setup
โโโ test-data/ # Sample data for testing
```
## ๐งช Testing it out
I've included some mock data in the `test-data/` folder so you can try it without real resumes:
- ๐ One job description for a Senior Software Engineer role
- ๐ Five sample resumes with varying qualification levels
Just copy-paste the text into the application to see how it works!
## ๐ ๏ธ Tech Stack
Built with modern, reliable tools:
- **Next.js 14** - React framework with App Router
- **Prisma** + **PostgreSQL** - Type-safe ORM and database
- **Redis** - Caching and session management
- **Ollama** (optional) - Local AI inference with llama3
- **Tailwind CSS** - Utility-first styling
- **TypeScript** - Full type safety throughout
- **Turborepo** - Monorepo build system
- **Docker** - Containerized infrastructure
## โ๏ธ Environment Setup
Create a `.env.local` file in `apps/web/` with:
```env
# Database
DATABASE_URL="postgresql://user:pass@localhost:5432/autofile"
# Redis
REDIS_URL="redis://localhost:6379"
# NextAuth (generate a secret: openssl rand -base64 32)
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your-secret-here"
# Ollama (optional - for AI features)
OLLAMA_HOST="http://localhost:11434"
OLLAMA_MODEL="llama3"
```
> **โ ๏ธ Security Note:** Never commit `.env` files to version control! They are automatically ignored by `.gitignore`.
## ๐ Troubleshooting
**Database connection fails?**
Make sure Docker is running and the containers are up:
```bash
docker compose ps
```
**Ollama not found?**
No problem! The system falls back to a baseline TF-IDF algorithm that works great for most cases.
**Port 3000 already in use?**
You can change the port in the dev command:
```bash
next dev -p 3001
```
**Text extraction errors?**
TXT files are now fully supported. Check `TXT-FILE-FIX.md` for implementation details.
## ๐ Recent Improvements
- โ
**Interview Generation** - Unique keywords per question, no duplicates
- โ
**Realistic Model Answers** - Specific examples with metrics instead of templates
- โ
**TXT File Support** - Direct text extraction without external dependencies
- โ
**Enhanced Logging** - Comprehensive debugging throughout the application
- โ
**Custom Icons** - No external icon dependencies, faster load times
See `INTERVIEW-IMPROVEMENTS.md` and `CHANGES.md` for detailed documentation.
## ๐ฏ Roadmap
## ๐ฏ Roadmap
This is a working prototype with all core features implemented. Future enhancements could include:
- ๐ง Email notifications for candidates
- ๐ฅ Team collaboration features
- ๐ Integration with job boards (LinkedIn, Indeed)
- ๐น Video interview scheduling
- ๐ Advanced analytics dashboard
- ๐ Multi-language support
- ๐ Role-based access control
- ๐ฑ Mobile-responsive improvements
## ๐ค Contributing
Found a bug or have an idea? Contributions are welcome!
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
Please read `CONTRIBUTING.md` for details on our code of conduct and development process.
## ๐ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## ๐ Acknowledgments
- Built with [Next.js](https://nextjs.org/)
- Powered by [Ollama](https://ollama.ai/) for local AI inference
- Database management by [Prisma](https://www.prisma.io/)
- Icons created as custom SVG components
## ๐ Documentation
- `GETTING-STARTED.md` - Detailed setup guide
---
**Built with curiosity and lots of coffee โ**
*Automate your recruitment, focus on what matters - finding the right talent.*