{"id":29688563,"url":"https://github.com/rishi-gupta-data/smartscreen","last_synced_at":"2025-07-23T05:07:10.606Z","repository":{"id":304360267,"uuid":"991302177","full_name":"Rishi-gupta-data/SmartScreen","owner":"Rishi-gupta-data","description":"SmartScreen ATS is an intelligent, AI-powered Applicant Tracking System designed to revolutionize the recruitment process for both job seekers and recruiters. Leveraging advanced natural language processing and machine learning, it analyzes resumes and job descriptions to deliver highly accurate candidate-job matches. ","archived":false,"fork":false,"pushed_at":"2025-07-12T14:58:02.000Z","size":2721,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-12T16:25:11.926Z","etag":null,"topics":["ai-agent","ai-resume-analyzer","ai-tools","ats","jobs","resume-builder","resume-parser","resume-template"],"latest_commit_sha":null,"homepage":"","language":"Python","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/Rishi-gupta-data.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2025-05-27T12:28:14.000Z","updated_at":"2025-07-12T14:58:05.000Z","dependencies_parsed_at":"2025-07-12T16:38:00.824Z","dependency_job_id":null,"html_url":"https://github.com/Rishi-gupta-data/SmartScreen","commit_stats":null,"previous_names":["rishi-gupta-data/smartscreen"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Rishi-gupta-data/SmartScreen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishi-gupta-data%2FSmartScreen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishi-gupta-data%2FSmartScreen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishi-gupta-data%2FSmartScreen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishi-gupta-data%2FSmartScreen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Rishi-gupta-data","download_url":"https://codeload.github.com/Rishi-gupta-data/SmartScreen/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rishi-gupta-data%2FSmartScreen/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266620084,"owners_count":23957309,"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-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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-agent","ai-resume-analyzer","ai-tools","ats","jobs","resume-builder","resume-parser","resume-template"],"created_at":"2025-07-23T05:07:09.895Z","updated_at":"2025-07-23T05:07:10.595Z","avatar_url":"https://github.com/Rishi-gupta-data.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SmartScreen ATS\n\nSmartScreen ATS is an intelligent, AI-powered Applicant Tracking System designed to revolutionize the recruitment process for both job seekers and recruiters. Leveraging advanced natural language processing and machine learning, it analyzes resumes and job descriptions to deliver highly accurate candidate-job matches. The platform supports both individual and bulk resume analysis, offering actionable feedback and keyword optimization suggestions to candidates. Recruiters benefit from automated candidate ranking, skill extraction, and streamlined filtering, making hiring faster and more effective. With a modern React frontend and a robust Flask backend, SmartScreen ATS ensures a seamless, user-friendly experience. Whether you’re a candidate aiming to optimize your CV or a recruiter seeking the perfect fit, SmartScreen ATS empowers you to make smarter hiring decisions. Unlock the future of recruitment with data-driven insights and automation.\n\n## Features\n- Analyze individual resumes against job descriptions\n- Bulk analysis of multiple resumes (ZIP upload)\n- Resume formatting suggestions\n- Keyword optimization suggestions\n- Modern, user-friendly web interface\n\n## System Architecture\n\n```mermaid\ngraph TD\n  A[\"\u003cb\u003eUser\u003c/b\u003e\"]:::user --\u003e B[\"\u003cb\u003eReact Frontend\u003c/b\u003e\"]:::frontend\n  B --\u003e C[\"\u003cb\u003eFlask Backend API\u003c/b\u003e\"]:::backend\n  C --\u003e D[\"\u003cb\u003eDatabase\u003c/b\u003e\"]:::db\n  C --\u003e E[\"\u003cb\u003eNLP/ML Models\u003c/b\u003e\"]:::ml\n\n  classDef user fill:#b3ffd9,stroke:#000,stroke-width:2px,color:#000;\n  classDef frontend fill:#b3e0ff,stroke:#000,stroke-width:2px,color:#000;\n  classDef backend fill:#e6ffe6,stroke:#000,stroke-width:2px,color:#000;\n  classDef db fill:#fff9b3,stroke:#000,stroke-width:2px,color:#000;\n  classDef ml fill:#e6ccff,stroke:#000,stroke-width:2px,color:#000;\n```\n\n## Feature Flow\n\n```mermaid\nflowchart TD\n    Start([\"\u003cb\u003eStart\u003c/b\u003e\"]) --\u003e Mode[\"\u003cb\u003eSelect Mode\u003c/b\u003e\"]\n    Mode --\u003e IndBox[\"\u003cb\u003eIndividual Mode\u003c/b\u003e\"] \u0026 BulkBox[\"\u003cb\u003eBulk Mode\u003c/b\u003e\"]\n    IndBox --\u003e IndUpload[\"\u003cb\u003eUpload Resume \u0026amp; JD\u003c/b\u003e\"]\n    IndUpload --\u003e IndAPI[\"\u003cb\u003ePOST /api/analyze\u003c/b\u003e\"]\n    IndAPI --\u003e IndResult[\"\u003cb\u003eShow Analysis \u0026amp; Suggestions\u003c/b\u003e\"]\n    BulkBox --\u003e BulkUpload[\"\u003cb\u003eUpload ZIP of Resumes \u0026amp; JD\u003c/b\u003e\"]\n    BulkUpload --\u003e BulkAPI[\"\u003cb\u003ePOST /api/bulk-analyze\u003c/b\u003e\"]\n    BulkAPI --\u003e BulkResult[\"\u003cb\u003eShow Bulk Analysis Results\u003c/b\u003e\"]\n\n     Start:::start\n     Mode:::mode\n     IndBox:::indmode\n     IndUpload:::upload\n     IndAPI:::api\n     IndResult:::result\n     BulkBox:::bulkmode\n     BulkUpload:::upload\n     BulkAPI:::api\n     BulkResult:::result\n    classDef start fill:#b3ffd9,stroke:#000,stroke-width:2px,color:#000\n    classDef mode fill:#b3e0ff,stroke:#000,stroke-width:2px,color:#000\n    classDef indmode fill:#d1e7dd,stroke:#000,stroke-width:2px,color:#000\n    classDef bulkmode fill:#f8d7da,stroke:#000,stroke-width:2px,color:#000\n    classDef upload fill:#e6ffe6,stroke:#000,stroke-width:2px,color:#000\n    classDef api fill:#e6ccff,stroke:#000,stroke-width:2px,color:#000\n    classDef result fill:#fff9b3,stroke:#000,stroke-width:2px,color:#000\n    style IndBox fill:#FFCDD2\n```\n\n## API Endpoints Overview\n\n```mermaid\nflowchart LR\n    API1[\"🔍 \u003cb\u003ePOST\u003c/b\u003e /api/analyze\"] --\u003e BE[\"🧠 \u003cb\u003eBackend\u003c/b\u003e\"]\n    API2[\"📁 \u003cb\u003ePOST\u003c/b\u003e /api/bulk-analyze\"] --\u003e BE\n    API3[\"📝 \u003cb\u003ePOST\u003c/b\u003e /api/formatting-suggestions\"] --\u003e BE\n    API4[\"💡 \u003cb\u003ePOST\u003c/b\u003e /api/keyword-optimization\"] --\u003e BE\n    FE[\"🖥️ \u003cb\u003eFrontend\u003c/b\u003e\"] --\u003e API1 \u0026 API2 \u0026 API3 \u0026 API4\n\n     API1:::api\n     BE:::backend\n     API2:::api\n     API3:::api\n     API4:::api\n     FE:::frontend\n    \n    classDef api fill:#e1f5fe,stroke:#0288d1,stroke-width:2px,color:#000\n    style BE fill:#ffe9ba\n    style FE fill:#fad7d7\n\n```\n\n## Folder Structure\n```\nATS_ai/\n  backend/      # Flask backend API\n  frontend/     # React frontend app\n  README.md     # Project documentation\n  .gitignore    # Git ignore rules\n```\n\n## Setup Instructions\n\n### Prerequisites\n- Python 3.8+\n- Node.js 14+\n\n### Backend Setup\n```bash\ncd backend\npython -m venv venv\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\npip install -r requirements.txt\npython app.py\n```\n\n### Frontend Setup\n```bash\ncd frontend\nnpm install\nnpm start\n```\n\nThe backend runs on `http://localhost:5000` and the frontend on `http://localhost:3000` by default.\n\n## API Endpoints\n- `POST /api/analyze`: Analyze a single resume (PDF) and job description\n- `POST /api/bulk-analyze`: Analyze multiple resumes (ZIP of PDFs) and job description\n- `POST /api/formatting-suggestions`: Get formatting suggestions for a resume\n- `POST /api/keyword-optimization`: Get keyword optimization suggestions\n\n### Sample Backend Route (Flask)\n```python\n@app.route('/api/analyze', methods=['POST'])\ndef analyze_resume():\n    if 'resume' not in request.files or 'job_description' not in request.form:\n        return jsonify({'error': 'Missing resume or job description'}), 400\n    resume_file = request.files['resume']\n    job_description = request.form['job_description']\n    resume_text = ats_backend.extract_text_from_pdf(resume_file)\n    ats_backend.set_job_description(job_description)\n    analysis = ats_backend.analyze_resume(resume_text, job_description)\n    return jsonify(analysis)\n```\n\n### Sample Frontend API Call (React)\n```javascript\nconst formData = new FormData();\nformData.append('resume', file);\nformData.append('job_description', jobDescription);\n\nfetch('http://localhost:5000/api/analyze', {\n  method: 'POST',\n  body: formData,\n})\n  .then(res =\u003e res.json())\n  .then(data =\u003e setAnalysis(data));\n```\n\n### Sample API Request/Response\n**Request:**\n`POST /api/analyze`\nForm Data:\n- resume: (PDF file)\n- job_description: \"Looking for a Python developer with NLP experience.\"\n\n**Response:**\n```json\n{\n  \"score\": 85,\n  \"matched_keywords\": [\"Python\", \"NLP\", \"Flask\"],\n  \"suggestions\": [\"Add more details about your NLP projects.\"]\n}\n```\n\n## Usage\n1. Start both backend and frontend servers as above.\n2. Open the frontend in your browser.\n3. Upload resumes and job descriptions as prompted.\n\n## Contributing\nPull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frishi-gupta-data%2Fsmartscreen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frishi-gupta-data%2Fsmartscreen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frishi-gupta-data%2Fsmartscreen/lists"}