AceBuddy

Product Engineer → Full-Time
Oct 2025 – Apr 2026
Live product

Agentic learning platform built around focused micro-sessions, async AI enrichment, and spaced repetition adapted to your exam date.

AceBuddy is an agentic learning platform that helps students prepare for exams by breaking content into short, focused study sessions rather than overwhelming them with everything at once. The platform generates sessions from uploaded syllabuses or topics, enriches them with AI-sourced content, tracks recall through spaced repetition, and adapts scheduling to your actual exam date.

I joined on a part-time contract and was extended to full-time after a three-day sprint.

AceBuddy main study session view

The Sprint That Started It

Before I get into the technical work, here's how the contract began. AceBuddy had an investor expo: a live demo in front of potential funders. Going in, the codebase was mid-refactor, a second engineer had just joined, and several core flows weren't production-ready. I was brought in with three days on the clock.

We shipped complete onboarding, a notes module with inline comments, markdown rendering and image support, and enough of the core study experience to run a coherent walkthrough. The demo went smoothly. The contract converted to full-time the following week.

Async Content Enrichment

When a study session is created, it starts lightweight: just a topic outline. AI enrichment is expensive and slow, so it runs asynchronously in the background while the user can already begin studying. The challenge is keeping the session's state consistent across the HTTP layer, a background worker, a nightly cleanup job, and an admin re-enrichment path, all potentially touching the same sessions at once.

The worker uses conditional writes to prevent double-processing. A session only transitions if it's still in the expected prior state. Failed enrichment jobs retry with backoff. A nightly sweep re-queues anything that stalled. The result is that users get progressively richer content as enrichment completes, and corrupt or incomplete sessions get repaired automatically rather than accumulating silently.

Streaming AI in the Study Chat

The study chat is powered by a streaming AI agent. Not a request-response model, but a live data stream that updates the UI as tokens arrive. I built the frontend SSE implementation to handle three failure modes explicitly: network drops mid-stream, reconnection without losing partial content, and progressive rendering so a long response never freezes mid-sentence.

The same SSE channel also delivers progress updates during syllabus parsing. When a student uploads a document, they see real-time feedback as the agent processes it into study sessions.

AceBuddy SSE streaming UI mid-response

Spaced Repetition Around Exam Dates

The flashcard system schedules reviews using spaced repetition. Cards you recall easily get longer intervals before the next review; cards you struggle with come back sooner. The standard algorithm assumes open-ended study. AceBuddy's version adds an exam date constraint: if your exam is in ten days, the system compresses intervals so everything due surfaces before the deadline, with a scaling buffer based on how close you are.

Marketplace and Collections

I owned the marketplace and collections modules end-to-end: card set publishing, discovery, contributor profiles, and collection management, all in Next.js and TypeScript. These are the surfaces through which contributors share study material and students build their personal content libraries.

AceBuddy marketplace or collections screen

0
days to ship onboarding and notes MVP for investor demo
0
concurrent actors on the enrichment state machine
0
SSE failure modes handled explicitly
0
mounted API route handlers across 18 feature domains

Tech Stack

Node.jsExpressTypeScriptPostgreSQLBullMQRedisNext.js 15React 19TanStack QueryZustandRedux ToolkitTailwind 4ExpoPaystackCloudinary
Lagos, Nigeria