Tarif
CV Start a project

Ali Mohammad Tarif Senior Backend & AI Engineer

I build AI systems that answer customers on WhatsApp, and I keep them running in production.

  • Primary engineer of ezychat.io, an AI SaaS with paying customers
  • Ex-iPrice Group: 150,000+ daily users across 8 countries
  • 7 years of Python & PHP · AWS · PostgreSQL · LLMs

Open to senior roles and projects · Kuala Lumpur, UTC+8 · remote or on-site

It starts with one message.

A customer asks a small business a question on WhatsApp at 11:42 pm. Nobody is at the desk. The next five stops are what happens before they get an answer, all built and run by me.

Designed before it’s built.

I write the design first, high level and low level, covering scale, security and cost. Then I build all of it: the backend, the AI layer and the AWS infrastructure behind ezychat.io. Hover the hologram to see the parts.

Nothing gets dropped.

The reply is marked as owed in the same transaction the message is saved, so a crash can’t lose it. Try it: kill a worker mid-reply.

  1. A replay of how the system recovers. Nothing real is harmed.

The right answer, or none.

Ask about my work. This runs a real search over 22 facts from my CV in your browser, with the same rule as production: below the score floor, it declines instead of guessing.

Measured, then fixed.

Drag the load up and watch the dashboard. These are my real load-test numbers from a production-sized task: throughput fell as callers rose, until I added admission control.

throughput 157.6 req/sp99 107 ms

The fix derives the concurrency limit from a 200 ms latency target and sheds overflow with a 503. At twice the load, p99 fell from 6.5 s to 3.7 s.

The answer lands.

Sent exactly once, inside WhatsApp’s 24-hour window, priced on a per-call ledger. That’s ezychat.io, an AI platform with paying customers. I can build yours, or join your team.

Scroll to fly through the system, or pick a stopScroll through the system, or pick a stop

Selected work.

Three systems I shipped and ran in production: the problem, what I built, what changed, and the decisions behind it.

ezychat.io

2025 – now · primary engineer

A multi-tenant AI SaaS with paying customers.

Visit ezychat.io

Python · FastAPI · PostgreSQL + pgvector · Redis · Celery · Gemini · Amazon Web Services (ECS Fargate) · Terraform

Problem

Small businesses lose customers who message on WhatsApp, Instagram or web chat when nobody is free to reply.

What I built

The whole backend: AI employees with hybrid RAG and tool calling for bookings and orders, a shared inbox, model failover, Stripe usage billing and the AWS stack in Terraform.

Result

API throughput 35 → 70 req/s, p50 349 → 121 ms after a load test at production size. No reply is lost by design: every owed turn is swept and replayed.

Decisions and lessons
  • DecisionWebhooks get their own service on their own load-balancer rule, so a bad API deploy never stops message intake.
  • DecisionModel IDs are pinned and every change is a migration, after a vendor alias silently tripled the price.
  • DecisionThe scheduler runs as a single service, so workers scale out without firing jobs twice.
  • LessonLoad tests only mean something at production shape: unpinned runs varied by ±28%.

An AI agent inside WhatsApp groups

2025 · backend architect

Operations software for Malaysian contracting companies.

Laravel · Swoole WebSockets · Redis Pub/Sub · MongoDB · Python AI service · Amazon Web Services (ECS)

Problem

Site teams run projects in WhatsApp groups, so tasks, defects and decisions get buried in chat.

What I built

The HLD, LLD and backend: a REST API, a real-time WebSocket hub and an AI service. The agent turns chat into tasks and defect reports, reads photos and voice notes, and writes the nightly site report.

Result

In production with contracting companies across Malaysia, with Docker deploys to AWS through GitHub Actions.

Decisions
  • DecisionRedis Pub/Sub fans out to a Swoole WebSocket hub with an HMAC handshake, so the API, the AI service and the dashboard share one real-time channel.
  • DecisionSeparate named queues for messages, reports and chat imports, so slow AI work never blocks delivery.

Core Web Vitals monitoring

2021 – 2024 · iPrice Group

Price comparison for 150,000+ daily users in 8 countries.

PHP · Laravel · Python · Elasticsearch · Logstash · Kibana · AWS · Terraform

Problem

New features could slow pages down without anyone noticing, until search rankings dropped.

What I built

Real-time Core Web Vitals monitoring from real users through Logstash into Elasticsearch and Kibana. I also owned AdTech across regions.

Result

Slowdowns caught before they hurt SEO. 10M+ ad impressions a month without slowing pages, and ~25% lower Datadog costs.

The numbers behind it.

The ezychat.io API was load-tested at production size: 0.25 vCPU, 50 tenants, 400,000 conversations and 2 million messages. One tenant holds 55% of the data, so a missing index can’t hide. The two charts are separate runs, so compare numbers within a chart rather than across them.

Throughput fell as load roseConcurrency sweep: one run, 4 to 192 callers

Every response was still a 200, yet at 192 callers the server did a third of the work it did at 4. Admission control now derives the concurrency limit from a 200 ms latency target, and overflow gets a typed 503 with Retry-After.

What the capacity pass changedBefore and after the index work

Before in grey, after in violet. Shorter is better for latency; longer is better for throughput. Throughput and p50 are for the full load-test request mix at 16 concurrent callers.

New indexes plus 57 foreign-key indexes. The p99 row is with admission control at about twice capacity.

I write down the trade-offs I make.

The more accurate model didn’t ship

On labelled real conversations, a candidate model scored with 5.8% errors against 11.5%. It cost 50–70% more and was less consistent from run to run, so I kept the cheaper one and reported the sample sizes.

Admission control has limits

It helps at twice the load. At ten times it barely helps, because the process is starved before any middleware runs. I documented that and left edge shedding as the deliberate next step.

Incidents get written up

A vendor moved a model alias and tripled the price; a dead failover lost a quotation. Each has a root cause, a fix and a guard. Every model ID is now pinned.

Hiring? Here’s the short version.

Everything you’d screen for on one card. Or paste your job description to see where I match, and where I don’t.

Role
Senior Backend & AI Engineer
Experience
7 years · Python & PHP
Now
Primary engineer, ezychat.io (since Jan 2025)
Before
iPrice Group (2021–2024) · Grenapps Solutions (2019–2021)
Location
Kuala Lumpur, Malaysia · UTC+8
Work style
Remote, or on-site in Kuala Lumpur
Open to
Senior Backend and AI Engineer roles
Education
BSc Computer Science, IIUM · CGPA 3.51
Languages
English · Bahasa Melayu · Bangla

Match my experience to your role

A keyword match against my CV, run in your browser. Nothing is sent anywhere, and gaps are shown too.

Have a project? Let’s build it.

I take on a few freelance projects for teams that need AI or messaging systems that hold up in production. Each one starts small and fixed in scope, so you see working results before you commit to more.

AI features that survive production

A RAG assistant, an agent with tools, or document AI, with the safety net already built in.

  • Hybrid retrieval with a grounding gate
  • Golden-set evals with pass/fail thresholds in CI
  • Model failover and per-call cost tracking

First stepA working prototype on a sample of your own data.

WhatsApp and messaging integration

Customer conversations on WhatsApp, Instagram and Messenger, wired into your product properly.

  • WhatsApp Cloud API and Meta app review
  • Webhooks that never drop or double-send
  • A real-time shared inbox

First stepOne channel, end to end, with your real templates.

Backend and AWS hardening

For a product that wobbles under load, leaks between tenants, or costs too much to run.

  • Load test at production size, then fix what breaks
  • Row-level security, rate limits, admission control
  • Terraform, CI/CD and a cost review

First stepA written audit with a prioritised fix list.

Portrait of Ali Mohammad Tarif

Tell me what you’re building.

A few lines are enough. I read every brief myself.

  1. You send a brief with the problem, the stack and a rough timeline.
  2. We have a short call to check fit and scope.
  3. You get a written proposal with milestones and a fixed price or day rate.
tohin.tarif@gmail.com
Do you work with teams outside Malaysia?

Yes. I work remotely from Kuala Lumpur (UTC+8).

Can you work with our existing stack?

Most likely, if it’s Python or PHP on AWS. I’ve shipped FastAPI, Django REST, Laravel, PostgreSQL, MongoDB and Redis in production.

What do you need from me to start?

A short brief: the problem, your stack and any deadline. A call then settles the scope before any proposal.

Would you join full-time instead?

I’m open to Senior Backend and AI Engineer roles, remote or in Kuala Lumpur. The hiring card above has the details.

What do you need?

Goes straight to my inbox. No newsletter, no sharing.