4 systems · 2024 — Present
AI assistants & LLM integration
Conversational assistants and speech pipelines placed behind a provider interface, so the model is a swappable adapter rather than a dependency — with the slow, expensive calls moved onto queues.
The systems behind it
- 2026 — Present
Omnichannel AI Assistant
One webhook, one app, every channel — WhatsApp, Messenger and Instagram
An automated reply system serving every page and every WhatsApp number a company owns from a single deployment. The AI layer is abstracted behind a provider interface, so the model can be swapped without touching conversation logic — and the Meta app-review surface (privacy policy, terms, data deletion) ships with it.
Role: Sole engineer — AI abstraction, channel routing and Meta review
Node.jsExpressOpenAI SDKMeta Graph APIWhatsApp Cloud APIInstagram Messaging - 2024 — Present
Multi-Tenant WhatsApp Messaging Platform
Campaigns, scheduling and AI replies across many client accounts
A messaging platform serving multiple client accounts from one deployment: webhook ingestion, template management, scheduled jobs, an AI chat service, push notifications and invoice generation.
Role: Backend engineer
Node.jsExpressMongoDBAgendaFirebaseOneSignalSendGrid - 2024 — 2025
Real-Time Voice Translation
Speech in, translated speech out — with the slow parts pushed off the request
A Python speech service handles recognition and translation while a Laravel control plane manages speakers, subscriptions and quotas. Everything expensive runs through Redis-backed queues, so a slow model response never blocks a request — the same asynchronous pattern that carries the translation workload on the Bulum platform.
Role: Full-stack — speech service, queueing model and admin control plane
FastAPIOpenAISpeechRecognitionPyAudioNumPyLaravelRedis queues - 2024 — 2025
Bulum Platform
Social platform with a queue-driven translation pipeline
Real-time voice processing and multi-language support built on Redis-backed queues, so heavy translation work runs asynchronously instead of holding requests open.
Role: Backend and infrastructure
LaravelRedisQueue workersTranslation APIREST API
Describe the problem, not the solution
The most useful first message is what is going wrong and what it costs you. I will tell you honestly whether I am the right person for it.
