{"id":31693818,"url":"https://github.com/dragonscypher/autofile","last_synced_at":"2026-04-05T08:33:11.569Z","repository":{"id":318610991,"uuid":"1072007032","full_name":"dragonscypher/Autofile","owner":"dragonscypher","description":"🤖 AI-Powered Recruitment Assistant - Automate resume screening, ATS scoring, and interview generation with Next.js, Prisma, and Ollama","archived":false,"fork":false,"pushed_at":"2025-10-08T06:45:22.000Z","size":171,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-08T08:22:28.918Z","etag":null,"topics":["ai","ats","nextjs15","ollama","postgresql","prisma","reactjs","recruitment","tailwindcss","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dragonscypher.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":null},"created_at":"2025-10-08T06:09:15.000Z","updated_at":"2025-10-08T06:45:25.000Z","dependencies_parsed_at":"2025-10-08T08:23:20.625Z","dependency_job_id":"1047ec3d-17ab-423c-8b07-5245ef5495e8","html_url":"https://github.com/dragonscypher/Autofile","commit_stats":null,"previous_names":["dragonscypher/autofile"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/dragonscypher/Autofile","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonscypher%2FAutofile","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonscypher%2FAutofile/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonscypher%2FAutofile/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonscypher%2FAutofile/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dragonscypher","download_url":"https://codeload.github.com/dragonscypher/Autofile/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonscypher%2FAutofile/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278972328,"owners_count":26078017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ats","nextjs15","ollama","postgresql","prisma","reactjs","recruitment","tailwindcss","typescript"],"created_at":"2025-10-08T15:53:19.734Z","updated_at":"2025-10-08T15:53:23.598Z","avatar_url":"https://github.com/dragonscypher.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🤖 Autofile - AI Recruitment Assist 🎯 Getting Started\n\n## 📁 Project Structure\n\n```\nAutofile/\n├── apps/\n│   ├── web/          # 🌐 Main Next.js application\n│   └── workers/      # ⚙️ Background job processing\n│\n├── packages/\n│   ├── ats/          # 📊 Resume scoring logic\n│   ├── llm/          # 🤖 AI provider integrations (Ollama)\n│   └── utils/        # 🛠️ Helper functions (text extraction, parsing)\n│\n├── prisma/           # 🗄️ Database schema\n├── infra/            # 🐳 Docker setup (PostgreSQL, Redis)\n└── test-data/        # 📄 Sample data for testing\n```\n\n## 🧪 Testing it \n\n### Prerequisites\n- 📦 Node.js \n- 📦 pnpm package manager (`npm install -g pnpm`)\n- 🐳 Docker Desktop (for PostgreSQL and Redis)\n- 🤖 Ollama with llama3 (optional, for enhanced AI features)\n\n### Quick Setup![Next.js](https://img.shields.io/badge/Next.js-14.2.5-black?style=flat-square\u0026logo=next.js)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue?style=flat-square\u0026logo=typescript)](https://www.typescriptlang.org/)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-16-blue?style=flat-square\u0026logo=postgresql)](https://www.postgresql.org/)\n[![Prisma](https://img.shields.io/badge/Prisma-5.22-2D3748?style=flat-square\u0026logo=prisma)](https://www.prisma.io/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://opensource.org/licenses/MIT)\n\n\u003e A smart recruitment system that helps you screen resumes, shortlist candidates, and generate interview questions using AI.\n\n## ✨ What does it do?\n\nAutofile streamlines your hiring process by:\n- 📊 **Automatically scoring resumes** against job descriptions\n- 🎯 **Shortlisting candidates** based on customizable thresholds\n- 💬 **Generating relevant interview questions** with unique keywords and model answers\n- 📝 **Helping you evaluate candidates** systematically\n- 📄 **Supporting multiple file formats** (PDF, DOC, DOCX, TXT)\n\nThink of it as your AI-powered hiring assistant that handles the tedious parts of recruitment.\n\n## 🚀 Features\n\n- ✅ **Smart ATS Scoring** - AI-powered resume analysis with LLM or baseline algorithms\n- ✅ **File Upload Support** - PDF, DOC, DOCX, and TXT file handling\n- ✅ **Interview Generation** - Context-aware questions with realistic model answers\n- ✅ **Keyword Extraction** - Unique, relevant keywords per question (no duplicates!)\n- ✅ **Real-time Logging** - Comprehensive debugging and monitoring\n- ✅ **Monorepo Architecture** - Clean separation of concerns with Turborepo\n- ✅ **Type-Safe** - Full TypeScript implementation\n- ✅ **Production Ready** - Docker setup included\n\n## 🎯 Getting Started\n\n### What you'll need\n- Node.js 18 or higher (I'm using 20)\n- pnpm package manager\n- Docker Desktop (for the database)\n- Optionally: Ollama with llama3 for enhanced AI features\n\n### Quick setup\n\n1. **Install dependencies**\n   ```bash\n   pnpm install\n   ```\n\n2. **Start the database**\n   ```bash\n   cd infra\n   docker compose up -d db redis\n   ```\n\n3. **Set up the database schema**\n   ```bash\n   pnpm prisma generate\n   pnpm prisma migrate dev --name init\n   ```\n\n4. **Build the packages**\n   ```bash\n   pnpm -r build\n   ```\n\n5. **Start the dev server**\n   ```bash\n   cd apps/web\n   pnpm dev\n   ```\n\nOpen http://localhost:3000 and you're ready to go! 🎉\n\n## 📖 How it works\n\nThe workflow is intuitive and straightforward:\n\n1. 📋 **Create a project** with your job description and requirements\n2. 📤 **Upload resumes** (PDF, DOC, DOCX, or TXT) or paste text\n3. 🎚️ **Set a threshold** (e.g., 75%) for automatic filtering\n4. 👥 **Review shortlisted candidates** who meet your criteria\n5. 💡 **Generate interview questions** tailored to the role with AI\n6. ⭐ **Score candidates** using keyword matching and manual evaluation\n7. ✅ **Select finalists** based on your cutoff score\n\n## 📁 Project Structure\n\n```\nAutofile/\n├── apps/\n│   ├── web/          # The main Next.js application\n│   └── workers/      # Background job processing\n│\n├── packages/\n│   ├── ats/          # Resume scoring logic\n│   ├── llm/          # AI provider integrations\n│   └── utils/        # Helper functions\n│\n├── prisma/           # Database schema\n├── infra/            # Docker setup\n└── test-data/        # Sample data for testing\n```\n\n## 🧪 Testing it out\n\nI've included some mock data in the `test-data/` folder so you can try it without real resumes:\n- 📝 One job description for a Senior Software Engineer role\n- 👔 Five sample resumes with varying qualification levels\n\nJust copy-paste the text into the application to see how it works!\n\n## 🛠️ Tech Stack\n\nBuilt with modern, reliable tools:\n- **Next.js 14** - React framework with App Router\n- **Prisma** + **PostgreSQL** - Type-safe ORM and database\n- **Redis** - Caching and session management\n- **Ollama** (optional) - Local AI inference with llama3\n- **Tailwind CSS** - Utility-first styling\n- **TypeScript** - Full type safety throughout\n- **Turborepo** - Monorepo build system\n- **Docker** - Containerized infrastructure\n\n## ⚙️ Environment Setup\n\nCreate a `.env.local` file in `apps/web/` with:\n\n```env\n# Database\nDATABASE_URL=\"postgresql://user:pass@localhost:5432/autofile\"\n\n# Redis\nREDIS_URL=\"redis://localhost:6379\"\n\n# NextAuth (generate a secret: openssl rand -base64 32)\nNEXTAUTH_URL=\"http://localhost:3000\"\nNEXTAUTH_SECRET=\"your-secret-here\"\n\n# Ollama (optional - for AI features)\nOLLAMA_HOST=\"http://localhost:11434\"\nOLLAMA_MODEL=\"llama3\"\n```\n\n\u003e **⚠️ Security Note:** Never commit `.env` files to version control! They are automatically ignored by `.gitignore`.\n\n## 🐛 Troubleshooting\n\n**Database connection fails?**  \nMake sure Docker is running and the containers are up:\n```bash\ndocker compose ps\n```\n\n**Ollama not found?**  \nNo problem! The system falls back to a baseline TF-IDF algorithm that works great for most cases.\n\n**Port 3000 already in use?**  \nYou can change the port in the dev command:\n```bash\nnext dev -p 3001\n```\n\n**Text extraction errors?**  \nTXT files are now fully supported. Check `TXT-FILE-FIX.md` for implementation details.\n\n## 🚀 Recent Improvements\n\n- ✅ **Interview Generation** - Unique keywords per question, no duplicates\n- ✅ **Realistic Model Answers** - Specific examples with metrics instead of templates\n- ✅ **TXT File Support** - Direct text extraction without external dependencies\n- ✅ **Enhanced Logging** - Comprehensive debugging throughout the application\n- ✅ **Custom Icons** - No external icon dependencies, faster load times\n\nSee `INTERVIEW-IMPROVEMENTS.md` and `CHANGES.md` for detailed documentation.\n\n## 🎯 Roadmap\n\n## 🎯 Roadmap\n\nThis is a working prototype with all core features implemented. Future enhancements could include:\n\n- 📧 Email notifications for candidates\n- 👥 Team collaboration features\n- 🔗 Integration with job boards (LinkedIn, Indeed)\n- 📹 Video interview scheduling\n- 📊 Advanced analytics dashboard\n- 🌍 Multi-language support\n- 🔐 Role-based access control\n- 📱 Mobile-responsive improvements\n\n## 🤝 Contributing\n\nFound a bug or have an idea? Contributions are welcome!\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\nPlease read `CONTRIBUTING.md` for details on our code of conduct and development process.\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- Built with [Next.js](https://nextjs.org/)\n- Powered by [Ollama](https://ollama.ai/) for local AI inference\n- Database management by [Prisma](https://www.prisma.io/)\n- Icons created as custom SVG components\n\n## 📚 Documentation\n\n- `GETTING-STARTED.md` - Detailed setup guide\n---\n\n**Built with curiosity and lots of coffee ☕**\n\n*Automate your recruitment, focus on what matters - finding the right talent.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdragonscypher%2Fautofile","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdragonscypher%2Fautofile","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdragonscypher%2Fautofile/lists"}