Starter repository for the HackerRank Orchestrate 24-hour hackathon.
Build an AI-powered system for WhatsApp that decides which messages deserve immediate attention, which should wait, and which should be muted.
The system must reason over multimodal messages, including text messages, image posters/screenshots, and voice notes.
WhatsApp is noisy. A user can receive family chats, society notices, school updates, co-worker messages, business account promotions, image posters, voice notes, and scams in the same message stream. Treating every message the same creates two bad outcomes: important messages get missed, and unwanted or risky messages interrupt the user.
Read problem_statement.md for the full task spec, input/output schema, allowed values, and submission format.
.
├── AGENTS.md # Rules for AI coding tools + transcript logging
├── problem_statement.md # Full challenge statement
├── README.md # You are here
└── dataset/
├── messages.csv # Messages to route
├── output.csv # Blank submission template
├── sample_messages.csv # Solved examples
├── users.csv # User notification behavior
├── groups.csv # Group metadata
├── group_members.csv # User-group relationships
├── business_accounts.csv # Business sender metadata
├── user_business_history.csv # User-business history
├── message_history.csv # Historical messages
├── message_events.csv # User reactions to historical messages
├── images.csv # Image IDs and media file paths
├── voice_notes.csv # Voice note IDs and media file paths
├── daily_notification_summary.csv
└── media/
├── images/
└── audio/
For every row in dataset/messages.csv, produce one row in output.csv with:
| Column | Meaning |
|---|---|
message_id |
Incoming message ID |
action |
One of notify, digest, or mute |
message_type |
Best-fit message category |
reason |
Short human-readable explanation |
confidence |
Number from 0 to 1 |
evidence_message_ids |
Historical message IDs used as evidence; write none if there is no useful evidence |
Your system should make personalized decisions using the provided message, user, group, business, media, and historical interaction data.
For image and voice-note messages, images.csv and voice_notes.csv only provide file paths; your system should inspect the media files themselves.
- Inspect
dataset/sample_messages.csvto understand the expected output format. - Load
dataset/messages.csvand all relevant context files. - Build your routing system using any approach: LLMs, retrieval, rules, classifiers, agents, or hybrids.
- Write predictions to
output.csv. - Evaluate your approach on the solved sample rows before submitting.
You may use any language or runtime. Python, JavaScript, and TypeScript are all reasonable choices.
Your solution must:
- be runnable from the terminal
- read the provided files from
dataset/ - produce a valid
output.csv - include one prediction for every
message_idindataset/messages.csv - not use organizer-only files or hardcoded labels
If you use API keys or secrets, read them from environment variables. Never hardcode secrets in the repo.
Your output.csv will be compared against hidden ground-truth labels.
The scoring will consider:
- correctness of
action - correctness of
message_type - usefulness and consistency of
reason - whether
evidence_message_idspoint to relevant historical messages - reasonable confidence calibration
Strong systems will combine retrieval, structured metadata, behavioral history, safety checks, OCR/ASR handling, and contextual reasoning.
This repo includes an AGENTS.md file for AI coding tools. It asks compatible tools to append conversation summaries to:
| Platform | Path |
|---|---|
| macOS / Linux | $HOME/hackerrank_orchestrate_august26/log.txt |
| Windows | %USERPROFILE%\hackerrank_orchestrate_august26\log.txt |
Upload this log as your chat transcript at submission time. Do not paste secrets into the chat.
Submit the following files as instructed by HackerRank:
- Code zip: full runnable solution, prompts/configs, README, and any evaluation files.
- Predictions CSV: final
output.csvfor all rows indataset/messages.csv. - Chat transcript: the
log.txtdescribed above.
Before submitting, confirm:
output.csvhas one row per row indataset/messages.csv.output.csvhas the exact required columns in the exact required order.- Your runnable code and setup instructions are included in
code.zip.