Mobile data collection tools are widely used in education, global health, and social impact projects. While many platforms offer solid features out of the box, they don’t always cover more specific needs. This is especially true for teams running assessments that require timed tasks, custom question types, or detailed tracking of how respondents progress through a test. In these situations, custom data collection solutions become necessary – particularly in offline-first environments.
This case study shows how we extended ODK Collect with custom functionality to support advanced educational assessments. The goal was to enable a smooth move away from SurveyCTO while keeping full compatibility with the official ODK ecosystem and ensuring the solution would be easy to maintain in the long run.
The client: Compassion International

The client had been using SurveyCTO to run literacy and numeracy assessments in the field. Their setup included additional question types that are not available in standard ODK Collect, such as:
- Timed assessments used in EGRA (Early Grade Reading Assessment) and EGMA (Early Grade Mathematics Assessment)
- Slider-based numeric questions that made data entry easier and more intuitive
As part of a shift toward a fully open-source and upstream-compatible solution, the client decided to migrate to the official ODK Collect app. The key requirement was to keep all existing assessment features so that field teams could continue working without disruption.
The main challenge: extending ODK Collect with custom question types without breaking compatibility or making future updates difficult.
Analysis: choosing the right approach
We started by looking into whether the required features could be built as external applications that communicate with ODK Collect. At first glance, this approach seemed attractive because it would limit changes to the core app. However, deeper analysis showed several important drawbacks:
- Limited support for translations and localization
- Weak integration with ODK Collect’s form engine and lifecycle
- More complexity when it comes to deployment and long-term maintenance
Because of these limitations, the external-app approach could not fully meet the client’s needs.
Solution: a custom, upstream-compatible fork of ODK Collect
To ensure a seamless user experience and full feature coverage, we implemented a dedicated fork of ODK Collect. This approach is something we often apply as part of our custom software development services, especially when open-source tools need to be adapted to real-world workflows.
The solution was built around three key principles:
- Staying compatible with the official ODK Collect project
- Keeping code changes minimal and well isolated to simplify future updates
- Full support for XLSForm, so existing forms could be reused without changes
Both custom question types were based on existing ODK implementations, which helped us extend functionality while staying consistent with ODK’s architecture and user interface.
Timed Grid question for EGRA and EGMA
The Timed Grid question was designed specifically for conducting timed literacy and numeracy assessments in offline field conditions. It supports a wide range of EGRA and EGMA subtasks, including:
- Letter & number identification
- Familiar word reading
- Nonword reading
- Oral reading fluency with comprehension
- Addition and subtraction tasks
Key capabilities
- Choice lists displayed as grids or text passages
- Layouts that adapt automatically to screen size
- Pagination for longer assessments
- Built-in timer with automatic stop when time runs out
- Prompts to finish early after multiple incorrect answers
- Option to complete the task manually
- Detailed metadata capture, including:
- Number of attempts
- Correct and incorrect responses
- Remaining time
- Last attempted item
This feature lets you run assessments in a consistent, repeatable way while still capturing detailed data for analysis and reporting later.
Slider question for numeric input in ODK
The second feature we added was a Slider question type, designed to make numeric input easier and more user-friendly. The slider is fully integrated into ODK Collect and works directly with XLSForm definitions.
Key aspects
- Configurable minimum and maximum values
- Smooth, touch-friendly interaction consistent with ODK UI
- Numeric values stored cleanly in form results
- Clear documentation to support long-term maintenance
This improves the experience for respondents while keeping the data structured and reliable.
Quality assurance, deployment, and knowledge transfer
In addition to development, the project included thorough testing and operational support:
- Unit and integration tests to match the behavior of existing SurveyCTO plugins
- Deployment support across Development, Staging, and Production environments
- Detailed documentation and knowledge transfer to support ongoing maintenance
This ensured the solution was not only functional, but also stable and sustainable over time.
Results: custom data collection without added complexity
By extending ODK Collect through a carefully designed custom fork, the client was able to:
- Move away from SurveyCTO without losing key functionality
- Run EGRA and EGMA assessments using upstream-compatible ODK tools
- Keep full control over their data collection setup
- Reduce long-term reliance on proprietary extensions
Need a custom data collection solution?
Looking for a partner experienced in ODK Collect customization and offline data collection?
Let’s design a solution that fits your assessment workflows and scales long-term.
Get in touch to discuss your project →













