๐ Product Requirements Document (PRD)
Defines an automated system that monitors Upwork jobs, scores them with AI, and sends push notifications via Pushover.
What this file does
Defines an automated system that monitors Upwork jobs, scores them with AI, and sends push notifications via Pushover.
When to use it
- Building a real-time job alert system for freelance platforms
- Creating an MVP that combines polling, AI scoring, and notifications
- Documenting a project with clear milestones and file structure for a developer
- Starting a project that uses Gradio for a simple dashboard interface
Assumes this stack
๐ Product Requirements Document (PRD)
๐ง Project Title: Upwork Job Sniper
๐ค Owner: Mohamed Khaled
๐ ๏ธ Developer: Assigned per sprint
๐ Start Date: [Insert Date]
๐Status: Ready for Development
๐ฏ 1. Objective
Build an automated system that monitors Upwork job posts using specific keywords, scores and summarizes relevant jobs, and sends mobile push notifications in real-time. The user can then view each job's summary, a score, and an AI-generated video proposal script.
๐งฉ 2. Problem Statement
Freelancers on Upwork need to monitor job posts constantly to catch high-quality leads early. Doing this manually is time-consuming and inefficient.
โ 3. Success Criteria
- Receive real-time Pushover alerts for jobs matching specified keywords.
- Each alert includes a score, job summary, and AI-generated video script.
- Interface displays recent jobs with summaries and actions.
- Achieve at least one qualified job proposal submitted weekly.
๐ 4. Functional Requirements
4.1 Job Fetcher
- Poll Upwork GraphQL API every 5โ10 minutes.
- Use stored keywords to filter relevant job posts.
- Parse job details: title, description, budget, hourly rate, client info, etc.
4.2 AI Summarization & Proposal Script
- Send job details to OpenAI GPT-4o.
- Prompt should return:
- Job Summary
- Score (0โ10)
- 30-second video script
4.3 Notification System
- Send notification via Pushover for high-score jobs.
- Notification must contain:
- Job title
- Score
- Link to job viewer/dashboard
4.4 Dashboard Interface (Gradio MVP)
- Show recent job posts
- Display:
- Summary
- Score
- Generated script
- Allow clicking link to open original Upwork post
๐ก 5. Non-Functional Requirements
- Polling frequency: every 10 mins
- AI latency: <5s acceptable
- Notifications: real-time
- Security: store API keys in
.envfile - Hosting: local/VPS for MVP; cloud optional
๐ 6. Integration Tokens (.env)
UPWORK_TOKEN=xxx
OPENAI_API_KEY=xxx
PUSHOVER_TOKEN=xxx
PUSHOVER_USER_KEY=xxx
๐ฆ 7. File Structure
upwork-sniper/
โโโ main.py # Main loop and entry point
โโโ fetcher.py # Upwork API fetcher
โโโ notifier.py # Pushover notification handler
โโโ ai_engine.py # OpenAI summarizer, scorer, script generator
โโโ scorer.py # Score calculator
โโโ ui.py # Gradio dashboard
โโโ utils.py # Token management, helpers
โโโ .env # Config and API secrets
โโโ requirements.txt
โโโ jobs.json # Local store of recent jobs
๐ก 8. Sample OpenAI Prompt
You are an expert proposal writer.
Here is a job post:
---
{job_title}
{job_description}
Budget: {budget}
Client rating: {client_feedback} | Hire rate: {hire_rate}% | Location: {client_location}
---
Return:
1. A one-paragraph summary of the job.
2. A score between 0 and 10 based on job quality.
3. A 30-second script to use in a video proposal.
๐ 9. Development Milestones
| Day | Task | Owner |
|---|---|---|
| 1 | Set up repo + fetcher.py | Developer |
| 2 | Pushover integration | Developer |
| 3 | OpenAI summarizer + scoring logic | Developer |
| 4 | Script generation + prompt tuning | Developer |
| 5 | Build Gradio UI | Developer |
| 6 | Connect all components & run tests | Developer |
| 7 | Buffer day for bug fixes and polish | Developer |
๐ง 10. Future Enhancements (Post-MVP)
- Multiple keyword groups (segmented per niche)
- Admin interface to adjust scoring logic
- Log job outcomes for future training signals
- WordPress plugin embedding this dashboard
What's inside
10 sections covering objective, requirements, file structure, milestones, and future enhancements
Change this for your project
- Replace
UPWORK_TOKEN=xxxwith your Upwork API token - Replace
OPENAI_API_KEY=xxxwith your OpenAI API key - Replace
PUSHOVER_TOKEN=xxxandPUSHOVER_USER_KEY=xxxwith your Pushover credentials - Replace
Mohamed Khaledwith the project owner's name
Where it goes
Keep it in your repository where the agent or team that needs it will read it.
Worth borrowing
- Using a sample OpenAI prompt template that includes job details and expects structured output
- Organizing development into a day-by-day milestone table with clear ownership
Related Documents
SourceAtlas PRD v2.9.6
Defines the product requirements, architecture, and command interface for an AI-powered codebase understanding assistant integrated into Claude Code.
AGENTS.md โ ShakkaShell v2.0
Guides AI coding agents through building a CLI that translates natural language into offensive security commands, with a defined tech stack, structure, and implementation order.
Fleet Management System - Product Requirements Document (PRD)
Defines functional, non-functional, and technical requirements for a fleet management system with compressed GPS tracking and predictive maintenance.
TracePerf - Advanced Console Logging & Performance Tracking
Defines a Node.js logging library with execution flow tracing, performance bottleneck detection, and conditional log modes for dev/staging/prod.