AI-powered Chrome extension for Upwork freelancers that generates personalized cover letters, monitors the job feed in real time, and tracks bidding performance through an analytics dashboard.
Role
Job Jarvis is a product built entirely by Cenciss from the ground up: ideation, design, engineering, QA, deployment, and product strategy. The problem it solves is simple and costly for freelancers: writing a compelling, customized cover letter for every Upwork job posting is time-consuming, and slow applicants lose to faster ones.
Job Jarvis is a Chrome extension that injects directly into Upwork, reads the job listing and the user's profile, and generates a tailored proposal using the Gemini API in seconds. Beyond cover letter generation, the extension includes a real-time job feed monitor accessible outside of Upwork, a project history tracker, and a web dashboard with graphical analytics covering bidding patterns and proposal activity.
Stripe powers monthly and annual subscription billing, with webhook-based plan enforcement and cancellation handling built in from launch.
AI personalization at the cover letter level is harder than it sounds. Generic proposals get ignored on Upwork. The generation had to produce letters that read as specific to the job and the applicant, not templated output with a name swapped in. That required prompt engineering informed by both the scraped job description and the user's actual profile data, with consistent tone, structure, and quality across different job types.
Chrome extension engineering introduced a distinct set of constraints. The extension had to inject a sidebar UI into Upwork pages, scrape the relevant DOM data without breaking across Upwork's own updates, and maintain stable performance as a persistent browser presence. Content script security, background job management, and injection reliability all required careful engineering.
The Gemini API integration had to handle token limits, response latency, and output quality across varied job descriptions. Long job posts and detailed profiles required prompt strategies that stayed within limits while capturing enough context for a useful output.
The job feed sidebar extended the value proposition beyond active Upwork sessions. Users needed to see relevant jobs and initiate applications from within the extension, even when not browsing Upwork directly. Building a custom job feed renderer inside the extension sidebar that felt functional and fast was a non-trivial UI challenge.
Stripe subscription management required full webhook coverage for plan activation, monthly and annual renewals, and cancellations. Any gap in webhook handling would result in users retaining access after cancellation or losing access after a valid payment.
The architecture centered on a Chrome extension front end built in React.js, communicating with a Node.js and Express.js backend that handled authentication, user management, proposal history, and Stripe billing. MongoDB stored user data, cover letter history, template configurations, and subscription records.
The extension's content scripts scraped job descriptions and profile data from Upwork's DOM at the point of application, passing the extracted data to the backend which constructed the Gemini API prompt and returned the generated cover letter to the extension sidebar. The injection and scraping logic was built to be resilient to minor DOM changes, with error handling that surfaced issues clearly to the user rather than failing silently.
The job feed sidebar was built as a separate extension panel, fetching job listings through the backend and rendering them in a format the user could browse and act on without navigating to Upwork directly. This gave freelancers first-mover advantage by enabling faster discovery and application than competitors browsing Upwork manually.
The web dashboard was built in React.js with Material UI and Bootstrap, providing visualizations of proposal activity, bidding frequency, and usage trends through Chart.js-based analytics. Users could review their proposal history, track performance over time, and manage their account and subscription from a single interface.
Stripe was integrated with webhook endpoints for all critical subscription events, enforcing plan access in the backend and handling cancellations cleanly without residual access.
Job Jarvis launched on the Chrome Web Store as a fully operational product with all core features live: AI cover letter generation, real-time job feed monitoring, proposal history tracking, analytics dashboard, and Stripe subscription billing.
Users generating proposals through the extension reported saving approximately 80% of the time previously spent on manual application writing, with the quality of output consistently outperforming what most freelancers wrote manually under time pressure.
The real-time job feed ensured users were among the first applicants on new postings, a measurable advantage in a competitive marketplace where response speed directly affects hiring rates.
The Stripe integration converted free beta users to paid subscriptions with minimal friction and low churn, establishing a recurring revenue model from launch. Job Jarvis stands as a complete, independently built product: designed, developed, deployed, and monetized as a single-person effort with a scalable architecture built for growth.
Tech Stack
Interested in a project like this?
Let's discuss your goals and map out the right solution.
Get in touchProject Details
Custom ecommerce platform built from scratch for a USA-based wholesale clothing brand. First online presence, global inventory booking, and a 15% increase in sales.
Full-stack hiring marketplace built for a Canadian client, featuring mandatory video resumes that let employers assess candidate personality and communication skills before the first interview.
Full redesign and rebuild for a Canadian accounting firm specializing in trucking taxation. New online forms, custom admin panel, persuasive copy, and a 30% increase in website traffic.