

I left Ile-Ife on a Friday with a bag, a laptop, and a product that was technically live but nowhere near presentation-ready. Squad Hackathon 3.0 was in Lagos — Four Points by Sheraton, accommodation and transport covered, 1,600+ teams competing. I got there feeling like we had a shot. Then the night before the event, I looked at our submission checklist and realised we had the product but none of the packaging. No pitch deck. No demo video. No one-pager. We stayed up. Around 5am my team slept. I didn't. I went to the event the next morning on zero sleep, felt it hit me physically by midday, and we still missed the top 50 cut by 25 spots. This is the breakdown.
VeraDoc is an AI-powered academic certificate and transcript verification platform built specifically for Nigerian institutions. The core idea is simple — fake credentials are a documented, widespread problem in Nigeria, and the existing solutions take 2 to 6 weeks to return a verification result. By the time an institution gets confirmation from an issuing body, they may have already onboarded the wrong person. VeraDoc is the fast first screen. Upload a document, spend one credit, get a forensic AI verdict in under 10 seconds.
The AI pipeline runs on Groq's inference API using llama-4-scout-17b, a vision-capable model. We send the document as a base64 image with a strict system prompt that constrains the model to analyze specific forensic signals — font consistency, seal integrity, formatting alignment, text layer anomalies, date validity, and signature presence. The model is forced to return structured JSON only. No free-form text, no hallucinations, no ambiguity. The output is always a verdict (AUTHENTIC, NEEDS REVIEW, or FAKE), a trust score between 0 and 100, a list of flags, a list of passed checks, and a one-sentence summary.
Payments run through Squad API — which was a hackathon requirement, but genuinely made sense for the product. Users buy credit packs through Squad's checkout. Squad fires a signed webhook to our FastAPI backend on payment confirmation. We verify the HMAC-SHA512 signature, grant credits, and the user can run verifications. No Squad payment, no verification. Squad is the gate, not a decoration.
The full stack: Next.js 16 on the frontend, pure client-side with JWT bearer token auth talking to the backend over HTTP. FastAPI on the backend handling everything — auth, users, credits, payments, verification pipeline. MongoDB for persistence. Groq for inference. Tavily for issuer contact hints on documents that come back NEEDS REVIEW. Deployed on Vercel and Render.
Three of us. All 200-level Software Engineering students at OAU, Ile-Ife. Temiloluwa Gboyega owned the entire backend — FastAPI service, MongoDB, Squad integration, JWT auth, the Groq pipeline, everything server-side. Oluwatobi Lupo handled the frontend integration — connecting the Next.js app to the backend, the auth flow, the credit purchase flow. I handled the UI, all the pages, the design system, and most of the product decisions.
No comments yet - start the discussion
We split the architecture cleanly early — two separate repos under one GitHub org, Next.js as a pure frontend with no API routes, FastAPI as the single backend service. That decision saved us. Everyone worked in their lane without stepping on each other, and the integration points were clearly defined in the API doc we wrote before writing a single line of code.
The night before the event. Not because of the work itself but because of the sequencing. The core product was done. VeraDoc was live, the AI pipeline was running, Squad integration was working end to end. But we had no pitch deck, no demo video, no one-pager, and the event started at 9am. It was past midnight.
I made a call to just execute in order — one-pager first, pitch deck second, demo video last. We finished around 5am. My team slept. I didn't make that choice consciously, I just wasn't tired enough yet, and then suddenly it was 7am and there was no point. I went to the event carrying the weight of that night, and by round three — the DSA qualifying round — I was sick. Not dramatically, just that specific kind of functional illness where your brain is running at 60% and you can feel it on every question. We scored 3 out of 100 in that round. Ranked 12th in the room, which tells you how hard the round was for everyone, but the cumulative damage was already done.
The architecture held. We made a decision early to keep the frontend completely stateless — no NextAuth, no API routes, no Mongoose in the Next.js layer. Everything goes through FastAPI. That meant the frontend was genuinely just a UI, and the backend was genuinely just a service. When we hit integration day, there were almost no surprises because the contract was defined in an API doc before anyone wrote code.
The AI pipeline is also something I stand behind. It would have been easy to just prompt a model to say something about a document and display whatever it returned. Instead we engineered the output to be deterministic and structured — temperature 0.1, strict JSON-only system prompt, specific forensic signals, defined verdict bands. The model cannot wander. That's not a small thing and it's not accidental.
And the product is live. Not a demo, not a mock, not a prototype. veradoc.vercel.app is a working product you can sign up for, buy credits through Squad, upload a document, and get a real AI forensic verdict. We built that in 8 days as second-year students. I'm not going to undersell that.
DSA. That's the most honest answer. We lost the hackathon in round three, not in the pitch room. The product was good enough to compete. The technical test is what cut us and that falls on me to fix. I've been building products and shipping code, but I haven't been grinding algorithmic problems and it showed at the worst possible moment.
I'd also sleep the night before. Not because staying up was wrong — the work needed to be done — but because I'd restructure the week so the packaging wasn't left to the last night. The pitch deck, demo video, and one-pager should have been done two days before the event. The product was live four days before we left. That time existed. I just didn't use it for that.
The third thing is smaller but real — we built for the product and underbuilt for the presentation. Watching the teams that pitched, the ones that performed best weren't always the ones with the deepest product. They were the ones who could tell a clean story under pressure in five minutes. That's a skill and it needs practice the same way code does.
Sitting in that hall watching every pitch after we were eliminated was not a bad feeling. It was clarifying. I could see exactly where we were stronger than teams that made it through, and exactly where they beat us. That kind of visibility is hard to get anywhere else. I left Lagos knowing more than I arrived with, which is the only thing that actually matters.
Built for Squad Hackathon 3.0 by The Dev Team, OAU Ile-Ife. May 2026.