Muhammed Lizan — AI Automation Developer
ML Muhammed Lizan
Get in touch
Open to AI automation and workflow engineering roles

Muhammed Lizan

AI automation developer — n8n, Make, Claude API,
Meta platform APIs, Supabase, Python

I build workflow automation that connects the tools a business already uses — customer conversations, lead follow-up, data that otherwise lives in a spreadsheet or in someone's head. Six builds are written up below, with the architecture of each and what actually decided whether it worked.

Selected work
Muhammed Lizan

Selected work

06
2026 · 08 Personal build

WhatsApp shopping assistant

n8n canvas: WhatsApp inbound trigger, STOP and non-text filters, a group that loads catalogue and FAQ, a checkout router, the Shopping Assistant agent with Groq model and memory, and branches for product cards, cart, and payment link
n8n — 29 functional nodes: inbound filtering, the checkout router, the assistant with its model and memory, then the send branches.

An AI shopping assistant that lives entirely inside WhatsApp. A customer messages the store’s number, talks to it in plain language, gets product cards with real photos and prices, and is walked through a name-and-address checkout before receiving a payment link — with no human, no app and no website. Built in n8n against Google Sheets: no custom backend, no hosting, no database.

One rule shapes the architecture. The model decides what to say; it never decides what is true. Prices, product images, stock status and payment links are read from the sheet by deterministic Code nodes, and the model is forbidden from writing a URL or a price. A hallucination can make the bot phrase something oddly; it cannot make it quote a wrong price or send a wrong link. An invented product ID is filtered against the real catalogue and simply sends nothing.

Every WhatsApp message is its own workflow execution, so nothing survives in memory between turns. The checkout therefore lives in a checkoutStage column as a state machine — awaiting name, awaiting address, complete — collecting one field per turn, re-asking on invalid input, with an escape hatch so a customer can never be trapped mid-flow. A router reads that state before the AI on every single message, which is why a delivery address is never handed to the model and mistaken for conversation.

The build’s hardest bug was a rate limit that would not move. The assistant kept failing against Groq’s 8,000 tokens-per-minute cap, and the requested-token count came back byte-identical after swapping the model and halving the memory window. A number that does not change when you change the thing you think causes it is measuring something else. The window-buffer memory stores user messages verbatim, so with the catalogue in the user message every remembered turn carried another full copy of it. Moving that context into the system message cut the prompt from roughly 8,100 tokens to 2,200 — a 73% reduction with no loss of capability — and the session key had to be versioned to force a clean buffer, because the old oversized turns were still being replayed.

Failure paths are explicit rather than silent. The agent retries twice, malformed JSON gets repaired by a second model call, and a total model outage falls through to a fixed apology so the customer never gets silence. Sends retry three times; a broken product image or a failed log write cannot fail the run.

n8n WhatsApp Business Cloud API Groq (Qwen) AI agent structured output Google Sheets state machine JavaScript
2026 · 08 Personal build

Instagram comment automation

comment posted
Meta webhook
ngrok tunnel
Flask server
Supabase rule lookup
matched on post ID
public replyprivate DM
The rule dashboard: posts on the left, per-post keyword rules on the right. A keyword, a public reply and a private message, saved live.

A keyword in a comment triggers two responses — a public reply and a private DM — within seconds of the comment being posted. Keyword rules are per-post and stored in Supabase, managed through a password-protected dashboard. Adding a rule takes seconds and applies to the very next comment: no code change, no redeploy.

Two implementation details decided whether this worked at all. Private replies have to be addressed by comment ID, not user ID — that is the only way to open a DM thread with someone who has never messaged you, because addressing by user ID fails outside Meta’s 24-hour window. And loop guards are load-bearing: the bot’s own public reply comes back as a comments webhook and its own DM comes back as a message echo, so without a guard on each path the system answers itself indefinitely. A healthy live reply shows exactly three webhooks — the real comment, then two ignored events.

The bot fails soft and the dashboard fails loud. A database outage cannot take down webhook processing, but a save that silently did nothing is worse than an error, so the dashboard surfaces it.

Python 3.11 Flask Meta Instagram Graph API Supabase ngrok Claude Code
2026 · 02 Client project · not deployed

Notion change-detection sync

n8n canvas: Notion trigger, snapshot lookup, merge, comparison, then a switch fanning out to per-field update nodes
n8n — Notion trigger, snapshot lookup, field comparison, then a per-field update fan-out.

Most sync workflows push whole records and let the destination sort it out. This one holds a snapshot table alongside the live Notion database, merges the two on every update, and works out exactly which fields changed — then syncs only those.

The first switch separates newly created pages from edited ones and raises a different notification for each. The second fans out across the ten tracked fields — status, assignee, vessel/project, topic, latest updates, next step, last update, auto action, priority and deadline — so each updates independently instead of the record being rewritten wholesale. The point was precision rather than throughput: no redundant writes, every change traceable to the field. The project did not reach deployment for reasons outside the build.

n8n Notion API Pushcut snapshot diffing conditional routing
2025 · 11 Client delivery

Multi-agent task assistant

n8n canvas: Telegram trigger into a central assistant, with email, calendar, and database agent groups beneath it
n8n — Telegram trigger into the central assistant, routing to the email, calendar, and database agents.

A Telegram message reaches a central assistant that decides which specialised agent should handle it; a JavaScript node then formats the result back into a reply. Three agents sit beneath it. The email agent sends, replies, drafts, fetches, labels and marks messages unread. The calendar agent creates, updates and deletes events, including events with attendees. The database agent creates and updates tasks in Notion, resolves the correct user ID before assigning one, and fires a Pushcut notification whenever something changes.

The assistant carries conversation memory and a few utility tools of its own — a calculator, a reasoning step, and a contacts lookup from Google Sheets — so a follow-up message lands in context instead of starting over. This was my first client delivery: the system took over their task management end to end, from creating a task against the right assignee to notifying them on every update.

n8n Telegram Bot API Google Gemini Gmail API Google Calendar API Notion API Pushcut JavaScript
2025 · 08 Personal build

Voice agent into Airtable operations

Make scenario: Airtable watch, Vapi, HTTP request, then routers branching to Airtable updates, Gmail, a text parser and Slack
Make — Airtable watch into Vapi, then routers branching to Airtable updates, Gmail, and a parsed message into Slack.

A Make scenario that watches an Airtable base and hands each new record to a Vapi voice agent. Once the call is done it pulls the result back over HTTP and routes on what came back: records updated in Airtable, an email out through Gmail, or the transcript run through a text parser and posted into Slack. It runs on a fifteen-minute schedule.

Make scenario: Airtable watch records, router, Gmail send email into Airtable update, and text parser into Slack
The earlier scenario without the voice layer — Airtable watch, router, Gmail one way and a parsed Slack message the other.

Built in two stages. The plain version came first: watch Airtable, route, email through Gmail on one branch and parse into Slack on the other. The voice layer went on the front once that part was reliable — which is the right order, because a voice transcript is far messier than a form submission and has to be routed on content rather than on field names.

Make (Integromat) Vapi Airtable Gmail Slack HTTP request text parser router
2025 · 11 Personal build

Daily news digest bot

n8n canvas: schedule trigger, HTTP request to NewsAPI, JavaScript code node, Telegram send message
n8n — schedule trigger, NewsAPI request, JavaScript formatting, Telegram delivery.

A scheduled workflow that pulls the day’s top headlines, formats them, and delivers them to a Telegram bot every morning with no manual step. Small on purpose — it was the build where I got the scheduling, request, formatting and delivery chain right end to end before putting those pieces into anything larger.

n8n NewsAPI Telegram Bot API scheduled triggers

Experience

Exile Automate — Kozhikode, Kerala

AI Automation Developer · full-time · Mar 2026 — present
AI Automation Developer · internship · Dec 2025 — Mar 2026

Working inside the delivery team on client automation builds: developing and testing n8n workflows and API integrations, applying reliability patterns before handover — webhook signature verification, duplicate-execution guards, retry logic, API rate-limit handling — and documenting how each workflow behaves so the team can maintain it.

Independent

Automation developer · 2025

Scoped and delivered a multi-agent task-management system for a first client, ahead of joining Exile Automate.

What I work with

AI and LLM development

Agent architecture · tool calling · memory and context management · multi-agent routing · human-in-the-loop approval stops · guardrails and grounding · prompt engineering · structured outputs · RAG · embeddings · vector databases (Pinecone) · model selection and token cost control · OpenAI API · Anthropic Claude API · Google Gemini · Groq

Automation and integration

n8n · Make · Gmail API · Google Calendar API · Google Workspace APIs · Telegram Bot API · WhatsApp Business Cloud API · Meta Graph API · Notion API · Slack · webhooks · scheduling and triggers · error handling and fallback paths

Databases, cloud and tooling

PostgreSQL · Supabase · Google Sheets as a data store · Notion databases · Airtable · Git and GitHub · Google Cloud project and OAuth app setup · self-hosted deployment · execution logging and monitoring

AI-assisted development

Claude Code · Codex · Antigravity · ChatGPT · Claude

Explaining and documenting

Technical write-ups · API and workflow documentation · handover notes · explaining systems to non-technical people

Languages

English

Professional

Hindi

 

Malayalam

Native