sam@samabiodun.tech — #lab
Samuel Abiodun
Samuel Abiodun
software / ai engineer · lagos, ng
Samuel Abiodun
samnow

Things I build for myself, on my own time. Latest first.

2026
Samuel Abiodun
sam2026

📌 Pinned a canvas for loop — the thing I've been building lately.

▤ Canvas · loop
loop

A browser app for practising data-structures & algorithms interviews out loud. Pick a problem, then talk through it with an AI interviewer over voice — it listens, probes your reasoning, hints when asked, and writes into your code editor.

The interview · 5 phases
clarify→ approach→ code→ test→ analyze
What's inside
  • Voice-first, speech-to-speech over the OpenAI Realtime API (WebRTC) — low-latency, not turn-based transcribe-then-reply.
  • NeetCode-150 problem bank, original statements with worked examples, grouped by category and searchable — plus an opt-in pool from the open APPS dataset.
  • Monaco editor with per-language starters and a Run ▶ panel; interviewer tools read the live editor and can write into it.
  • Cost controls — a Practice/Hard model toggle, a deliberately concise interviewer prompt, and a session time cap.
Stack

Next.js 16 · React · TypeScript · @openai/agents (Realtime) · Monaco · Upstash Redis · Zod · Vercel

loop.card
more in the lab soon…
sam2026

The interviewer is an @openai/agents Realtime agent with tool calls that read and write the Monaco buffer — so it can see the code you've written and type into your editor mid-conversation, like a real interviewer reaching for the keyboard.

sam2026

It's built to never validate your answer — words like "correct", "exactly", "that's it" are banned in the prompt, because confirming an answer hands it to you. It probes instead. That constraint did more for interview realism than anything else.

sam2026

Voice is speech-to-speech over WebRTC. The browser never sees my OpenAI key — a server route mints a short-lived Realtime session token, and the client connects with that. Keeps the key server-side and sessions bounded.

sam2026

Pacing is a tool, not a timer hack: a get_time_remaining tool lets the agent nudge you to start coding if you're still stuck on approach, and reserve the last few minutes for feedback — without obsessing over the clock.

sam2026

It burns real OpenAI credits, so it's not wide open: a passcode gate plus per-code usage tracking on Upstash Redis, and a Practice/Hard model toggle (cheap mini by default) to keep a session affordable.

Samuel Abiodun Get in touch
usually replies fast
+