Back to Portfolio
Case Study·CV Collection Bot

A WhatsApp Bot That Replaced a Morning of Manual Work

A friend runs one of the leading recruitment firms in Qatar. His team was downloading CVs from WhatsApp by hand, renaming them, dragging them into folders. I built a bot that does all of it. 1,500+ CVs in the first week.

Stack

Next.js 16WhatsApp Cloud APIUpstash RedisGoogle DriveResend

How it started

A friend of mine runs Candidzone, one of the leading recruitment firms in Qatar. We were catching up and the conversation turned to tech. He said, "Ramees, I have a problem. If you can solve it, I want your service."

They had forms and systems on their website, but people still WhatsApp them. Especially for blue-collar jobs, WhatsApp is how most applications come in. They couldn't stop it because they'd lose candidates. But every CV had to be downloaded by hand, renamed, filed in the right folder, and tracked across multiple teams. Nobody knew what had been processed and what hadn't. It was just time-consuming work with no value.

What he actually wanted

I offered a complete WhatsApp API solution with a full platform. His response: "We're already fed up with platforms. We just need something simple. Can it go straight to our ATS?"

I asked about their ATS API. They weren't sure it had one. So we landed on the next best thing: forward everything to email. Their ATS already had email capture set up, so anything that hits the inbox gets pulled in automatically. No integration needed.

He also wanted low ongoing costs. Since the first message always comes from the candidate, every conversation falls under WhatsApp's "service" category, which means no per-chat API costs. For email, we used Resend's free tier (100 emails/day). That was the plan.

What I built

A bot on Candidzone's WhatsApp number. Candidate messages in, picks "Submit CV" from the menu, gives their name, email, and contact number, uploads their CV. Done. They get an email with the CV attached, renamed to the applicant's name. Candidate gets a confirmation.

Three flows: CV submission, sales inquiries, general queries. Sessions persist for 24 hours, so a candidate can stop halfway and pick up later without losing progress. If they go quiet, nudge reminders go out at one and two hours. After three hours with no reply, the session auto-closes.

The bot also detects whether a sales inquiry email is a generic address (Gmail, Outlook, Yahoo). If it is, it asks for the company name. If it's a corporate email, it skips that step. Small thing, but it saves the recruiter from following up.

I built the whole thing in about a week, including setting up their WhatsApp Business Manager, getting the API approved, and configuring the webhook. Went through many revisions with the team on the conversation flows and message wording before we were happy with it.

Hitting the email limit

Resend's free tier gives you 100 emails a day. We hit that within the first few days. Instead of upgrading to a paid plan immediately, I added Google Drive as a second destination. Every CV now also lands in a Drive folder organized by date, with the file renamed to the applicant's name. Even if the email quota runs out for the day, nothing gets lost.

Stack

Next.js 16 serverless on Vercel. WhatsApp Cloud API for messaging. Upstash Redis for session state. Google Drive OAuth2 for file storage. Resend for email notifications.

Drive folder IDs are cached in Redis so the bot only hits the Drive API once per day, not once per CV submission. Rate limiting is built in at 20 messages per hour per number to prevent spam.

The dashboard nobody asked for

They never asked for a dashboard, but I couldn't help myself. I built a password-protected analytics page for their team. KPI cards showing total CVs, completion rate, and weekly trend. A 30-day bar chart of daily submissions. A 14-day table broken down by sessions, CVs, sales leads, and errors. And a conversion funnel showing how many sessions turn into actual submissions.

1,500+ CVs collected in the first week. 77% completion rate. 79% chose the CV flow over sales or general queries.

The takeaway

The bottleneck was never the candidates. They were on WhatsApp, willing to apply. The friction was everything that happened after they hit send. Automate the filing, and the candidates take care of the rest.