Risk Score
The HeyVisa risk_score is a single number between 0 and 100 that summarises how likely an application is to be approved on first submission. Higher is better.
How it is calculated
The score is a weighted blend of four signal groups. Each signal group is itself a 0–100 score produced by a dedicated model, so the final number is interpretable and the per-signal breakdown is always returned alongside it.
text
risk_score = round(
0.40 * documents_score
+ 0.30 * finances_score
+ 0.20 * intent_score
+ 0.10 * history_score
)Signal weights
| Signal | Weight | What it measures |
|---|---|---|
| Documents | 40% | Completeness, validity, internal consistency of supporting files. |
| Finances | 30% | Income, savings, sponsor strength relative to destination cost. |
| Intent | 20% | Purpose clarity, itinerary realism, return-likelihood signals. |
| History | 10% | Prior travel, prior visas, prior refusals (if disclosed). |
Risk bands
The score is also returned as a risk_band string to make UI treatments simple.
| Band | Score range | Interpretation |
|---|---|---|
| low | 75 – 100 | Application is well prepared. No critical gaps. |
| medium | 50 – 74 | Workable but with one or more gaps a reviewer is likely to flag. |
| high | 0 – 49 | Material weaknesses; we recommend acting on the top three recommendations before submission. |
What the score is not
- It is not a decision. Only the consulate or embassy decides.
- It is not a credit score. Two applicants with identical profiles but different destinations will see different scores because the target standards differ.
- It is not static. Uploading or replacing documents triggers recomputation; the previous score is preserved in the report history.
Determinism in test mode
Test keys (
hv_test_) return deterministic scores per payload so you can write reliable integration tests against fixed expected values.