feat: add optional Flask web UI and Windows start script#281
Open
PranavKaja wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds an optional browser interface on top of the existing pipeline. It does not change the CLI, the scoring logic, the prompts, or any model behavior. The server simply calls the existing
score.main(pdf_path, api_key, model_name)and streams its stdout/stderr to the page.Motivation
python score.py <pdf>is great for developers, but reviewers who just want to score a resume have to use the terminal and edit.envto switch models or keys. A small local UI lowers that barrier while reusing the exact same pipeline, so results are identical to the CLI.What's included
app.py— a small Flask server:GET /serves the UI.POST /api/uploadaccepts a PDF plus model/API-key from the settings panel, starts the pipeline on a background thread.GET /api/stream/<job_id>streams pipeline output to the browser over Server-Sent Events, with heartbeats and a clean end-of-stream sentinel.frontend/— a no-framework UI (index.html,app.js,style.css): drag-and-drop PDF upload, a settings panel (model + API key, stored client-side), session history, and a live output console.requirements.txt— addsflask(currently imported by the UI but not declared).Start-Hiring-Agent.bat— a convenient one-click Windows batch script to activate the environment, start the server, and open the browser.What's deliberately unchanged
score.pyscoring logic,prompt.py/prompts/templates,github.py,evaluator.py, ormodels.pybehavior.python score.py <pdf>) works exactly as before. The UI is opt-in.How to run
pip install -r requirements.txt python app.py # open http://127.0.0.1:5000, set your model + Gemini key in Settings, drop a PDFTesting / smoke checks
score.main(); verified the UI output matches a CLI run on the same resume.gemini-2.5-flash): identical category scores via UI and CLI.black .).Notes for reviewers
127.0.0.1only and is meant for local use.requirements.txtflaskfix, or move the UI to acontrib/orexamples/folder.Checklist
masteron my forkflaskadded torequirements.txt