Skip to content

Case file 001 — AI education & workforce platform

Ejaad.ai

“AI features fail in production for boring reasons. The interesting work was the queue.”

Year
2024 — present
Status
In production
Role
Team Lead · Fullstack
Client
Alwasaet
Stack
Nuxt 3TypeScriptSupabaseBullMQPostgres

Context

Ejaad.ai is an AI-powered platform focused on education and workforce development. AI products have a specific production problem: the interesting part — generation — is slow, unreliable, and priced per call. A request/response mental model collapses the first time a model takes ninety seconds or a provider times out.

I led the team as Team Lead, owning architecture, code reviews, and feature planning alongside hands-on frontend and backend work.

The system

Fig. — SystemEvery AI operation is a job. The request cycle never waits on a model.
Client
  • Nuxt 3 app
  • Realtime status
API & orchestration
  • Nitro server routes
  • BullMQ queues
  • Workers
Data & providers
  • Supabase / Postgres
  • Auth & storage
  • AI providers

The rule that shaped everything: no HTTP request ever waits on a model. Every AI operation becomes a job — queued in BullMQ, processed by workers, its state written back to Postgres, its progress streamed to the client.

Decisions

Outcome

The platform ships AI features on infrastructure that fails gracefully and scales horizontally by adding workers. The team ships behind stable seams — provider churn stays in one module. Still in production, still growing.