Peasy
Omnichannel engagement & AI-automation SaaS — one inbox across WhatsApp, Messenger, Telegram, X, Line, email, SMS & web chat, with a visual chatbot flow builder, LLM/voice AI, ad-campaign automation, and commerce.
The problem
Peasy is an omnichannel engagement platform for small and mid-size businesses in Malaysia and SEA. In one product a business runs a shared inbox that unifies WhatsApp, Facebook Messenger, Telegram, Twitter/X, Line, email, SMS and a web live-chat widget, builds AI chatbots, sends marketing campaigns, takes orders, books appointments, and automates Facebook/Google ad campaigns — with usage billed through a credit system. Over ~3 years I owned the full JavaScript/TypeScript surface of that product (Vue & React web, Node.js backend services, and the React Native agent app), while the Ruby/PHP layers were owned by other engineers.
What I built
Contributions across 5+ apps and services: the flagship Vue omnichannel chat app (chat.peasy.ai, a heavily extended Chatwoot foundation with substantial original Peasy modules), a React ad-automation + analytics console (app.peasy.ai), several Node.js/Express microservices behind the AI/WhatsApp/automation features, a Next.js Calendly-style booking app, and the React Native agent mobile inbox.
Engineering highlights
A visual programming surface, end to end
The flow builder isn't a form — it's a node-graph editor on the front end and a graph-to-bot compiler on the back end (graph traversal, template packaging, per-tenant isolation, Meta Graph API + Stripe + S3). Building both sides of that is the most representative piece of my work here.
Real-time & streaming voice AI
ActionCable-driven live inbox updates on web and mobile, and a barge-in streaming voice pipeline (STT → LLM → TTS) with a sentence-chunking queue that starts speaking before the model finishes — it had to feel like a phone call, not request/response.
WhatsApp, two ways
Both the official provider path (Meta Cloud API / 360Dialog / Twilio) and an unofficial session-based path (Baileys QR login) — including the auto-restore, reconnect, and failure-recovery resilience the latter demands across many tenants.
LLM product features, not just an API call
RAG ingestion (files + URLs), tool/function-calling config, dynamic variables, cost tracking, and an evaluation/testing harness — the scaffolding a real LLM product needs to stay reliable and affordable.
Stack range across eras
Legacy React 16 + Redux-Saga and Vue 2 alongside modern Next.js 13/14 + TypeScript + Tailwind + Redux Toolkit — three years of both maintaining and modernizing, with consistent multi-tenant scoping feeding a credit-based usage-billing layer.
Results
- ✓Contributed for ~3 years to a live, revenue-generating SaaS with real business customers.
- ✓Worked across 5+ apps and services (Vue chat app, React ad console, Node microservices, Next.js booking, React Native mobile) — genuine full-stack breadth on one product.
- ✓Delivered the interactive, high-complexity parts (flow builder, LLM suite, campaign builders, voice AI, WhatsApp integrations, ad automation) rather than CRUD screens.
Full tech stack
Built at Peasy · Malaysia — the source lives in a private repository, so it isn't publicly available. A live screen-share demo and code walkthrough are available on request for hiring managers.