The Scouting app is the driver market: a searchable list of everyone in the paddock, a market-activity board, and the mission desk where you spend scouting work-units to un-blur a driver’s hidden stats. Nothing about a driver is free information — what you see is what your Scouting department has bought. This is where you decide who to look at, how hard, and when to make the offer.
How to open it
- Sidebar → Scouting (icon 2, magnifier).
- Hub → the magnifier resource widget (
res_scout, “free/total observation capacity”). - Team app → an empty seat → Hire from Scouting.
- The “Go to Missions” button on the no-capacity popup, and the “Open Scouting → Missions” button in every scouting email, both land directly on tab 3.
Read-only in season. During a race season the app opens as “Scouting (View Only)” — you can browse and run missions from profiles, but the offer flow is closed. Two exceptions unlock it: the mid-season free weekend (GP-10 window, offers become next-season pre-agreements), and arriving via Team → Hire after firing or losing a driver (a real mid-season hire, capped at 3 offers per GP).
The offer counter in the status bar reads Offers: n/3 during pre-season, Free Weekend — offers apply NEXT SEASON inside the window.
Tab 1 — Known Drivers
One row per driver in the free-agent pool plus your own academy prospects (they appear with a purple Academy badge). Roughly 400 rows; the list is virtualised, so only the visible window is built each frame — scroll with the wheel or the purple scrollbar.
| Column | What it is |
|---|---|
| ★ | Favourites toggle. The ★ filter shows only starred drivers. |
| Driver | Helmet + name + a green magnifier button → opens the full profile |
| Age | Young drivers develop, veterans decline and eventually retire |
| Country | Flag + name |
| Series | Where he races now — PFS, PF2, PF3, another world series, or - |
| INT PAC CON ADA STA AGG | The six stats, scouting-gated (see below) |
| Rating | 0-100 weighted overall, gated the same way |
| Fame | 0-100 public profile. Never hidden — renown is public by definition |
| Likeness | driver_acceptance_prob × 100 for a Secondary offer at his asking salary |
| Obs | Your knowledge %. A green ● marks an active observation |
| Status | Contract badge — see below |
| Salary | His demand as a range, hidden below 25 % knowledge |
Status badges: green Free agent · purple Academy · amber Pending (you have an offer on the table) · amber Last year · grey Contracted · the team name for a rival’s driver · You (Primary) for your own. Amber vs grey on a team badge encodes contract length: amber = final year (approachable in the mid-season window), grey = tied beyond next season.
Sorting: click any header. Filters: available-only, minimum rating (60/70/80), favourites-only.
The knowledge system
Everything hidden behind Obs % routes through one module (scouting.rs), so the list, the profile, the offer dialog and the mid-season screen all agree.
StatReveal — how a stat narrows
if knowledge >= 100 → Exact(true_value)
if knowledge < 8 → Hidden ("?")
otherwise:
margin = round( (1 - knowledge/100) × MARGIN_MAX )
if margin == 0 → Exact(true_value)
else → Range [true−margin, true+margin], clamped to the scale
MARGIN_MAX = 6.0for a 1-20 stat,28.0for the 0-100 overall rating.STAT_HIDDEN_BELOW = 8— under 8 % you see nothing at all.
Practical thresholds:
| Knowledge | Stat band (±) | Overall band (±) |
|---|---|---|
| 8 % | ±6 (the whole scale, basically) | ±26 |
| 25 % | ±5 | ±21 |
| 50 % | ±3 | ±14 |
| 75 % | ±2 | ±7 |
| 90 % | ±1 | ±3 |
| 92 %+ | exact | ±2 |
| 99 %+ | exact | exact |
So a stat becomes exact at 92 %, but the overall rating needs 99 %. The band always brackets the truth — it is a narrowing estimate, never a lie. A ranged value renders with a ~ prefix and a ~ tier badge instead of “Elite”/“Strong”.
Trait reveal
Traits surface one at a time, staggered across the knowledge range. For trait i of n:
known_at = round( (i+1)/(n+1) × 100 )
suspect_at = round( known_at × 0.6 )
Below suspect_at the trait is invisible (the profile just says “N undiscovered trait(s) — scout further”). Between the two you get a dashed ”? Suspected trait” card. At or above known_at the real trait card appears with its polarity, tier colour, duration and effect lines. At 100 % everything is Discovered.
With 3 traits that means the first is confirmed at 25 %, the second at 50 %, the third at 75 %.
The passive baseline — knowledge you never paid for
Before you dispatch anybody, you already know something:
infra_scale = 0.5 + 0.05 × scouting_level (L1 = 0.55×, L10 = 1.00×)
series = 20 if he holds a series seat, else 5
fame_term = fame × 0.35 (0-100 → 0-35)
baseline = clamp( (series + fame_term) × infra_scale , 0 , 60 )
Hard-capped at 60 % — active scouting is always required to finish the job. A famous grid driver at a Level 8 department reads around 40-45 % for free; an unknown 17-year-old free agent reads about 3-5 %.
Your own drivers and own academy prospects always return 100 % — you employ them.
The max-ratchet
ratchet_scouting_knowledge runs on every scouting tick and at the season rollover:
- everyone on your payroll (race roster + academy) is persisted at 100 %, so the knowledge survives their departure — fire him, let his contract lapse, watch a rival poach him: you still read him perfectly;
- everyone else has their current baseline persisted, max-ratcheted — it can only ever go up. This exists because releasing a driver resets his
fame/serieson the pool row, which used to crater a rival grid driver from ~40 % back to ~0 % the day his deal ended.
Knowledge is never unlearned.
Tab 2 — Market activity
Custom-drawn cards, two columns.
Left column:
- SIGNED DRIVERS — a card per driver on your roster: helmet, flag, code, the six stat chips +
OVR, and a contract line showing annualised money (salary × 20) plus the term. - UNDER NEGOTIATION — one amber-accented card per offer you have on the table, marked
● awaiting response. Offers are not resolved when you click Send: they are queued as aPendingOfferand answered by email on the next turn.
Right column: the DRIVER MARKET — SIGNINGS feed, every seat on the grid (yours in green, rivals in grey) with team signed · N yrs · $X/yr. This is the fastest way to see which rival seats are already locked for next season.
Tab 3 — Missions
Capacity
scouting_capacity = 10 + scouting_level × 5
Level 1 = 15 WU/GP, Level 5 = 35, Level 10 = 60. The banner shows allocated / capacity WU/GP allocated · N free over a bar.
Capacity is a rate, not a stock. It is spent per GP and refreshed per GP; an allocation is locked to its observation until you change or stop it.
Running an observation
Observations are started from a driver’s profile, not from this tab: open the profile (magnifier button or Enter) and press Scout — Assign WU. The modal lets you pick the WU/GP in steps of 1 (minimum 1, maximum free capacity + whatever this observation already holds) and previews the completion time.
Progress per GP:
gain = round( wu_per_turn × SCOUTING_KNOWLEDGE_PER_WU ) with SCOUTING_KNOWLEDGE_PER_WU = 1.0
new_value = min( 100 , max(current, baseline) + gain )
So 1 WU/GP = 1 knowledge point/GP, and the observation always builds on top of the passive baseline rather than restarting from zero. Estimated time to full:
GPs to full = ceil( (100 − current_knowledge) / gain )
20 WU/GP on a driver at 40 % → 3 GPs. 5 WU/GP on the same driver → 12 GPs.
Scouting ticks on every pre-season turn, on every GP, and on every free-weekend turn — so a pre-season phase of 5 turns is 5 ticks of progress before a wheel has turned.
An observation that reaches 100 % is removed automatically and mailed to you (“Scouting complete — X”), freeing its WU. If the target retires mid-observation, it is cancelled with an email that names the freed WU.
The mission cards
Each running observation is a card: helmet, flag, clickable name, a knowledge bar (red < 33 %, amber < 66 %, green above), − N WU/GP + steppers (±1, clamped to [1, current + free]), ~N GP to full, and a red Stop observation button. Stopping logs the mission as Abandoned.
Below sits PAST MISSIONS — a Known-Drivers-style table of the last 15 finished missions plus the running ones, badged In progress / Completed / Abandoned, with a When stamp (S3 · GP7, or S3 pre for pre-season). One line per driver: a stop → restart cycle updates the existing row instead of stacking duplicates. History is capped at 60 entries.
Two blockers
- Scouting locked (Phase ≤ 1). You cannot dispatch scouts during the Infrastructure phase — the department’s level, and therefore its capacity, is not finalised until you confirm your facilities. The modal says so explicitly.
- No capacity. If
free + existing < 5the Scout button pops the “No scouting capacity” dialog with a Go to Missions shortcut so you can reduce or stop something.
The offer
Opening it
From the profile’s Negotiate — Make Offer button, or from the Known Drivers list (Enter / double-click on an eligible row). The dialog lets you set salary (K$/GP), contract length 1-3 years, and role. Arrow keys work: ←/→ years, ↑/↓ role.
What the dialog tells you
- The six stats and the overall rating — behind the same scouting gate as the list. This dialog does not leak the truth.
Asking salary: $X/GP, orPAY DRIVER — brings $X/GPwhen his demand is negative.- Acceptance: N % — a live readout of
driver_acceptance_prob, green ≥60 %, amber ≥35 %, red below. - Season cost (~20 GPs) — the annualised figure.
- Buyout fee when he is under another series’ contract (see below).
- A short driver message listing his salary expectation, role preference, country affinities, season objective and buyout.
Acceptance probability — every input
For a normal (paid) driver:
ratio = offered_salary / asking_salary
prob = 0.5 + (ratio − 1) × 0.3 + team_prestige + extra
prob = clamp(prob, 0.05, 0.95)
For a pay driver (asking_salary < 0, i.e. he brings money):
ratio = offered_incoming / asked_incoming
prob = 0.65 − (ratio − 1) × 0.4 + team_prestige × 1.5 + extra
prob = clamp(prob, 0.05, 0.95)
Note the sign flip: demanding more sponsorship money from a pay driver lowers his acceptance, and team prestige weighs 1.5× as heavily on him.
extra is the sum of five terms:
1. Role bonus (keyed on fame)
| Fame | Primary | Secondary | Reserve |
|---|---|---|---|
| ≥ 70 | +0.20 | −0.10 | −0.30 |
| 40-69 | +0.10 | +0.05 | −0.10 |
| < 40 | +0.05 | +0.05 | +0.10 |
A famous driver hates being offered a Reserve seat; an unknown one prefers it to nothing.
2. Country bonus — +0.08 if his nationality matches your team’s country, +0.05 more if it matches your engine supplier’s origin. Both can stack (+0.13).
3. Standing bonus — needs a live constructors’ table (None in pre-season, before any points exist):
| Fame | Term |
|---|---|
| ≥ 60 | (13 − position) × 0.01 |
| 40-59 | (13 − position) × 0.005 |
| < 40 | flat +0.05 |
4. Objective fit — the continuous ambition term, and usually the one that kills a deal:
team_level = 0.5 × clamp(0.5 + team_prestige, 0, 1)
+ 0.5 × clamp((13 − standing)/12, 0, 1) (or just the prestige half with no standing)
expectation = clamp( 0.55 × tier.nominal_level() + 0.45 × (ambition/100) , 0 , 1 )
gap = expectation − team_level
fit = gap > 0 ? −gap × 0.42 (team beneath his sights)
: −gap × 0.10 (team over-delivers, small bonus)
with tier.nominal_level() = Backmarker 0.18 · Midfield 0.47 · Challenger 0.70 · TopTeam 0.90.
The penalty side is 4.2× steeper than the bonus side. Offering a top-team-only driver a backmarker seat is roughly a −0.30 hit that no salary can fully buy off.
5. Series uplift — (series_tier_target(ambition) − 1) × 0.08. A PFS seat offered to a driver whose ambition only targets PF2 is +0.08; PF3 is +0.16. It is a step above his own sights and he jumps at it.
Ambition and the signing target
ambition is a hidden 0-100 value, adjusted by accumulated drift from over- and under-achieving across seasons (effective_ambition = clamp(base + drift, 5, 100)). It maps to two things that always agree with each other:
| Ambition | TeamTier::target_from_ambition | Profile line | series_tier_target |
|---|---|---|---|
| 0-39 | Backmarker | ”Will sign for any team” | 3 → aims at PF3 |
| 40-64 | Midfield | ”Wants a midfield seat or better” | 2 → aims at PF2 |
| 65-84 | Challenger | ”Wants a challenger seat or better” | 1 → aims at the PFS |
| 85-100 | Top team | ”Holding out for a top team” | 1 → aims at the PFS |
The SIGNING TARGET line on the profile is revealed at 40 % knowledge, alongside his season goal. The career goal needs 55 %, the raw ambition bar 70 %.
Salary demands
asking_salary is rolled from the weighted stat total (max ≈ 140):
| Weighted total | Demand / GP |
|---|---|
| ≥ 110 (elite) | $250K → $500K |
| 93-109 | $75K → $250K |
| 76-92 | $15K → $75K |
| 58-75 | $5K → $15K |
| < 58 | $2K → $5K |
each × a 0.85-1.15 random factor. Below 82 weighted total there is a 15 % chance the driver is a pay driver instead, bringing $10K-$75K/GP. A released driver’s demand is re-rolled from his current stats (deterministically, seeded on code + stats) — a cheap rookie contract does not follow him forever, and neither does a faded star’s old top-team money.
In the list the demand shows as a range that narrows with knowledge: hidden below 25 %, spread = 0.40 × (100 − k)/75 — ±40 % at 25 %, ±20 % at ~62 %, exact at 100 %.
The buyout
If he is under contract to another series (series_contract_years > 0):
buyout = gps_per_season × series_contract_years × |series_salary|
A one-time payment, charged when the signing actually resolves. An expiring PFS driver and a genuine free agent both cost 0.
The PFS 18+ rule
PFS_MIN_DRIVER_AGE = 18. A 16- or 17-year-old cannot be signed — the block reads “Too young for the PFS — drivers must be at least 18. He races in the junior ladder for now.” The one exception is the GP-10 mid-season window, whose deals are next-season contracts: a 17-year-old who is free or in the final year of his series deal (pfs_deferred_age_ok) may pre-agree, because he turns 18 at exactly the rollover that applies the signing.
Offer quotas
| Situation | Cap | Gate |
|---|---|---|
| Pre-season Drivers phase | 3 offers per turn, over 5 turns = 15 total | phase.driver_offers_used |
| In-season (after a fire, via Team → Hire) | 3 offers per GP | mid_season_driver_offers_used |
| GP-10 free weekend | 3 offers per GP, reset when the window opens | same counter |
The quota is enforced inside submit_driver_offer itself, so the profile’s Negotiate button obeys it exactly like the list does.
Refusals are remembered
A refused offer rolls roll_driver_refusal(interest, had_second_chance), where interest is the acceptance probability the offer scored:
keep_open = clamp(0.15 + interest × 1.4, 0.05, 0.9)
- Roll under it → SecondChance: he will hear one more offer.
- Otherwise, or on a second refusal after a granted second chance → Closed for 1-2 seasons.
The game never tells you the duration — the paddock does not publish that. A closed door surfaces as “This driver is not willing to open talks with the team.” Mid-season renewals of your own driver are exempt from the hard close: your man testing the market has not fallen out with you.
The AI market
You are not shopping alone.
- Pre-season:
ai_driver_decisionruns per AI team per turn — up to 2 signings (3 when hunting a Reserve). Candidates are scored by fame, dented by asking salary under a Tight or Critical finance posture, and pay drivers jump the queue when a team is Critical. The seats you are circling get taken while you deliberate. - All season:
emit_ai_scouting_rumorsposts Paddock Rumour news items about which drivers rival teams are watching — the top 20 candidates by renown, including your own final-year drivers. A rumour naming one of yours foreshadows the GP-10 poaching pass. - GP 10: the AI works the renewal market before your window opens, and poaches after it closes. See Mid-season signing window.
Starting your own observation also pushes a rumour: “{Your team} are running the rule over {driver}, with scouts dispatched to observe him.” Scouting is visible.
Advanced
- Scout the baseline gap, not the driver. A famous grid driver already sits at 40-45 % for free; taking him to 92 % costs ~50 WU-GPs. An unknown 17-year-old sits at 4 % and costs ~90. But the unknown is where the mispriced talent is — fame is public, ability is not.
- 92 %, not 100 %, is the real finish line for stats. The last 8 points only buy you the exact overall rating and the final trait. If capacity is tight, stop at 92 and redeploy.
Likenessin the list is quoted for a Secondary seat. A famous driver’s real number for a Primary offer is +0.30 higher than the column shows (+0.20 role bonus instead of −0.10).- Acceptance is far more sensitive to ambition than to money. Going from 100 % to 150 % of the asking salary buys +0.15. An ambition gap of 0.4 costs −0.17 and no salary fixes it — you have to become a better team, or find a driver whose sights match your grid position.
- Team prestige is a live lever:
(avg_infra_level − 5) × 0.05 + tier_bonus (±0.05) + (reputation − 50)/100 × 0.3. An infrastructure push and a reputation season both feed acceptance directly. - Offers resolve next turn, by email. Sending three offers for the same role is impossible (the role is marked
(pending)), but sending three for three different roles and having all three accept fills your roster instantly. - Own drivers and academy prospects read 100 %, permanently. Scouting a driver before signing him is money you did not need to spend — but scouting him before deciding is exactly the point.
- A driver on a folded team is available immediately, not at the rollover:
driver_approach_blocktreats a bankrupt outfit as holding nobody.
Common mistakes
- Trying to scout during Phase 1. The department is not locked in until you confirm Infrastructure. Do the facilities first, then dispatch.
- Spreading 15 WU across three drivers. 5 WU/GP each is ~19 GPs to full from a low baseline — you will learn nothing useful all season. Concentrate on one or two targets and finish them.
- Reading
~14as 14. It is a midpoint. The true value can be ±3 at 50 % knowledge — that is the difference between Average and Strong. - Offering a big salary to a high-ambition driver in a backmarker. The objective-fit penalty is 4.2× steeper on the reluctant side; money cannot close an ambition gap.
- Assuming the Reserve seat is an easy sell. For a fame-70 driver it is −0.30. Reserve offers only work on unknowns (fame < 40, where it is actually the preferred role at +0.10).
- Burning the offer quota on a driver who already said no. A closed door means the offer is refused before the roll — you have spent nothing, but you have also learned nothing. Check the Negotiate button’s hover text first.
- Forgetting Fame is not ability. Fame is public and never gated; the rating behind it may be
?. Signing on the Fame column is how you buy an expensive average driver.
See also
- Driver Profile — where observations start and offers are made
- My Team — the seats you are filling
- Mid-season signing window — the GP-10 deferred-offer round
- Driver Academy — the alternative to buying talent
- Infrastructure — the Scouting department and its capacity curve
- Driver traits — what the trait cards mean
- Finance — salaries, buyouts and pay drivers
- Development series — where the 16-18s are racing