FeaturesFeasibility report
Define the role

Know whether the role closes before spending four weeks.

The salary asked against the market estimate, funnel reach requirement by requirement, and the risks you decided to take, with the justification recorded and versioned at every round of negotiation.

The problem

Why this exists

How it works today

The conversation about feasibility is a matter of opinion: "I think that salary is low", "I think we can find someone". With no numbers, whoever speaks loudest wins. The cost of being wrong shows up a month later.

How it works with EVO

Each requirement shows how much it narrows the funnel, and the salary appears next to the local market estimate. The discussion stops being about opinion and becomes about what you are willing to give up.

How it works

Feasibility report from the inside

1The picture

The funnel, requirement by requirement.

Each demand appears with the reach left after it. It is common to discover that a single requirement, almost always a niche domain, accounts for nearly all of the narrowing.

The salary provided appears against the local market estimate for that title, seniority and city, with the delta highlighted.

It is a qualitative estimate, and the report says so. It is not a count against a real database, and promising precision that does not exist would be the same mistake we criticize.
Realism report · v2 · Jul 25
Salary range × market
Local market estimateR$ 18–24k
Range providedR$ 16–19k
−12% below the local marketrisk accepted and justified
Funnel reach
Base of Product Managers92%
+ 3 years leading a team55%
+ advanced Jira46%
+ logistics / foreign trade9%
+ fluent English6%
EVO's assessment

Fillable as it stands, with a caveat. The below-market range is sustainable because the package includes remote work and autonomy, but if it does not close in 45 days, salary is the first variable to revisit.

2Predicted × observed

Afterwards, it checks whether it got it right.

When the real funnel starts running, the report compares what was predicted with what happened. It is the only way for the estimate to improve over time.

And there is an important guard here: with an insufficient sample, the number is not displayed. It is not a warning in fine print, the field simply does not exist.

How EVO learned from you
Aggregate base: 247 screening decisions + 38 flags in the last 90 days.
Top rejection reasons
evidence-weak34%
seniority-below22%
skills-mismatch18%
salary-likely-above13%
Top shortlist reasons
trajectory-strong28%
evidence-strong19%
skills-strong17%
culture-fit-strong12%
Real outcome × your decisions

"Of your shortlists based on trajectory, 71% became hires that lasted past 90 days: the pattern that looked like bias is delivering. Shortlists based on evidence converted at only 45%."

Base: 17 closed processes with a recorded outcome · N is still small, read it as a trend.
Under the hood

A number with a small sample is not hidden: it does not exist

The product’s strongest pattern, and the hardest to copy: the guard lives in the type system, not in an instruction to the model.

N<15Below the minimum sample, the value field is not part of the returned type
tscThe test proves it with @ts-expect-error: if someone exposes the number, the build breaks
LLMThe text is drafted by a model that never receives the number: it is structurally incapable of quoting it
verEach round of negotiation produces a version, forming the trail of the decision

It is the difference between asking the model not to make things up and making invention impossible.

What comes next

How it fits into the rest of the journey

Bring a role that is hard to fill

It takes a real role to see EVO work, not a canned example.

Start using it