UpMatch wins Upwork jobs while freelancers sleep. It watches the job feed, scores every new posting against each freelancer's profile, and submits a personalized, AI-written proposal within about 5 minutes of the job going live, which is the window where proposals actually get read.
Live in production. 90 paying freelancers, and $40-50K a month in revenue for the platform. I'm the sole engineer (contract, 4 days/week); sales and support have their own team.
How it works
- Ingestion: polls Upwork every minute, per tenant, around the clock.
- Scoring: each job is rated against the freelancer's profile (skill match, budget, location, client history). Threshold crossed → bid triggered.
- Bidding bot: secure session handling for customer Upwork accounts, headless browser automation, AI-generated personalized proposals, Loom video integration for higher response rates.
- Dashboard: React + TypeScript client portal with the proposal pipeline, response analytics, and account configuration. Multi-tenant by design.
Owning the engineering
I architected and run the platform: front-end, Node.js back-end, PostgreSQL on RDS, AWS serverless infrastructure (Lambda, API Gateway, CloudFront, S3) managed with Terraform, GitHub Actions CI/CD, and CloudWatch monitoring and alerting. LLM orchestration uses Claude and ChatGPT for proposal generation.