{"id":28225793,"url":"https://github.com/debapriya-source/anti-resume","last_synced_at":"2025-06-13T00:31:34.977Z","repository":{"id":287450297,"uuid":"964661519","full_name":"Debapriya-source/Anti-Resume","owner":"Debapriya-source","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-11T19:23:32.000Z","size":40,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-18T11:09:39.495Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Debapriya-source.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-04-11T15:19:13.000Z","updated_at":"2025-04-11T19:23:35.000Z","dependencies_parsed_at":"2025-04-11T20:35:11.924Z","dependency_job_id":null,"html_url":"https://github.com/Debapriya-source/Anti-Resume","commit_stats":null,"previous_names":["debapriya-source/anti-resume"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Debapriya-source/Anti-Resume","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Debapriya-source%2FAnti-Resume","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Debapriya-source%2FAnti-Resume/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Debapriya-source%2FAnti-Resume/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Debapriya-source%2FAnti-Resume/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Debapriya-source","download_url":"https://codeload.github.com/Debapriya-source/Anti-Resume/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Debapriya-source%2FAnti-Resume/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259554918,"owners_count":22875896,"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","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":[],"created_at":"2025-05-18T11:09:38.992Z","updated_at":"2025-06-13T00:31:34.961Z","avatar_url":"https://github.com/Debapriya-source.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Skills-Based Hiring Platform API\n\nA FastAPI-based backend API for a skills-based hiring platform that supports candidates and companies.\n\n## Features\n\n- JWT-based authentication with role differentiation (candidate/company)\n- User registration and login\n- Challenge management (create, view, list)\n- Submission handling (submit solutions, view submissions)\n- AI-powered match suggestions using LLM semantic analysis\n- Optional file upload support for challenges and submissions\n\n## Prerequisites\n\n- Python 3.12 or higher\n- pip (Python package manager)\n- Groq API key (for AI matching feature)\n\n## Installation\n\n1. Clone the repository:\n\n```bash\ngit clone \u003crepository-url\u003e\ncd massai-hackathon\n```\n\n2. Create a virtual environment and activate it:\n\n```bash\npython -m venv venv\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\n```\n\n3. Install the package in development mode:\n\n```bash\npip install -e .\n```\n\n4. Create a `.env` file in the root directory with the following content:\n\n```\nSECRET_KEY=your_secret_key_here\nALGORITHM=HS256\nACCESS_TOKEN_EXPIRE_MINUTES=30\nDATABASE_URL=sqlite:///./skills_platform.db\nGROQ_API_KEY=your_groq_api_key_here  # Get this from https://console.groq.com/\n```\n\n## Running the Application\n\nRun the development server:\n\n```bash\npython main.py\n```\n\nThe API will be available at `http://localhost:8000`\n\n## API Documentation\n\nOnce the server is running, you can access:\n\n- Interactive API documentation (Swagger UI): `http://localhost:8000/docs`\n- Alternative API documentation (ReDoc): `http://localhost:8000/redoc`\n\n## API Endpoints\n\n### Authentication\n\n- `POST /auth/register` - Register a new user (candidate or company)\n- `POST /auth/login` - Login and get access token\n\n### Challenges\n\n- `GET /challenges` - List all challenges\n- `GET /challenges/{id}` - Get challenge details\n- `POST /challenges` - Create a new challenge (company only)\n\n### Submissions\n\n- `POST /submissions` - Submit a solution (candidate only)\n- `GET /submissions` - List all submissions (company only)\n- `GET /submissions/my` - List user's submissions (candidate only)\n\n### AI Match Suggestions\n\n- `GET /match/suggestions` - Get AI-based match suggestions between challenges and submissions (company only)\n\nThis endpoint uses semantic analysis powered by Groq's LLM API to identify the best matches between company challenges and candidate submissions. It analyzes the skills, technologies, and concepts mentioned in both challenges and submissions, then calculates similarity scores to suggest the most promising candidates for each challenge.\n\n### File Uploads\n\n- `POST /upload/challenge/{id}/attachment` - Upload challenge attachment (company only)\n- `POST /upload/submission/{id}/file` - Upload submission file (candidate only)\n\n## Project Structure\n\n```\n.\n├── app/\n│   ├── api/\n│   │   └── routers/\n│   │       ├── auth.py\n│   │       ├── challenges.py\n│   │       ├── submissions.py\n│   │       ├── matches.py\n│   │       └── uploads.py\n│   ├── core/\n│   ├── db/\n│   │   └── database.py\n│   ├── models/\n│   │   └── models.py\n│   ├── schemas/\n│   │   ├── user.py\n│   │   ├── challenge.py\n│   │   └── submission.py\n│   ├── utils/\n│   │   └── auth.py\n│   └── main.py\n├── .env\n├── .gitignore\n├── main.py\n├── pyproject.toml\n├── setup.py\n└── README.md\n```\n\n## Development\n\nThe project uses:\n\n- FastAPI for the web framework\n- SQLModel for database ORM\n- JWT for authentication\n- Pydantic for data validation\n- uvicorn for ASGI server\n- Groq API for AI-powered matching\n- PEP 621 compliant dependency management via pyproject.toml\n\n## AI Matching Implementation\n\nThe AI matching system works by:\n\n1. Analyzing challenge descriptions using LLM to extract key skills, technologies, and concepts\n2. Analyzing submission content to extract demonstrated skills and approaches\n3. Calculating similarity scores between challenges and submissions based on semantic overlap\n4. Providing detailed match reasons based on the specific skills that aligned\n\nThis approach enables companies to find the most qualified candidates based on the content of their submissions rather than simple keyword matching.\n\n## Security Notes\n\n- In production, replace the secret key with a secure value\n- Configure CORS settings appropriately\n- Use HTTPS in production\n- Consider rate limiting and other security measures\n- Store sensitive data securely\n- Implement proper error handling and logging\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Commit your changes\n4. Push to the branch\n5. Create a Pull Request\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdebapriya-source%2Fanti-resume","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdebapriya-source%2Fanti-resume","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdebapriya-source%2Fanti-resume/lists"}