Engineering Lab

Experiments with a technical purpose

Not a trophy shelf — a working log of AI, APIs, realtime, and systems work. Statuses are honest: completed, in progress, experiment, or planned.

  • AI / LLMIn progress

    Portfolio knowledge assistant

    Streaming assistant that answers only from a structured portfolio knowledge base — not a generic chatbot.

    Problem
    Visitors ask project and stack questions; a free-form LLM would invent experience unless grounded.
    What I learned
    Grounding + hard system rules beat long prompts. Streaming keeps the UI feeling responsive without waiting for full completions.
    Technology
    Next.js Route HandlersGroqServer-side retrievalSSE-style streaming
  • RAGExperiment

    Structured knowledge retrieval

    Category-tagged knowledge chunks with keyword scoring, shaped so vector RAG can plug in later.

    Problem
    Dumping the whole site into one prompt wastes tokens and still hallucinates.
    What I learned
    Small, labeled chunks with explicit categories make answers auditable and upgradeable to embeddings later.
    Technology
    TypeScriptSectioned KBServer-only retrieval
  • APIIn progress

    Demo API playground

    Interactive request → process → response demo with validation and rate limiting — no paid external calls.

    Problem
    Portfolios claim “API experience” without showing a safe, inspectable request/response path.
    What I learned
    Mock/demo responses are the right default when a live LLM call would create uncontrolled cost.
    Technology
    Route HandlersInput validationIn-memory rate limit
  • RealtimeIn progress

    Realtime collaboration surfaces (Zumelia)

    LiveKit-backed realtime media/collaboration paths inside a social product stack.

    Problem
    Meet / collaborate flows need low-latency sessions without reinventing media infrastructure.
    What I learned
    Separating auth/data (Supabase) from realtime media (LiveKit) keeps responsibilities clear.
    Technology
    LiveKitNext.jsSupabase
  • APIIn progress

    Payment orchestration (Zumelia)

    Paystack-integrated payment flows for earn/collaborate product motions.

    Problem
    Client-only payment confirmation is unsafe; webhooks and server verification are required.
    What I learned
    Treat payment success as unverified until the server confirms — never trust the browser alone.
    Technology
    PaystackServer-side verificationSupabase
  • AI / LLMIn progress

    On-product AI (Zumelia + Groq)

    Groq-powered AI features inside Zumelia, kept server-side so keys never hit the browser.

    Problem
    Shipping AI features without leaking keys or letting prompts invent product facts.
    What I learned
    Provider-agnostic adapters make it easier to swap LLM vendors without rewriting product UI.
    Technology
    GroqNext.jsServer routes
  • WebhooksExperiment

    Webhook verification patterns

    Patterns for validating inbound webhooks (payments, automation) before mutating data.

    Problem
    Unverified webhooks are an open write path into your database.
    What I learned
    Idempotency keys + signature verification prevent duplicate charges and forged events.
    Technology
    HMAC / signature checksIdempotencySupabase
  • MCPPlanned

    MCP-aware agent tooling

    Exploring Model Context Protocol so agents can call tools with clear boundaries.

    Problem
    Agents without constrained tools become unpredictable and hard to secure.
    What I learned
    Explicit tool contracts beat free-form function calling for production-minded demos.
    Technology
    MCPTool schemasAgents
  • CachingIn progress

    Cached GitHub activity feed

    Public GitHub profile/repos fetched server-side with caching so the portfolio does not hammer the API.

    Problem
    Live GitHub widgets can fail rate limits and slow first paint if called naively.
    What I learned
    Cache + fallback empty states are more professional than a broken widget.
    Technology
    GitHub RESTNext cacheGraceful degradation
  • PerformanceExperiment

    Portfolio performance budget

    Keeping heavy AI/interactive surfaces off the home LCP path via route splitting and lazy UI.

    Problem
    Engineering demos can destroy Core Web Vitals if loaded on every page.
    What I learned
    Interactive engineering features belong on dedicated routes, not the marketing hero.
    Technology
    App Routerdynamic importImage optimization