I built this post and the project it describes, Dossier, for the All Things
Agentic Hackathon.
If you've applied for a UK student visa, you know the financial requirement is the
part that gets people refused for reasons that feel unfair: prove you've held
enough money, for a specific number of consecutive days, ending within a specific
window before you apply. The rule itself is public. What isn't reliable is the
internet's summary of it.
The rules changed. Not every page caught up.
On 11 November 2025, the UK raised the required monthly maintenance amounts —
from roughly £1,334/£1,023 a month to the current £1,529/£1,171. I checked six
real, published university guidance pages against the actual current rule.
Two of the six still quoted the old, lower figures, months after the change.
Someone who trusted either page would under-save by hundreds of pounds, hold the
wrong balance for the required 28 days, and risk a refusal — for following advice
that used to be correct.
Full method and result, reported honestly either way, is in the repo:
docs/GUIDANCE_AUDIT.md.
I'm not naming the two outdated pages here — the project's policy is to notify
first and give a reasonable chance to correct before anything gets identified
publicly.
That's the reason I built Dossier: not another chatbot that paraphrases visa
rules, but something that reads the actual rulebook and refuses to guess.
An LLM should never decide what the law requires
That's the design rule underneath everything. Requirements are extracted once from
the real gov.uk rulebook into a deterministic, versioned, paragraph-cited
RequirementGraph. Every eligibility decision and every date calculation runs as
plain Python over that graph — there's a test in the repo that asserts the
assessment engine imports nothing from the agent code at all, so this isn't a
claim, it's enforced. Gemini's only job is asking the next best question and
explaining the result in plain language. It never adjudicates whether a rule is
met.
The requirement itself is split across two official documents in a way nobody
holds in their head:
- Appendix Student sets the amounts (£1,529/month in London, £1,171 outside, capped at nine months) and the 28-day holding period.
- Appendix Finance sets the 31-day evidence-recency limit, and specifies that the 28 days count backward from your statement's closing balance date.
Dossier computes the intersection directly: "Your statement closes 2 Sept. You
qualify from 2 Sept — your evidence expires 3 Oct. Apply in that window."
And one rule collapses the entire requirement: if you've already held UK
permission for 12+ months, none of the financial evidence is needed at all.
Answer that single question and the whole checklist visibly re-evaluates to "not
applicable," each row citing the exact reason why.
It reads your documents, and shows its work
Upload a photo of a bank statement and Gemini extracts the account holder,
institution, closing balance, and closing date straight off the image. Then it
shows you exactly what it read — editable — and nothing becomes a fact the engine
relies on until you explicitly confirm it.
It works while you're not looking
A Cloud Scheduler job recomputes every open case nightly as the real date moves
forward, and writes a morning briefing. A case that reads "not yet eligible" one
day can read "eligible as of today" the next, without anyone opening the app —
the same unattended-autonomy proof that matters for this hackathon's theme, just
expressed through a visa timeline instead of a security scan.
Being honest about what's finished and what isn't
The notebook that records your answers actually supports three kinds of notes:
facts you confirmed, preferences about how you like being asked, and inferences
the system derives on its own. Facts and preferences are fully wired into the live
app today, and editing each has a genuinely different, tested effect — a fact
re-runs the whole assessment, a preference changes only phrasing. The third kind,
inference notes with their own correction control, is designed but not yet
surfaced in the interface. I'd rather say that plainly than let the README imply
more than the product currently does.
What Dossier actually is
Vertex AI (Gemini 3.5 Flash) drives the interview and the document extraction. A
committed rule graph, reviewed against the live gov.uk pages, backs every cited
number. A pure-Python engine — zero network calls, zero LLM calls — handles all the
date arithmetic and the exemption logic. Cloud Run and Firestore host the console;
Cloud Scheduler fires the nightly recheck.
Live demo: https://dossier-console-qupwgyb5aq-uc.a.run.app
Source: https://github.com/AshrafAhmed9/dossier-uk-student-visa
What's next
Surfacing inference notes in the UI with a real correction control, widening the
guidance audit past six pages, and extending the rule graph to the student-loan and
official-sponsorship routes it currently excludes.
Built solo for the All Things Agentic Hackathon (Google Cloud, Gemini, ADK) —
Collaborative Partner track.
Top comments (0)