Current opportunity
Android Developer Consultancy
Alliance Bioversity
About the opportunity
THE ORGANIZATION The Alliance of Bioversity International (www.bioversityinternational.org) and the International Center for Tropical Agriculture (CIAT) (www.ciat.cgiar.org) delivers research-based solutions that harness agricultural biodiversity and sustainably transform food systems to improve people’s lives. Alliance solutions address the global crises of malnutrition, climate change, biodiversity loss, and environmental degradation. With novel partnerships, the Alliance generates evidence and mainstreams innovations to transform food systems and landscapes so that they sustain the planet, drive prosperity, and nourish people in a climate crisis.
The Alliance is part of CGIAR, a global research partnership for a food-secure future. 1. Background: The Alliance of Bioversity International and CIAT seeks a senior Android developer for a 3-month consultancy. The goal is to capture a whole-plot image inside the Ona app, so breeders no longer switch to the phone's native camera.
Ona is a mobile and web digital phenotyping tool for on-station breeding teams in Sub-Saharan Africa. It runs at Alliance sites and with national partners such as TARI in Tanzania, Uganda and Malawi. Ona covers common bean, cowpea and sorghum, with more crops coming. Breeders use an Android phone, often mounted on the Bruno physical aid, to image plots.
Machine-learning models then extract traits such as plant stand, flower count and pod count. Plant stand (number of established plants per plot) is measured from one image of the full plot. A standard plot row is about 4 m long. Today this image is a panorama taken with the phone's native camera app.
2. Problem statement The panorama step breaks the Ona workflow: users leave Ona, take the panorama in the native camera, then return and link the image to the right plot. This adds time and errors at scale.
- Time. Switching between apps adds time to every plot, which adds up across large trials.
- Data integrity. Images taken outside Ona can be linked to the wrong plot, lost, or saved without Ona metadata (plot ID, GPS, timestamp, device, capture settings).
- Inconsistency. Native panorama behaviour, resolution and stitching differ by phone brand and Android version. This makes model input less consistent.
- Hard to build. Two Ona developers looked at in-app panorama capture. Android has no standard panorama API, and real-time stitching on low- and mid-range phones is hard. They concluded it needs specialist skills. We are not tied to panorama. The need is one reliable, plot-linked image (or image set) from which plant stand can be counted for a ~4 m plot. 3. Objective Deliver a production-ready, in-app whole-plot capture feature in the Ona Android app, so a user can image a ~4 m plot without leaving Ona and the result is good enough for automated plant-stand counting. Specific objectives: 1. Assess and prototype at least three capture approaches (section 4) and recommend one, based on field evidence. 2. Build the chosen approach into the Ona app, linked to Ona's plot registration and metadata. 3. Validate it on target devices and in the field with Ona breeding teams. 4. Hand over clean, documented, maintainable code to the Ona team. 4. Scope of work The consultant will start open on method, test the options below, and commit to one by the end of month 1. The consultant may propose other options. Option How it works Main strengths Main risks A. In-app panorama, on-device stitching Guided sweep in Ona's camera screen (e.g. CameraX), live overlap guide, stitched on the phone (e.g. OpenCV) Works offline; instant result to check Heavy on low-end phones; stitch errors from wind or uneven sweep B. In-app guided multi-frame capture, cloud stitching Ona captures overlapping frames with sensor data (gyroscope, accelerometer); stitched on the server after sync Light on the phone; stronger stitching on the server No result until sync; poor connectivity at field sites C. Short video sweep 3–5 s video of the plot; server extracts frames, then stitches or counts plants with tracking Fast and simple for the user Large files; motion blur; needs a counting or tracking pipeline D. Stitch-free counting Overlapping frames counted one by one; duplicates removed by tracking or position Avoids stitching artefacts Needs model and pipeline work with the Ona ML team E. Single wide shot Ultra-wide lens or a higher Bruno mount to fit the plot in one frame Simplest workflow Not all phones have ultra-wide; distortion and lower detail at plot ends Tasks:
Qualifications
- and experience The consultant must show shipped Android camera and image-processing work, not only general app development.
- Required
- 5+ years of native Android development (Kotlin.
- Java a plus).
- •
- Shipped at least one app with a custom camera feature using CameraX or Camera2.
- •
- Hands-on image stitching, panorama or computer-vision work (e.g.
- OpenCV, feature matching, homography, image registration).
- •
- Use of phone sensors (gyroscope, accelerometer) for capture guidance or motion tracking.
- •
- Performance tuning on low- and mid-range Android phones (memory, battery, heat).
- •
- Offline-first apps and background sync.
- •
- Fluent written and spoken English.
- Desirable
- Server-side image processing (Python, OpenCV, cloud functions) or video frame extraction.
- •
- On-device ML (TensorFlow Lite, ML Kit, ONNX) or object tracking.
- •
- Native code with the Android NDK (C++).
- •
- Experience in agriculture, field data collection or apps used in Sub-Saharan Africa.
- •
- Work on open-source or publicly funded projects.
- Applicants should include links to code, apps or demos that show camera or stitching work.
- 8.
- Working arrangements
- Reporting.
- The consultant reports to the Head of Product, and works daily with the Ona Android developers and ML team.
- •
- Location.
- Remote.
