--- title: Upwork Proposal Strategist emoji: 🧭 colorFrom: indigo colorTo: purple sdk: docker app_port: 8501 tags: - streamlit pinned: false short_description: Analyze Upwork job fit and draft grounded proposals. --- # Upwork Proposal Strategist A web app that helps you write better Upwork proposals, faster. It looks at an Upwork job, compares it to **your own work files**, tells you whether it's worth applying, and writes a first draft of your proposal — using only true facts from your files. ## How it works The app walks you through five steps in the left sidebar: 1. **Setup** — choose your AI provider and paste your API key. 2. **Dossier** — upload your work files (portfolio, résumé, testimonials, past proposals). 3. **Job Screenshot** — upload or paste a picture of the Upwork job. 4. **Analysis** — see the verdict (🟢 Apply / 🟡 Caution / 🔴 Do Not Proceed), strengths, and concerns. 5. **Proposal** — get a ready-to-copy proposal draft. ## Your API key & privacy - **Bring your own key.** Each visitor enters their own provider API key (OpenAI, Anthropic, Gemini, or Groq) on the Setup page. - **Your key is stored encrypted, remembered on your device.** So you don't re-enter it each visit, the key is saved **encrypted** (Fernet) using a secret derived from a random, invisible per-browser tag. The storage backend (Supabase) only ever holds ciphertext; the tag is never sent to it, so one visitor's key can't be read with another's tag, and the key is never put in the server environment. Use **Clear Credentials** to remove it. If key storage isn't configured, the app falls back to session-only (re-enter each visit). - **Your files are session-only.** Uploaded dossier files are processed in a temporary, per-session location and are not persisted on the server. - Only a small, relevance-filtered slice of your text is ever sent to the AI provider you chose. > ⚠️ The **Job Screenshot** step needs a vision-capable provider — use > **OpenAI**, **Anthropic**, or **Gemini**. **Groq cannot read images.** ## Step-by-step user guide A complete, click-by-click walkthrough is included in this repo: **[UpworkProposalStrategistGuide.pdf](UpworkProposalStrategistGuide.pdf)**. ## Running locally ```bash pip install -r requirements.txt streamlit run streamlit_app.py ```