Project
Agency Operations / Freelance ProductivityLiveEzra Bid Assistant
Built a private Chrome extension for Ezra Global that drafts Freelancer.com proposals from live project pages — AI-generated, manually reviewed, never auto-submitted.

Our software portfolio finally reflects the level of engineering behind our work. The design is clean, intentional, and performance-focused — every interaction feels considered. It doesn’t just look modern; it communicates credibility. Since launch, client conversations start with confidence instead of explanations.
Desmond Smith
Founder & CEO · Ezra Global
Metrics
Team Size
1
Safety Model
No auto-submit · Manifest V3 · Server-side Gemini
Proposal Styles
5
Proposal Lengths
3
Extension Surfaces
2
Engagement Duration
1 month
- Role
- Full-Stack Developer
- Industry
- Agency Operations / Freelance Productivity
- Engagement model
- Private client tool — end-to-end build for Ezra Global.
- Engagement type
- client-work
- Team size
- 1
- Duration
- 1 month
- Card outcome
- Private Chrome extension that drafts Freelancer.com proposals from live pages — AI-powered, manually submitted
- SEO title
- Ezra Bid Assistant | Private Chrome Extension for Freelancer.com Proposals
- SEO description
- Built a private Chrome MV3 extension for Ezra Global that detects Freelancer.com projects, generates AI proposals via a secured Gemini backend, and inserts drafts for manual submit.
- Display order
- 4
- Featured
- Yes
- Live
- Yes
- Created
- July 4, 2026
- Updated
- July 4, 2026
Problem
Desmond Smith and the Ezra Global team bid on Freelancer.com projects regularly, but writing tailored proposals took too long. Each bid required reading the full project page, matching tone to the client, weaving in Ezra Global's services, and keeping proposals consistent — all while staying on the platform. Generic AI tools were risky: they could sound robotic, overclaim experience, or encourage unsafe automation. Desmond needed a private assistant that worked inside the browser, respected Freelancer's rules, and kept the Gemini API key off the client.
Situation
Ezra Global is a software agency led by Desmond Smith. The team wins work through Freelancer.com, where speed and proposal quality both matter. Before this build, drafting each bid meant manually copying project details, writing from scratch or pasting into a separate AI chat, and losing brand voice between sessions. There was no way to detect project context from the page, save drafts locally, or enforce Desmond's sign-off and closing line across every proposal.
Before & After
Before: Each Freelancer bid meant manually copying project details, writing proposals from scratch or in a generic AI chat, and hoping tone and sign-off stayed consistent.
After: A private Chrome side panel detects the project, generates a tailored four-paragraph proposal through a secured backend, and inserts it into the bid box for manual review and submit.
Approach
- Safety-first scope — No auto-submit, no cookie harvesting, no mass bidding. The extension only reads visible DOM fields and inserts text into the bid textarea for manual review.
- Hybrid Chrome MV3 layout — A compact side panel for the live bidding workflow on Freelancer.com, plus a full options page for prompt settings, saved drafts, and API configuration.
- Server-side AI — Gemini runs on a private Next.js backend; the extension never sees the API key.
- Brand voice in settings — Sign-off, company name, services, proposal style/length defaults, words to avoid, and custom rules stored in
chrome.storage.localand applied to every generation.
What Made This Hard
Freelancer DOM extraction without brittle selectors — Project pages change layout; the content script had to read visible fields reliably and degrade gracefully when extraction failed.
Chrome MV3 constraints — Side panel, service worker messaging, and options page routing each have different lifecycle rules; shared React components had to work in both compact (~360px) and full-width layouts.
Safety boundaries users can trust — Every feature was scoped so Desmond always reviews and submits manually. Insert-into-textarea only, no form automation, minimal host permissions.
Prompt consistency at scale — Four-paragraph Freelancer rules, Ezra Global positioning, and Desmond's sign-off had to survive style/length variations without drifting into generic AI phrasing.
Architecture
Monorepo (Bun workspaces) — shared/ types and prompt builder, backend/ Next.js API (POST /api/generate-bid, GET /api/health), extension/ Chrome MV3 (content script, service worker, side panel, options page).
Extension surfaces — Content script on *.freelancer.com/projects/* extracts title, description, budget, skills, country, and project type; floating "Generate Bid with Ezra" button opens the side panel. Options page uses a sidebar shell for Create Bid, Prompt Settings, Saved Drafts, and API Settings.
Backend — Next.js route validates the request, builds instructions via shared prompt composer, calls Gemini server-side, and returns plain proposal text. CORS locked to chrome-extension:// origins and localhost.
Execution
Delivered capabilities
- DOM-based project detection on Freelancer.com project pages
- Editable extracted fields with refresh-from-page action
- Proposal style (Professional, Premium Agency, Short & Direct, Confident, Friendly) and length (Short, Medium, Detailed) controls
- Generate, regenerate, copy, save draft, and clear flows
- Insert Into Bid Box with confirmation toast — manual submit only
- Prompt Settings: sign-off, company, services, default rules, words to avoid
- Saved Drafts in local Chrome storage with view/load/delete
- API Settings: backend URL + Test Connection health check
- Deployed backend at
eba.ezraglobal.co.zawith Gemini credentials server-side only
What We Built
Ezra Bid Assistant is a private Chrome extension + Next.js backend that turns a Freelancer.com project page into a draft proposal in seconds. Browse a project, click Generate Bid with Ezra, review extracted details, pick style and length, generate via Gemini, then copy or insert into the bid box — always with manual submit.
Results
- Faster bid drafting — Project context auto-fills from the page; proposals generate in one click instead of retyping details into a separate tool.
- Consistent Ezra Global voice — Prompt settings enforce sign-off, company positioning, and anti-AI wording rules on every generation.
- Safe by design — Manifest V3, Freelancer-only host permissions, no auto-submit, Gemini key stays on the server.
- Draft continuity — Saved drafts persist locally so Desmond can revisit proposals across sessions.
- Production backend — Deployed API at
eba.ezraglobal.co.zawith health-check integration in the extension.
Business Outcome
Desmond can respond to Freelancer.com opportunities faster without sacrificing the professional, human tone Ezra Global is known for — and without exposing API credentials or crossing platform safety lines.
Tech stack
Infrastructure
Integrations
Keywords
Gallery




