Buzzworks

Period: May 2025–May 2026

There’s a workflow behind that message.

Designing and building a personalized WhatsApp HR platform, from account verification and onboarding to everyday employee requests.

Role
Full Stack Software Development Intern
Scope
Conversational UX design · Full-stack development · Workflow orchestration · API integration · Deployment

HR workflows, inside a conversation

Buzzworks provides HR services and software to businesses. I extended its existing Veytan HR platform into WhatsApp, allowing candidates and employees to complete tasks through a conversation connected to their accounts.

The application supported onboarding, forms, documents, offers, signatures, leave requests, status checks, and company-policy questions. It was developed for Buzzworks’ own use and as a service for client companies.

I was the sole developer responsible for designing and building the conversational application from scratch. I worked with product stakeholders on requirements, company teams on existing and additional APIs, the infrastructure team on hosting, and Wacto’s team on messaging integration.

Explore the experience

Different workflows called for different interactions: selecting a task, correcting a form, reviewing an offer, or asking an open-ended question.

The reconstructed examples below show several of those journeys, using fictional information.

Designing within WhatsApp

Make choices easier to navigate

I used buttons and single-choice lists where users were selecting from known options, keeping text input for information they needed to provide. Menus, contextual prompts, and return paths helped people move through the available workflows without memorizing commands.

Let people correct an answer

Forms did not end with the first round of inputs. I built a review step that summarized the collected information and let users select individual fields to edit before submission.

After a correction, the application returned an updated summary so users could check their information without starting over.

Work within the platform’s limits

WhatsApp limited selection lists to ten items. When an account had more pending tasks, I displayed the first ten and explained which additional tasks would become accessible as the visible ones were completed.

This made the constraint explicit and gave users a next action rather than leaving the remaining tasks unexplained.

Behind the conversation

I separated messaging integration, conversational workflow logic, and backend API interactions into modular services packaged with Docker.

Meta’s WhatsApp Business APIs, Wacto, and webhooks connected incoming messages to the application. A Redis-backed state machine tracked the active workflow and collected information, while task handlers retrieved account-specific data and submitted updates through Veytan and company APIs.

Collecting an answer and completing a backend task were separate steps. The application needed to preserve that distinction while supporting review, editing, and submission.

  1. Employee or candidatein WhatsApp
  2. Messaging integrationMeta WhatsApp Business APIs · Wacto · webhooks
  3. Workflow logicRedis-backed state machine · task handlers
  4. Backend API interactionsVeytan and company APIs
  5. Company systemsand document operations
The three services in the middle are packaged with Docker and hosted on AWS EC2. Conceptual diagram, simplified to the relationships described on this page. It is not a deployment or network map.

Engineering decisions

Select the documents before asking the model to read them

For company-policy questions, I designed a two-stage Claude workflow to avoid sending the full document collection into every request.

The first stage received the question alongside document titles and descriptions, then selected relevant files. The application retrieved those files through a content API, and the second stage used the returned, processed document content to answer the question.

  1. The questionwith document titles and descriptions
  2. Stage 1 · ClaudeSelects relevant files
  3. Content APIretrieves the selected documents and returns their processed, chunked content
  4. Stage 2 · ClaudeAnswers using the returned content
  5. The answerdelivered in WhatsApp
Selection before answering: the first stage reads titles and descriptions, the second only the selected documents’ processed content, as returned by the content API.

Separating selection from answering limited unnecessary retrieval and model context, with the aim of reducing token costs and response time. It also introduced a dependency: the answering stage needed the selector to find the appropriate material.

Treat an upload as part of a task

A document arriving in WhatsApp did not mean the underlying task was complete.

I integrated media retrieval, OCR, and company-backend storage workflows so uploaded files and extracted information could be associated with the correct account and task. This supported identification and KYC documents alongside other forms and attachments.

The work connected a familiar interaction—sending a file—to the processing and submission required by the HR system.

Deployment and delivery

I deployed the containerized application on AWS EC2, coordinating server setup and connectivity with the infrastructure team. I configured messaging webhooks and used Postman to inspect and test the APIs behind the workflows.

Throughout development, I led demonstrations and technical walkthroughs to gather feedback and refine the experience.

At the stage documented here, the platform was being prepared for integration into ICICI Bank’s internal infrastructure.

Tools and infrastructure

AreaTools and approach
MessagingMeta WhatsApp Business APIs · Wacto · Webhooks
Workflow orchestrationRedis-backed state machine · Task handlers
InfrastructureDocker · AWS EC2
Backend integrationVeytan and company REST APIs · Postman
DocumentsMedia APIs · OCR · Company-backend storage integration
Policy questionsTwo-stage Claude document selection and answering

What I took from it

Building this application taught me to consider the conversation and the system together. A simpler choice on screen could require careful state handling underneath; a useful backend capability still needed an interaction someone could navigate.

I also learned how much progress depended on working across boundaries: clarifying requirements, understanding another team’s API, debugging an integration, and following the journey through to completion.