Revenue Architecture & GTM Engineering
Beyond Upwork: How a Ukrainian Software Studio Built Its Own Route to Market
Forty employees, strong developers and international delivery experience – but new business still depended on platforms. We built a way to find customers before their projects ever reached a marketplace.
Forty employees – and still dependent on the next project
When we started working with the software studio in Kharkiv, Ukraine, it was already far beyond the stage of a small freelance team.
Around 40 employees developed software for international clients. The team had expertise across Laravel, PHP/Symfony, iOS and other specialised technologies.
Delivery worked.
The problem started with where the next project would come from.
A significant part of new business came through platforms such as Upwork. Every new project therefore started under the same conditions: a customer published a requirement and, at that moment, numerous other software providers could compete for exactly the same opportunity.
The customer set the rules.
The platform controlled access.
The providers competed for the same opportunity.
For a company with around 40 employees, that was a poor strategic position.
It did not simply need more leads.
It needed its own route to market.
The problem was bigger than Upwork
The first workshop quickly showed that platform dependency was only a symptom.
Even outside Upwork, the studio was difficult to distinguish from competitors.
Laravel. Symfony. PHP. Blockchain. iOS.
These were meaningful technical capabilities. But from a prospective customer's perspective, the message looked similar to that of hundreds of other software providers:
We have developers. We know these technologies. We can build your project.
The company therefore kept entering the same competitive environment.
The question was not:
How do we sell more developers?
It was:
In what situation does a company have a concrete problem for which these developers become a relevant solution?
That was the turning point.
The customer told us when it needed help
We looked for a signal that made this problem visible.
That signal was already public on the internet:
open developer vacancies.
If a company had been trying for weeks or months to recruit a Laravel, Symfony or PHP developer, the job posting said more than simply:
“We are hiring.”
It potentially said:
“We are missing technical capacity – and so far we have not been able to fill it internally.”
That changed the entire acquisition logic.
We no longer had to wait until a company decided to publish an outsourcing project.
We could identify companies before the need became a conventional outsourced-development project at all.
Job postings became an early-warning system for demand
We built the acquisition process around this signal.
First, we defined the technologies in which the studio had genuine strength.
Then the system looked for companies recruiting those exact capabilities internally.
The vacancy itself was not the only factor. Its duration also mattered.
The longer a relevant role remained unfilled, the more interesting the account became.
A job posting therefore created a commercial hypothesis:
The company needs technical capacity.
The required technology matches our team.
The position is still open.
External capacity may now be a relevant alternative.
That was fundamentally different from a list of a thousand CTOs.
There was a concrete reason to start the conversation.
Now we had to reach the right people
An open vacancy does not buy a service.
People do.
For the relevant companies, we therefore identified the buying center: Who owned engineering? Who experienced the capacity bottleneck? Who could decide on external support?
Technical leaders, product owners, management – depending on the company.
Step by step, a machine emerged:
Vacancy Signal → Technology Fit → Relevant Account → Buying Center → Decision-Maker → Direct Outreach
The software studio suddenly had a very different reason to start a conversation.
No longer:
“Do you happen to need software development?”
But, in effect:
“You have been looking for exactly the technical capacity our team can provide.”
From software supplier to extension of the customer's team
At the same time, we sharpened the positioning.
The client should not appear as an anonymous pool of developers from Eastern Europe.
Its strength was that an owner-led studio with an established team stood behind the delivery.
The new positioning therefore centred on a different idea:
External developers who do not operate like interchangeable outside resources, but integrate as closely as possible into the customer's existing development team.
The customer was not simply buying cheaper developers.
It was gaining additional development capacity for a gap it could not currently fill internally.
That aligned directly with the lead trigger:
Unfilled Vacancy → Missing Capacity → Integratable External Capacity
Positioning and acquisition were now addressing the same problem.
Then the situation reversed
Before, the studio had to search where other companies offered projects.
Now it searched where companies revealed problems.
That fundamentally changed the new-business logic.
Before:
Project appears on Upwork → many providers → proposals compared → price pressure → hope to be selected
After:
Company recruits developer → detect need → validate technology fit → map buying center → contact decision-maker directly → create own opportunity
The client entered the commercial journey earlier.
More importantly, it no longer had to compete exclusively for opportunities that every competitor could already see.
Not every project had to be a good project anymore
The system filled the project pipeline.
For a 40-person software studio, that created something strategically important: choice.
When the pipeline is empty, almost every project becomes interesting.
When enough relevant opportunities exist, the company can ask:
Does the technology fit us?
Does the team fit?
Does the duration fit?
Does the customer fit?
Do we actually want this project?
That was the economic value of the system.
Not the maximum possible number of contacts.
But changing the company's starting position:
from searching for the next project to having a pipeline from which better-fitting projects could be selected.
What we took from the project
Today, methods like these are discussed under labels such as signal-based selling, intent data and GTM engineering.
Our question at the time was much more pragmatic:
Where can we observe that a prospective customer currently has a problem our client can solve?
For the Kharkiv software studio, the answer was job vacancies.
From that single signal, we built an entire new-business system:
Detect problem → qualify need → prioritise account → map buying center → reach decision-maker directly → develop opportunity.
The client did not receive another lead-generation campaign.
It received something strategically more valuable:
its own route to market.
Project overview
- Industry
- Software Development / IT Outstaffing
- Company
- Owner-led software studio
- Location
- Kharkiv, Ukraine
- Size
- Approx. 40 employees
- Starting point
- New business heavily dependent on platforms such as Upwork
- Turning point
- Open developer vacancies used as signals for unresolved capacity problems
- System
- Positioning + Vacancy Signals + Technology Fit + Buying Center + Direct Outreach
- Outcome
- A filled project pipeline and greater ability to select better-fitting projects
- Core contribution
- Building a proprietary, signal-based route to market outside the platform economy
Want to build your own route to market?
When platform dependency, unclear positioning and reactive acquisition limit growth, we consider positioning, signals and market access as one connected system.
Book a Clarity Call