# Upwork Proposal Strategist — direct dependencies. # # This is a curated list of the packages the app actually imports, not a # full `pip freeze` of the environment. Pins reflect versions verified to # work together; transitive dependencies are resolved by pip. Heavy # transitive packages that the app never imports (pandas, numpy, GitPython, # google-api-python-client, …) are intentionally NOT listed here — they were # previously frozen in by mistake and only bloated install. # --- Core runtime (always required) --- streamlit==1.55.0 pydantic==2.12.5 python-dotenv==1.2.2 # --- Encrypted per-browser key storage (Supabase-backed) --- # `cryptography` encrypts the saved Setup config (Fernet); `httpx` (already a # dependency of the OpenAI SDK) makes the Supabase Storage REST calls. Both are # imported directly by app/services/key_store.py, so they are pinned here. cryptography==46.0.6 httpx==0.28.1 # --- Optional UI: clipboard paste on the Job Screenshot screen --- # Lets a user paste a copied screenshot directly into the app. The screen # degrades gracefully to drag-drop/browse if this is absent (the import is # guarded), so it is safe to omit. Pulls in Pillow as a dependency. streamlit-paste-button==0.1.2 # --- Dossier file parsing --- pdfplumber==0.11.9 python-docx==1.2.0 # --- LLM providers --- # OpenAI is always installed: it is the default provider AND the # OpenAI-compatible fallback client used to talk to Groq when the optional # `groq` SDK is absent. openai==2.37.0 # Anthropic provider. anthropic==0.103.1 # Gemini provider (Google AI). google-generativeai==0.8.6 # Optional: the official Groq SDK. The app works without it (it falls back # to the openai client against Groq's compatibility endpoint), so it is # left commented to keep the install lean. Uncomment to use the native SDK. # groq==0.11.0 # --- Tests --- pytest==9.0.3