
“Doug was incredible to work with and a great communicator. He operated quickly & efficiently, and even proposed ways to improve the feature to exceed our expectations. 10/10!” — Allison Nulty, Head of Product, Contra
How It Started
The partnership began in the most fitting way possible - through Contra itself. After we showcased some Chrome extension work and published a data analysis piece about Contra’s growth using public data, Ben from the Contra team reached out. When they contacted us about LinkedIn automation and data collection, the timing couldn’t have been better. We were already building something similar for our own LinkedIn networking. This wasn’t just another project - it was a passion piece we were genuinely excited about.Understanding the Problem
Contra is a freelance marketplace with over a million users, but they faced a critical challenge: inventory. Their marketplace’s success depends entirely on having enough quality job opportunities for freelancers to discover. As a scrappy startup competing against established platforms like Upwork and Fiverr, they needed to find relevant opportunities at scale without massive outbound teams. The key insight came from their users’ behavior - freelancers were already spending hours on LinkedIn and X (Twitter) looking for gigs. What if we could transform this passive browsing into active value creation? What if every Contra user became a discovery agent for the entire platform?Building the Solution
Initially, Contra wanted to leverage first-party LinkedIn connections to build network effects - inviting connections and creating matches within their platform. But after I demonstrated what background worker scripts could do and showed how extensions could work passively without disrupting browsing, the vision expanded dramatically. We realized we could go much further: using all Chrome extension users to find opportunities for everyone, essentially crowdsourcing job discovery across LinkedIn and X. Working with Allison, their Head of Product, was exceptional. She knew exactly what she wanted. The design team delivered incredibly high-fidelity mockups. Everyone was available and passionate - it was the perfect collaboration. I was tasked with building the Chrome extension for Indy.ai, transforming everyday social media browsing into automated opportunity discovery. The concept was elegant: the extension would crowdsource job finding across Contra’s entire user base, creating a compounding effect where more users equals more opportunities for everyone. Here’s how it works:- As users browse LinkedIn and X normally, the extension passively reads content in the background
- It collects first-party connections and their posts without disrupting the browsing experience
- LLMs analyze the content to identify hiring signals and opportunities
- Relevant matches surface directly to users
- Contra’s job inventory grows automatically in the background
The Technical Build
One of my first priorities was creating a frictionless onboarding experience. We built the extension to automatically detect authentication status across all three platforms - LinkedIn, X, and Contra - using network request validation. The result was completely seamless: as soon as someone installed the extension, if they were already logged into these platforms, they were ready to go. No additional setup required. I built the extension using Plasmo.com’s Chrome extension framework with React for the UI. The architecture relied heavily on background service workers to ensure the extension never disrupted browsing. Content collection and parsing happened entirely in the background, with LLMs analyzing the content to identify opportunities.Staying Compliant
Platform compliance was critical. We implemented extremely conservative rate limiting - just one request per second - to avoid any automation flags. The extension never automates user actions; it only reads content from the user’s own network. Everything runs in background workers with zero impact on the browsing experience. The beauty of the distributed architecture is that it scales naturally. With thousands of users, each person’s extension collects from their unique network, creating coverage that would be impossible for a centralized system. Smart caching prevents duplicate processing, and more users actually means better performance and broader coverage.What We Built
The extension we delivered includes:- Passive Discovery: Works automatically while users browse naturally
- Network Intelligence: Analyzes first-party connections and their content
- Smart Matching: LLM-powered relevance scoring to surface the right opportunities
- Zero Friction: No change to user behavior required
- Cross-Platform: Works seamlessly on both LinkedIn and X
- Direct Integration: Connects directly into Contra’s marketplace
The Results
The impact exceeded expectations. Within weeks of launch, Contra saw a 2x increase in job inventory - effectively doubling their marketplace without hiring a single outbound recruiter. The extension now has 30,000+ active users on the Chrome Web Store with a 4.6 star rating. Growth has been largely organic through word-of-mouth, with freelancers telling other freelancers about it. The user feedback has been incredibly gratifying:“Love Indy! It saves me so much time from endlessly scrolling LinkedIn. As a freelance designer, we can focus on applying to the RIGHT opportunities.”
- Monserrat Vazquez
“As a content creator, Indy AI does all the heavy lifting and only presents opportunities I actually want.”
- Rachelle Medina
“Takes the algorithm gamble out of finding your next opportunity!”
- Shan Minhas
Why This Approach Works
The brilliance of this solution is its compounding network effect. Each new user adds coverage of their unique network. More users means more content processed, which means more opportunities found for everyone - not just the person who discovered them. This creates a sustainable competitive moat through collective intelligence. A competitor would need to rebuild not just the technology, but the entire user base to match the coverage.What We Learned
This project reinforced several key principles we apply to every build: Perfect alignment creates momentum. we were solving our own problem (LinkedIn networking), Contra had clear vision and excellent design, and users got immediate value without changing behavior. When all three align, magic happens. Constraints drive excellence. By respecting platform limits with conservative rate limiting and read-only operations, we built something sustainable. Background processing ensures users never wait. Invisible authentication removes friction. Crowdsourcing beats centralization. Each user adds unique network coverage. Distributed collection scales naturally while centralized approaches hit walls. The network effect becomes the product’s moat.Chrome Web Store
Indy.ai on Chrome Web Store
30,000+ users • 4.6 stars
Frequently Asked Questions
How does the extension avoid being blocked by LinkedIn?
How does the extension avoid being blocked by LinkedIn?
We use extremely conservative rate limiting (one request per second), read-only operations, and focus on analyzing content from the user’s own network. This approach respects LinkedIn’s terms and avoids automation flags.
What makes the crowdsourcing approach effective?
What makes the crowdsourcing approach effective?
Each user adds coverage of their unique network. With 30,000+ users, we can discover opportunities that would be impossible for a centralized system to find. The network effect creates a natural moat.
Could this approach work for other marketplaces?
Could this approach work for other marketplaces?
Absolutely. The crowdsourced discovery pattern applies to any inventory challenge - job boards, product marketplaces, or service directories. The key is leveraging users’ natural browsing behavior.
How long did it take to build and launch?
How long did it take to build and launch?
The working prototype was delivered in one week, production-ready extension in 2-3 weeks total. The beauty of Chrome extensions is rapid iteration and testing with real users.
What was the biggest technical challenge?
What was the biggest technical challenge?
Creating seamless authentication across LinkedIn, X, and Contra without requiring users to re-login or configure anything. We solved this with network request validation.
How do you measure the quality of discovered opportunities?
How do you measure the quality of discovered opportunities?
We use LLMs to analyze job descriptions and filter for relevant opportunities. Users can rate discoveries, creating a feedback loop that improves accuracy over time.
Could this approach scale to millions of users?
Could this approach scale to millions of users?
Yes, the distributed architecture means more users actually improves performance and coverage. Each new user adds unique network access without increasing server load.
What prevents competitors from copying this?
What prevents competitors from copying this?
The network effect is the moat - having 30,000 users actively discovering creates coverage competitors can’t match overnight. Plus, the LLM tuning and filtering improves with scale.
Technologies Used
Plasmo
Chrome extension framework
React
Extension UI
Service Workers
Background processing
Chrome APIs
Content access
LLM Integration
Opportunity identification
Rate Limiting
Platform compliance