AI Research Foundations Hackathon

Can a small language model turn everyday requests from across Africa into the right actions?

Train a model with at most 4 billion parameters that reads a request, looks at the tools it has, and makes the right tool call. The development phase is open now and closes at 00:00 UTC on 8 November 2026.

Open the starter notebook in Colab
The request “Habari, help me send 2,000 TZS to my uncle Juma on Tigo Pesa.” and four available tools go into a small language model with at most 4B parameters, which returns the tool call send_money with recipient Juma, amount 2000, currency TZS and provider Tigo Pesa.

01

The challenge

Overview

AI assistants are moving beyond answering questions. Instead of telling you how to buy airtime, an assistant can buy the airtime for you. Instead of explaining how to send money, it can send the money.

To do this, an assistant needs to use tools. A tool is a function that lets an AI system take an action or look up information, such as send_money(recipient, amount, currency, provider). The model has to work out which tool to use and what information to give it.

In this hackathon, you will train a small language model that takes an everyday request from across Africa, looks at the tools available to it, and produces the correct tool call.

Request

“Abeg send 5k naira to Tunde on MTN MoMo.”

Available tools

  • send_money
  • check_balance
  • buy_airtime
  • convert_currency

Correct tool call

{
  "tool": "send_money",
  "parameters": {
    "recipient": "Tunde",
    "amount": 5000,
    "currency": "NGN",
    "provider": "MTN MoMo"
  }
}

That's the entire challenge

Given a request and a set of tools, make the correct tool call.

Why small language models?

Large language models can be very capable at tool use, but they are expensive and difficult to run in resource-constrained environments. This hackathon asks a different question: how capable can a small language model become when we train it specifically for tool calling?

You will work with open models of up to 4 billion parameters and experiment with fine-tuning, synthetic data generation, prompting and inference strategies. The goal is not to build the biggest model. The goal is to build the most accurate small one.

Individuals and teams

You may take part on your own or as a team. Each participant or team submits through one Codabench account.

02

What you take away

Skills you will gain

This hackathon is designed to help you gain practical skills for building and studying language models. You keep these whether or not you top the leaderboard.

  • Tool calling

    Turn natural language into structured function calls, with the right tool and every parameter.

  • Fine-tuning small models

    Adapt open models of up to 4B parameters with LoRA, on a free GPU.

  • Data-centric AI

    Generate synthetic data, mine hard examples, and grow the training set where your model fails.

  • Evaluation and error analysis

    Find which tools, parameters and kinds of request break your model, and fix them.

No prior competition experience is assumed. The starter notebook walks you through prompting and fine-tuning Gemma 3 270M, and writes a submission you can upload.

03

The data

Dataset

The dataset maps English-language requests in African contexts to the right tool and its parameters. Each example has a request, 4 to 6 available tools (the relevant ones and some distractors), and the answer.

The 10 tools
ToolWhat it doesParameters
send_moneySend money to another person.recipient, amount, currency, provider
buy_airtimeBuy mobile airtime.phone, amount, network
buy_dataBuy a mobile data bundle.phone, amount, network
check_balanceCheck a mobile money account balance.provider
buy_electricity_tokenPurchase an electricity token.meter_number, amount, currency
report_outageReport an electricity outage.location
get_crop_priceGet the current market price of a crop.crop, location
get_weatherGet the weather forecast for a location.location, date
convert_currencyConvert an amount from one currency to another.amount, from_currency, to_currency
set_reminderSet a reminder for the user.task, date, time

How the splits work

Train 15,000 examples
Request, tools and answer. Use it to train and validate your model.
Dev 2,000 examples
Request and tools, with the answers hidden. Submit predictions to see your score on the development leaderboard.
Test 4,000 examples
Request and tools, with the answers hidden. Released when the final phase opens, and used for the final ranking.

The dev and test sets use different names, neighbourhoods, towns, markets and wording from the training data. The aim is to test whether your model has learned tool calling rather than memorised examples.

Three kinds of request

Request categories in the training data
CategoryShareExample
One tool call60%“What's the maize price around Nakuru today?”
Missing information20%“Send 2,000 naira to Tunde.” The provider is not given, so it is null.
Several tool calls20%“Check my M-Pesa balance, then send 500 bob from it to Otieno.” The calls come as a list, in order.

Where the requests come from

The language is English, but the world in the data is African: local expressions and chat shorthand, names and titles, mobile money providers and networks, currencies, markets, dates and times.

  • Nigeria
  • Ghana
  • Kenya
  • Uganda
  • Tanzania
  • Rwanda
  • South Africa
  • Zambia
  • Ethiopia

All names, numbers and codes are made up. The full labelling rules and value formats (amounts as numbers, ISO currency codes, phone numbers as digits, dates such as 15 March, times such as 19:00) are in the dataset README.

04

Starting points

Baselines

Out of the box, small models are poor at this task. Without training, Gemma 3 270M gets almost no requests right, and even Gemma 3 4B gets about a third (34% on a 300-request sample of dev). Fine-tuning changes that.

Baseline scores to beat (exact-match accuracy on dev)
BaselineDev score
Hand-written rules, no model49.05%
Gemma 3 270M, fine-tuned on 3,000 examples64.55%
FunctionGemma 270M, fine-tuned on 3,000 examples77.00%
Gemma 3 270M, fine-tuned on all 15,000 examples88.35%

Even the smallest Gemma model goes from almost nothing to 88% with fine-tuning. How close to 100% can you get?

What might you explore?

  • FunctionGemma 270M
  • Larger models, up to 4B
  • LoRA / QLoRA
  • Synthetic data
  • Hard-example mining
  • Data curation
  • Knowledge distillation
  • Few-shot prompting
  • Self-consistency
  • Test-time scaling
  • Ensembling

Try these, combine them, or develop your own idea. Try, evaluate, improve, repeat.

05

How scoring works

Evaluation

There is one metric. A prediction is correct only when the selected tool and all of its parameters match the answer. When a request needs several calls, every call must be correct and in the correct order.

The metric

Exact-match accuracy

3,400 correct÷4,000 requests=85%

Higher is better.

What counts as wrong

If the answer is send_money to Tunde for 5000 NGN on MTN MoMo, then each of these predictions is wrong:

  • The right tool, but amount: 500.
  • The right tool and amount, but the wrong provider.
  • A value that is not in the request, such as a provider the user never mentioned.

How answers are compared

  • Text ignores case, punctuation and extra spaces, so "m-pesa" matches "M-Pesa".
  • Numbers are compared as numbers: 5000 matches 5000.0, but the text "5000" does not.
  • A parameter left out counts as null.
  • A list containing one call is the same as that call.

Keep this in mind

A model should never invent information that is not in the request. If a value is missing, it is null.

06

From idea to entry

How to submit

The hackathon runs on Codabench. You upload a ZIP file with your predictions, and your score appears on the leaderboard once it has been scored.

Rules

  • Use any open-weight model with at most 4B parameters. Gemma 3 270M, 1B and 4B, and FunctionGemma 270M are recommended.
  • No API calls or larger models may be used when generating predictions.
  • Any training technique is allowed, including fine-tuning, synthetic data generation, prompting and decoding strategies.
  • You may augment the training data.
  • You may not manually label development or test examples.

Recommended starting point

Starter notebook

Explore the data, prompt Gemma 3 270M, fine-tune it, see what more training data does, and write a submission.zip for the dev leaderboard. It runs on a free Google Colab GPU.

Open the starter notebook in Colab

Submission process

  1. 1
    Join the competition

    Create a Codabench account and register for the hackathon.

  2. 2
    Train your model

    Start from train.jsonl and use any technique within the rules.

  3. 3
    Predict every request

    Make one prediction for every id in dev.jsonl (in the final phase, test.jsonl).

  4. 4
    Write predictions.json

    Map each id to its tool call, or to a list of calls when the request needs several actions.

  5. 5
    Zip it

    Place predictions.json at the top level of a ZIP file.

  6. 6
    Upload

    Upload the ZIP under “My Submissions” on the Codabench competition page.

{
  "dev-01234": {
    "tool": "send_money",
    "parameters": {"recipient": "Aisha", "amount": 2500,
                   "currency": "NGN", "provider": "Airtel Money"}
  },
  "dev-01235": [
    {"tool": "check_balance",
     "parameters": {"provider": "M-Pesa"}},
    {"tool": "send_money",
     "parameters": {"recipient": "Otieno", "amount": 500,
                    "currency": "KES", "provider": "M-Pesa"}}
  ]
}

What happens next?

Codabench scores your submission and the leaderboard shows your best score. In the development phase you can submit up to 5 times a day (100 in total). In the final phase, up to 2 times a day (5 in total).

07

Key dates

Timeline

The hackathon has two phases. All times are in UTC.

Development phase 10 Oct – 7 Nov 2026
Train your model, predict dev.jsonl, and climb the development leaderboard. Closes at 00:00 UTC on 8 November.
Final phase 9 – 10 Nov 2026
test.jsonl is released. Submit your predictions for it; the final ranking uses exact-match accuracy on the test set. Opens at 00:00 UTC on 9 November and closes at 00:00 UTC on 11 November.

08

Good to know

Frequently asked questions

Do I need my own GPU?

No. The starter notebook fine-tunes Gemma 3 270M on a free Google Colab GPU.

Which models can I use?

Any open-weight model with at most 4 billion parameters. Gemma 3 270M, 1B and 4B, and FunctionGemma 270M are recommended.

Can I use ChatGPT, Gemini or another large model?

Not to make your predictions: no API calls or larger models may be used when generating predictions. Any training technique is allowed, including synthetic data generation.

Can I add my own training data?

Yes. You may augment the training data, for example with synthetic examples. You may not label development or test examples by hand. The meta field in train.jsonl describes each example (category, country, style and more) to help you generate data of your own.

What language are the requests in?

English, set in everyday life across Africa, with local expressions and chat shorthand such as “Abeg” or “500 bob”.

What if a request does not give a value the tool needs?

That value is null. For example, “Send 2,000 naira to Tunde.” does not name a provider, so provider is null. A model should never invent information that is not in the request.

What if a request needs several actions?

Return a list of tool calls, in the order the request asks for them. Every call must be correct for the prediction to count.

Why is my dev score lower than my validation score?

The dev and test sets use names, places and wording that are not in the training data. A validation split taken from train.jsonl shares them, so it is more optimistic. The dev leaderboard is the better guide to your test score.

What should my submission look like?

A ZIP file with predictions.json at its top level. The file maps every request id to its tool call, or to a list of calls. Ids that are missing count as wrong.

My submission failed. What should I check?

Check that predictions.json is valid JSON, that it is a single object keyed by request id, and that it is inside the ZIP you uploaded. The error message on your Codabench submission says what went wrong.

How many times can I submit?

Up to 5 times a day (100 in total) in the development phase, and up to 2 times a day (5 in total) in the final phase. The leaderboard shows your best score.

Which score decides the winner?

Exact-match accuracy on the test set, in the final phase. The development leaderboard is for testing your ideas.

Where can I ask questions?

Post on the competition forum on Codabench, or email ai-research-foundations@aims.ac.za.

Keep learning

Build the foundations first

This hackathon builds on concepts introduced in the AI Research Foundations learning path.

Course 01

Build Your Own Small Language Model

Establish the foundational concepts required to implement a small language model from scratch.

Course 05

Fine-tune Your Model

Apply transfer learning techniques to adapt the pre-trained model for specific tasks using a smaller, targeted dataset.

Explore the learning path