DEV Community

Cover image for How I Architected a Scalable WhatsApp Job Assistant (WorqNow)
Lasisi Ibrahim Pelumi
Lasisi Ibrahim Pelumi

Posted on

How I Architected a Scalable WhatsApp Job Assistant (WorqNow)

Over the past months, I’ve been building WorqNow, a WhatsApp-based AI Job Assistant that helps users find jobs, build CVs, get personalised recommendations, and learn career skills — all through simple natural-language chat.

What started as a small idea has grown into a system handling thousands of messages, real-time job searches across multiple APIs, personalised recommendations, and automated CV generation.

This article breaks down the engineering decisions, system architecture, scaling challenges, and technical lessons behind building a modern WhatsApp automation platform.


1. The Problem: Job Search is Broken for Millions

Most job seekers especially in Africa and emerging markets rely on:

  • Slow job websites
  • Fake job groups
  • Cluttered Telegram channels
  • Manual searches
  • Outdated listings

But almost everyone already uses WhatsApp, making it the perfect channel for:

  • Instant job alerts
  • Natural language search
  • Personalised recommendations
  • CV building
  • No sign-up, no app download

The challenge was building a system that feels like a human assistant but scales like a cloud platform.


2. High-Level Architecture Overview

Below is the simplified architecture that powers WorqNow:

User (WhatsApp)
     ↓
Meta WhatsApp Cloud API (Webhook)
     ↓
FastAPI Backend (Python)
     ├── Intent Recognition Engine
     ├── Job Aggregation Service
     ├── CV Builder Workflow
     ├── MongoDB User Store
     └── APScheduler (Background Jobs)
     ↓
External APIs:
     ├── Remotive API
     ├── JSearch API (RapidAPI)
     ├── AI Models for CV Drafting
     ↓
Response Sent Back to WhatsApp
Enter fullscreen mode Exit fullscreen mode

This event-driven architecture allows WorqNow to remain fast, scalable, and modular.


3. Intelligent Intent Recognition

Real users don’t type commands like developers.
They type:

WhatsApp screenshot showing bot interaction

  • “find me backend jobs in london”
  • “I need a cv”
  • “my location is lagos”
  • “show me recommended jobs”

To support flexible language, I built a lightweight intent engine combining:

  • ✓ Keyword extraction
  • ✓ Fuzzy matching
  • ✓ Context memory
  • ✓ User profile learning

Example:

if fuzzy_match(["search", "find", "job"], message):
    intent = "keyword_search"
elif "location" in message or "in " in message:
    intent = "set_location"
elif fuzzy_match(["make cv", "build cv", "resume"], message):
    intent = "cv_builder"
Enter fullscreen mode Exit fullscreen mode

This allows the bot to understand human language, not just strict commands.


4. Real-Time Job Aggregation Layer

WorqNow fetches live job data from two major APIs:

1. Remotive API

Fast and clean for remote-friendly jobs.

2. JSearch API (RapidAPI)

Great for country-specific searches.

To avoid hitting rate limits and to speed up response times, I built a combined aggregator:

async def search_jobs(keyword, location):
    remotive = fetch_remotive(keyword, location)
    jsearch = fetch_jsearch(keyword, location)

    results = merge_and_dedupe(remotive + jsearch)
    return results[:10]
Enter fullscreen mode Exit fullscreen mode

This ensures:

  • Up to 10 high-quality jobs returned instantly
  • Duplicates removed
  • Faster response times

📍 5. Persistent User Profiles (MongoDB)

Every user has a personal profile stored in MongoDB:

{
  "wa_id": "234916XXXXXXX",
  "name": "John Doe",
  "preferred_location": "London",
  "search_history": ["backend developer", "ui/ux"],
  "subscription": true,
  "cv_state": {}
}
Enter fullscreen mode Exit fullscreen mode

This allows WorqNow to:

  • Offer personalised job recommendations
  • Save preferred locations
  • Continue CV-building sessions
  • Send scheduled job alerts

MongoDB was chosen because:

  • It’s flexible
  • Schema-less
  • Great for user-driven apps
  • Handles rapid iteration

6. Background Schedulers for Job Alerts

I used APScheduler to run background tasks like:

  • Daily personalised job recommendations
  • CV reminder follow-ups
  • Category-specific job alerts
  • Admin broadcast messages

Example:

scheduler.add_job(
    send_daily_jobs,
    trigger="cron",
    hour=9,
)
Enter fullscreen mode Exit fullscreen mode

This ensures users receive fresh jobs every morning without interacting manually.

7. CV Builder Workflow (Q&A Flow + PDF Generation)

The CV builder works through a guided WhatsApp conversation:

  1. Ask for name
  2. Ask for education
  3. Ask for work experience
  4. Ask for skills
  5. Ask for projects
  6. Auto-generate a professional CV using WeasyPrint
  7. Send the final PDF back to the user

Template is powered by Jinja2 + HTML/CSS → PDF.

The workflow state is saved per user so they can continue anytime.

8. Scaling Challenges & Solutions

Challenge 1: Meta API Rate Limits

Solution: Message queue + retry logic

Challenge 2: FastAPI concurrency

Solution: Uvicorn with workers + async handlers

Challenge 3: Large job API responses

Solution: In-memory caching + deduping

Challenge 4: Natural language variability

Solution: Hybrid intent engine (keywords + fuzzy + context)

Challenge 5: User spikes during broadcasts

Solution: Batch sending + exponential backoff


💡 9. Key Technical Decisions That Made the System Scalable

  • Event-driven architecture (webhooks → handlers)
  • Async FastAPI instead of blocking frameworks
  • MongoDB for flexible user schemas
  • Scheduler for automation
  • Modular design for adding new features easily
  • Reusable message templates to keep responses consistent

WorqNow is now structured like a mini SaaS backend, not just a chatbot.


10. The Future of WorqNow

Upcoming features:

  • Machine-learning job recommendations
  • Voice message understanding
  • More APIs for job aggregation
  • AI-powered interview preparation
  • Gamified learning roadmap system
  • University admission advisor module (paused temporarily)

My long-term goal is to build a career ecosystem inside WhatsApp.


Conclusion

WorqNow started as a simple automation experiment and evolved into a full job–career assistant powered by:

  • Clean architecture
  • Modular services
  • Real-time APIs
  • Async processing
  • Smart language understanding
  • Scalable cloud infrastructure

This project taught me how to design systems that are:

  • User-friendly
  • Resilient
  • Modular
  • Fast
  • Easy to extend

And most importantly how to build real products people actually use every day

Top comments (0)