The Problem: Approvals Were Stuck Waiting for a Laptop
This client runs a manufacturing and supply chain business. Every time their store team needed to buy materials, they had to raise a Purchase Order (PO) — a request that a manager had to review and approve before anything could move forward.
- The manager had to log into a desktop system to see and approve the PO. If they were traveling or away from their laptop — the approval waited. Sometimes for a full day.
- The store team had no idea what was happening. Was it approved? Rejected? Still pending? The only way to find out was to call and ask.
- Important documents were scattered across email, the internal system, and WhatsApp chats, making it hard to track anything in one place.
The result: materials arrived late, production slowed down, and everyone spent time chasing approvals instead of doing actual work.
The Solution: One-Tap Approval via WhatsApp
Instead of asking managers to log into a system, I brought the approval directly into WhatsApp:
- The moment a Purchase Order is created, the manager gets a WhatsApp message with all details and a PDF link — openable in one tap, works on iPhone and Android.
- Right below the message are two buttons: Approve or Reject.
- The manager taps one button. No app to open, no login, no forms.
- The system automatically updates the order status and moves it forward to the next workflow stage.
- Everyone involved gets an instant WhatsApp update saying whether the PO was approved or rejected, and by whom.
What the WhatsApp Message Looks Like
When a PO is raised, the manager receives a formatted WhatsApp notification like this:
Purchase Order Approval
PO Number: PO/STORES/2025/168
Party: [Vendor Name]
Material Description: [Item Name]
Please review the attached PO and tap a button below to take action.
Two CTA buttons appear below the message: ✅ Approve and ❌ Reject. One tap is all it takes.
Automated SMS & WhatsApp Notifications After Every Decision
After the manager acts, the system automatically sends status updates to all relevant stakeholders via both WhatsApp and SMS:
On Approval:
Purchase Order PO/STORES/2025/168 status has been updated.
Status: Approved
Updated By: WhatsApp Approval System
Details: PO approved and moved to Receive Items stage.
On Rejection:
Purchase Order PO/STORES/2025/168 status has been updated.
Status: Rejected
Updated By: WhatsApp Approval System
Details: Reason: Rate is too high / Delivery time unacceptable
Real-Time Multi-Stakeholder Broadcast
Here is a problem most approval systems do not solve: even after the manager makes a decision, the people who actually need to act on it are still left waiting.
In a factory, the Purchase Executives and Procurement Team are the ones who talk to vendors, negotiate rates, and raise the Purchase Order. They need to know the moment a decision is made.
The moment the manager taps Approve or Reject, the system finds all authorized procurement team members and sends them the update instantly — in parallel:
- If Approved → Every procurement team member instantly gets: "✅ PO has been Approved by Manager." They immediately call the vendor to dispatch the material. The store team also knows to get ready to receive it. No one is sitting around guessing.
- If Rejected → The team instantly gets: "❌ PO Rejected. Reason: Rate is too high." Instead of losing 1–2 days figuring out why, they know the exact reason within seconds — and can renegotiate and raise a revised PO immediately.
This closed-loop communication eliminated 100% of internal follow-up phone calls about PO status.
Key Technical Challenges Solved
1. WhatsApp 24-Hour Messaging Window
WhatsApp only allows businesses to message someone within 24 hours of that person last messaging the business — otherwise messages get blocked. Since managers were not always actively chatting, regular messages would often fail to deliver.
The fix: I used pre-approved Meta Utility Templates — a special category that Meta allows to reach users at any time, bypassing the 24-hour inactivity window entirely. This ensures 100% reliable delivery every time.
2. Idempotent Action Handling
If a manager accidentally taps "Approve" twice, or the network blips, the system needed to be smart enough not to process the same approval twice. Every action is validated against the current PO state before any database update is made — preventing duplicates and data corruption.
3. Secure Mobile-Friendly PDF Links
Phones are strict about opening random file links for security reasons. A secure gateway converts PO documents into clean, trusted mobile links that open instantly — no security warnings, no friction for the approver.
4. Role-Based Dynamic Stakeholder Discovery
The system dynamically queries all users with PO creation permissions and broadcasts the decision to all of them simultaneously — zero manual distribution required. The right people are notified the right way, every time, automatically.
Results at a Glance
- Approval time: 6–24 hours → under 30 seconds — approximately 98% faster
- Zero production delays caused by pending approvals
- 100% elimination of internal status follow-up phone calls
- Managers approve from anywhere — no laptop or login required
Tech Stack
- Backend: Node.js, Express.js, TypeScript
- Database: PostgreSQL (AWS-hosted), Prisma ORM
- Messaging: WhatsApp Business Cloud API (Meta)
- Frontend: React, Tailwind CSS
- Hosting: AWS EC2, PM2, secure webhook verification
Why This Works Beyond Procurement
Any business where a decision-maker is the bottleneck — approvals, sign-offs, confirmations — can use this same pattern. It does not have to be procurement. It could be:
- Leave and expense approvals for HR
- Order confirmations for a sales team
- Quality sign-offs on a factory floor
If the approval can be reduced to "yes or no," it can probably live inside a WhatsApp message instead of a system nobody wants to log into.