Inspiration
I run a computer shop in Kano, in northern Nigeria. People come in to fix laptops and buy accessories, and a surprising number of them end up telling me they are trying to leave. They want to study in the UK. Almost all of them are about to hand between five hundred thousand and one million naira to an agent who is not regulated, not accountable, and often not honest.
That is what Senda is for. It helps Nigerians prepare a UK study visa application without paying an agent a year's salary for work they cannot see.
The thing I had to build around is not information. Information about UK visas is free and public. The scarce thing is trust. An applicant cannot tell a real adviser from a confident stranger, and if they get it wrong they lose the money and the visa. That framing decided almost every engineering choice I made.
What it does
Senda runs six Gemini decision points in production. It assesses an applicant's readiness against the UK Student visa framework. It ranks which countries actually have demand for their profile, rather than the one that pays an agent the biggest commission. It recommends course directions and a realistic route from study through to settlement. It works out which English test they need and builds a prep plan for their timeframe. It monitors live UK policy changes using Google Search grounding and shows the sources it found. And in the paid step it generates the application pack: a Statement of Purpose, a tailored document checklist, and a financial evidence guide.
It also writes the follow-up. Anyone who runs the free check receives a personalised email built from their own assessment, naming the single next step that is blocking the others. That email is written by Gemini, sent automatically, and I never touch it.
How we built it
Next.js on Vercel, Gemini 2.5 Flash through the Google AI SDK with enforced JSON schemas, and Firebase Firestore as the production store. Payments are live through Paystack.
The engineering choice that matters most is what the model is not allowed to do, and it is mostly a list of refusals. The model is forbidden from stating a visa fee, a financial threshold, a processing time or a deadline. Those numbers change, and a wrong one costs somebody their savings. It is instructed to send the applicant to gov.uk instead. In the generated Statement of Purpose it may use only facts the applicant actually supplied, and anything missing comes back as a visible bracketed placeholder rather than a plausible invention. It is never allowed to produce a URL, because a hallucinated link in this market means sending an anxious person to a convincing fake visa site. Every official link in the product is hand maintained in code.
The one exception is the policy watcher, which may quote a figure only when it is attributed to a source it genuinely retrieved.
Every one of those calls is written to Firestore with its model, full input, full output and measured latency. I did not add that for judging. I added it because I needed to see what the model was telling real people.
Challenges we ran into
Making a language model useful while forbidding it from being specific is harder than it sounds. Latency was one: tuning the thinking budget cut responses from around fifteen seconds to about six. Trust was the other, and it is not a model problem at all. No amount of output quality tells an anxious applicant that I am not another agent, which is why a named, externally verifiable human ended up at the centre of the product rather than at the edge of it.
The honest challenge I have not solved is distribution. The infrastructure to run this business exists and works. A base of paying customers does not yet, and I am not going to dress that up.
Accomplishments that we're proud of
I test the refusals rather than hope for them. The follow-up email generator has a script that runs real model calls across several applicant profiles and fails if any output states money, a duration, a link, or implies a visa will be approved.
A named lawyer is the gate. Michael Ezimoha is regulated by the Solicitors Regulation Authority, and his registration number is printed on the site beside a link to the public register. Anyone can verify him before paying us anything.
I built this alone, in forty-eight days, as a non-technical founder using AI as the engineering team, while running a shop.
What we learned
Generation scales, judgement does not. The AI writes the first email; when someone writes back, they get me. In a category where the downside is somebody's savings and their plans, the judgement should stay human.
That principle also decides the business shape. Today this is one person and one contracted reviewer, paid per review, with capacity for around fifty a week. The model needs more reviewers as it grows, not fewer, because the human gate is the product.
What's next for Senda
Distribution. The larger opportunity is on the other side of it: a Nigerian graduate who could not consider a UK Master's because the intermediary cost more than the tuition deposit can now prepare one for a fraction of it, with the free tools costing nothing at all. That is not a hypothetical benefit to somebody's career, it is the difference between applying and not applying.
Built With
- firebase
- firestore
- gemini
- google-ai-studio
- next.js
- nodemailer
- paystack
- react
- tailwindcss
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.