FindUp is a Chrome extension that finds matching Upwork projects and drafts proposals in your writing style — running entirely on your device. This page explains exactly what data the extension reads, where it lives, and what we do (and don't) do with it.
FindUp's single purpose is to help freelancers find and apply to Upwork projects more effectively by reading their Upwork profile, surfacing matching projects, and drafting personalized proposals locally. Every feature in the extension serves this purpose. We do not bundle unrelated functionality.
upwork.com and api.github.com.<all_urls>) for passive browsing observation — it is granted only when you explicitly paste a URL into the Ask AI chat, and only for that single origin.Use of information received from Chrome Web Store, as well as data derived from such information, will adhere to the Chrome Web Store User Data Policy, including the Limited Use requirements.
In plain English: FindUp reads your data only to deliver and improve the in-product features described above. It is never transferred to anyone (including us — there is no "us" with a server), never used for ads, and never reviewed by a human. The only data that leaves your device is the search query string that Chrome sends to Upwork when you click "Find Projects" (which is functionally identical to typing the same query in upwork.com's own search box) and, optionally, an HTTP GET to a URL you explicitly paste into the Ask AI chat after Chrome grants the per-origin permission.
Everything FindUp stores lives in chrome.storage.local on your device. It is never synced,
uploaded, or transmitted. The table below covers the main keys.
| Storage key | What it holds |
|---|---|
| userProfile | Your Upwork profile fields (title, overview, skills, hourly rate, work history, portfolio links). Captured only when you click Read My Profile. |
| userModel / voiceMemory | Your personal writing-style model — phrases, openings, closings, average sentence length, tone classification — derived locally from your past proposals and chat history. |
| aiActions | Last 1000 in-product actions (view / apply / dismiss). Used to improve match scoring locally. Never transmitted. |
| chatHistory | Up to 40 messages from the Ask AI chat (your questions and the AI's replies). Clear from Settings → Ask AI chat history. |
| tutorState | Your progress through the 6-step Upwork Tutor (current step + completion flag). |
| aiAssistantName | Display name for your AI (defaults to "{your first name} AI"). Editable in Settings. |
| aiCapabilities | Cached availability status of LanguageModel / Writer / Summarizer on your device. |
| huntLog | Up to 100 hunt-cycle logs (when, how many projects scanned, errors). |
| huntStatsToday | Today's running counters: scanned · matches · alerts sent. Resets daily. |
| seenProjects · dismissedProjects | Hashed URLs of projects you already saw or explicitly dismissed (kept 7 days) so they don't re-surface. |
| searchQueries | The 6–8 AI-generated search queries derived from your profile, rotated each cycle. |
| lastResults · lastHiddenGems · lastResultsAt | 5-min results cache so reopening the popup doesn't re-scrape. |
| settings | Your filter preferences, notification preferences, hunt mode, AI learning toggle, AI assistant name. |
Reset any time: open Settings → AI Brain → Reset training. Or remove the extension via chrome://extensions to wipe everything locally.
Each permission below is the narrowest viable choice for the feature it enables. We do not request permissions we don't use, and we explain in product why each one is needed.
| Permission | Why FindUp needs it |
|---|---|
| storage | Save your profile, writing-style model, settings, and chat history locally so the AI can personalize without ever calling the cloud. No cloud sync. |
| tabs | Open Upwork search and your profile page in minimized background tabs to surface matching projects when you click Find Projects / Hunt now. Tabs are closed after the cycle finishes. |
| scripting | Programmatically inject the content script into Upwork pages when the declarative manifest match misses (e.g., SPA navigation that doesn't reload). |
| alarms | Run the daily writing-style training cycle, the weekly outcome reconciliation, and the weekly Coach insight on a Chrome alarm schedule (not setInterval). No alarm runs Upwork searches — those happen only when you click Find Projects / Hunt now. |
| notifications | Show a desktop notification when a "hot" project (score ≥85, <5 proposals, posted within 2 hours) matches your filters. You can disable this in Settings. |
| offscreen | Play the notification chime via Web Audio. MV3 service workers can't play audio directly; the offscreen document is the official Chrome workaround. |
host: https://www.upwork.com/* | Read your Upwork profile, sent messages, and submitted proposals; render search-result tabs to extract project listings. The single host permission required by the extension's single purpose. |
host: https://api.github.com/* | Optional: when you bootstrap a profile by pasting a GitHub URL, FindUp calls GitHub's public REST API (no auth needed) to read your public bio, name, and repo count. Never used for any other purpose. |
optional_host_permissions: <all_urls> | Granted only at runtime, only when you explicitly paste a non-GitHub URL into the Ask AI chat or profile bootstrap. Chrome shows a permission dialog naming that one origin. We do not use this for passive browsing observation. |
The FindUp extension makes only the following network calls. Everything else is on-device:
There is no telemetry, no crash reporting, no analytics endpoint, no feature-flag service,
and no cloud LLM endpoint. The Gemini Nano model runs on your device through Chrome's built-in
LanguageModel, Writer, and Summarizer APIs.
FindUp keeps your data on your device for as long as the extension is installed. You can wipe it at any time:
chrome://extensions → remove FindUp. Wipes everything chrome.storage.local stored for the extension.Because there is no server, there is no separate copy of your data for us to delete, and no server-side request to file. Local removal is total.
We may update this policy when the extension gains new permissions, new on-device data flows, or new features. The Effective date at the top of the page reflects the most recent revision. Material changes (anything that affects what data is read, stored, or transmitted) will be called out in the next version's release notes inside the extension.
Publisher: Chandrabhan Shekhawat — Gigai Kripa Services.
For bug reports, feature requests, or privacy questions: [email protected]
We don't operate a server — there's no support ticket system, no data-export endpoint, and no
account to suspend. Because all data stays on your device, we have no copy to give you on request
and nothing to delete server-side. Use chrome://extensions → remove FindUp to wipe
everything locally.