The Senegal River is a lifeline that supplies the people in Northern Senegal and Southern Mauritania and their agricultural activities with water.
The Senegal River is a lifeline in the dry north of Senegal. In recent decades, the agriculture it sustains has undergone a conversion.
The traditional use scheme is a specific sequence of agricultural, pastoral, and fishing activities.
The construction of dams upstream and downstream in the late 1980s aimed to improve control of the water flow to decrease the risk of crop failure from drought or flood.
This entailed the establishment of larger irrigation schemes and led to a general shift from flood-recession cropping systems to irrigated rice-based systems.
(Clavel et al., 2023)
How can a simple EO-based vegetation index help make the work of a crop insurance company more efficient?
Irrigated rice in the Senegal River Valley is prone to several hazards. Despite the dams, flooding still occurs occasionally. Granivorous birds, wild ducks, weeds, insects, rodents and microbial diseases regularly cause extensive damage across Western Africa.
In addition, incidences such as trampling and grazing on crops by wild or domestic animals can cause localized damage.
(De Mey et al., 2012; Toffa et al., 2021; Porcuna-Ferrer et al., 2024)
Making it Real
Farmers can, and sometimes have to, take crop insurance that covers damage from a number of these causes, in the form of production costs or yield loss in the case of an event. However, insurance companies struggle to verify claims. Doing so on the ground is particularly challenging where large numbers of relatively small farms need to be covered across a wide area. This can lead to delays in payouts for rightly claimed damages and to payouts for illicit, unverified claims. In the end, this challenge burdens both the insurance system and the farmers.
<!– ================================================================
INTERACTIVE SCENARIO: The Overwhelmed Insurance Clerk
Paste EVERYTHING (from this comment to the last line) into an
Ignite "Custom HTML" block. All styles are scoped to #fsx-clerk
so they will not affect the rest of your course.
Edit any wording in the STEPS section inside the .
================================================================ –>
Your guide
#fsx-clerk{–fsx-green:#2e6b3e;–fsx-green2:#3f8f52;–fsx-sand:#f3ede2;–fsx-ink:#1f2a24;–fsx-mut:#5c6b60;–fsx-amber:#b4791f;–fsx-card:#ffffff;
box-sizing:border-box;max-width:720px;margin:0 auto;padding:18px;
font-family:-apple-system,BlinkMacSystemFont,”Segoe UI”,Roboto,Helvetica,Arial,sans-serif;color:var(–fsx-ink);}
#fsx-clerk *,#fsx-clerk *::before,#fsx-clerk *::after{box-sizing:border-box;}
#fsx-clerk .fsx-card{background:var(–fsx-card);border:1px solid #e6ded0;border-radius:18px;
padding:26px 26px 22px;box-shadow:0 10px 30px rgba(46,107,62,.10);}
#fsx-clerk .fsx-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px;}
#fsx-clerk .fsx-badge{font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
color:var(–fsx-green);background:#eaf3ec;border:1px solid #d3e6d8;padding:5px 11px;border-radius:999px;white-space:nowrap;}
#fsx-clerk .fsx-progress{flex:1;height:7px;background:#ece5d8;border-radius:999px;overflow:hidden;}
#fsx-clerk .fsx-bar{display:block;height:100%;width:0;background:linear-gradient(90deg,var(–fsx-green),var(–fsx-green2));
border-radius:999px;transition:width .35s ease;}
#fsx-clerk .fsx-guide{display:flex;align-items:center;gap:12px;margin-bottom:6px;}
#fsx-clerk .fsx-avatar{width:44px;height:44px;border-radius:50%;overflow:hidden;flex:none;box-shadow:0 3px 8px rgba(0,0,0,.12);}
#fsx-clerk .fsx-guide-label{font-size:13px;font-weight:600;color:var(–fsx-mut);}
#fsx-clerk .fsx-title{font-size:23px;line-height:1.25;margin:10px 0 8px;font-weight:800;letter-spacing:-.01em;}
#fsx-clerk .fsx-text{font-size:17px;line-height:1.6;margin:0 0 6px;color:#33413a;}
#fsx-clerk .fsx-choices{display:flex;flex-direction:column;gap:12px;margin-top:18px;}
#fsx-clerk .fsx-choice{display:flex;align-items:center;gap:12px;width:100%;text-align:left;font-size:16px;font-weight:600;cursor:pointer;
background:#fbfaf6;border:2px solid #e0d8c8;border-radius:14px;padding:15px 18px;color:var(–fsx-ink);
transition:border-color .15s,background .15s,transform .05s;}
#fsx-clerk .fsx-choice:hover{border-color:var(–fsx-green2);background:#f2f8f3;}
#fsx-clerk .fsx-choice:active{transform:translateY(1px);}
#fsx-clerk .fsx-choice:disabled{cursor:default;opacity:.75;}
#fsx-clerk .fsx-num{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;
background:var(–fsx-green);color:#fff;font-size:13px;font-weight:800;flex:none;}
#fsx-clerk .fsx-choice.fsx-picked-right{border-color:var(–fsx-green);background:#eaf6ee;}
#fsx-clerk .fsx-choice.fsx-picked-wrong{border-color:#c9553f;background:#fbecea;}
#fsx-clerk .fsx-choice.fsx-picked-wrong .fsx-num{background:#c9553f;}
#fsx-clerk .fsx-feedback{margin-top:18px;border-left:4px solid var(–fsx-green);
background:#f4f8f4;border-radius:0 12px 12px 0;padding:14px 16px;}
#fsx-clerk .fsx-feedback.fsx-warn{border-left-color:var(–fsx-amber);background:#fbf5ea;}
#fsx-clerk .fsx-fb-tag{font-size:12px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(–fsx-green);margin-bottom:5px;}
#fsx-clerk .fsx-feedback.fsx-warn .fsx-fb-tag{color:var(–fsx-amber);}
#fsx-clerk .fsx-fb-text{margin:0;font-size:16px;line-height:1.55;}
#fsx-clerk .fsx-actions{display:flex;gap:12px;align-items:center;margin-top:22px;flex-wrap:wrap;}
#fsx-clerk .fsx-btn{font-size:15px;font-weight:700;border-radius:12px;padding:13px 26px;cursor:pointer;border:none;transition:filter .15s,opacity .15s;}
#fsx-clerk .fsx-primary{background:var(–fsx-green);color:#fff;box-shadow:0 4px 12px rgba(46,107,62,.28);}
#fsx-clerk .fsx-primary:hover{filter:brightness(1.07);}
#fsx-clerk .fsx-primary:disabled{opacity:.45;cursor:default;filter:none;}
#fsx-clerk .fsx-warnbtn{background:var(–fsx-amber);color:#fff;}
#fsx-clerk .fsx-warnbtn:hover{filter:brightness(1.07);}
#fsx-clerk .fsx-ghost{background:transparent;color:var(–fsx-mut);border:1px solid #ddd4c4;}
#fsx-clerk .fsx-ghost:hover{color:var(–fsx-ink);border-color:#c7bda9;}
@media (max-width:520px){
#fsx-clerk .fsx-title{font-size:20px;}
#fsx-clerk .fsx-text{font-size:16px;}
#fsx-clerk .fsx-card{padding:20px 18px;}
}
(function(){
var root = document.getElementById(‘fsx-clerk’);
if(!root) return;
// —- SCENARIO CONTENT (edit freely) ———————————-
// For decisions: “correct” = index of the right choice.
// Wrong choice shows feedbackWrong + “Try again”; right choice shows
// feedbackRight + “Continue”.
var STEPS = [
{ type:’info’,
title:’The Overwhelmed Insurance Clerk: Using Satellite Data to Detect Crop Damage’,
text:’As an insurance clerk in West Africa, you must verify 1,000 crop damage claims (from floods, locusts, ducks, and disease) on rice farms in the Senegal River Valley.’ },
{ type:’info’,
title:’The Challenge’,
text:’Fraudulent claims and delayed payouts strain trust between farmers and insurers. Traditional ground checks are slow and impractical at scale.’ },
{ type:’info’,
title:’Where do you even start?’,
text:’You can only investigate 100 of these claims on-site. Prioritize cases where you have doubts about their accuracy. But how to decide which ones to check? You can use a little help from the NDVI.’ },
{ type:’info’,
title:’Learn How NDVI Works’,
text:’NDVI measures plant health using satellite data. Healthy crops = high NDVI; damaged crops = low NDVI.’ },
{ type:’decision’,
title:’Claim 1 u2014 Farmer Amina’,
text:’Farmer Amina reports flood damage in her rice crop. What do you do?’,
choices:[‘Approve claim’,’Flag for inspection’],
correct:0,
feedbackRight:’Yes! Floods damage crops slowly. This NDVI pattern matches historical flood data. Always cross-check with rainfall records for confirmation!’,
feedbackWrong:’Sudden drops often mean non-flood causes (e.g., pests). Prioritize this for on-site checks.’ },
{ type:’decision’,
title:’Claim 2 u2014 Farmer Samba’,
text:’Farmer Samba reports locust damage. Locust swarms create scattered, irregular damage. What do you do?’,
choices:[‘Approve claim’,’Flag for inspection’],
correct:1,
feedbackRight:’Locusts rarely destroy entire fields. The scattered damage matches their behavior. Prioritize this claim u2013 fraudsters often report uniform damage.’,
feedbackWrong:’Not so fast. Locusts feed in patches, so scattered damage like this is exactly what youu2019d expect to see. Before you approve, flag it for an on-site check just to be sure.’ },
{ type:’end’,
title:’Consequences & Takeaways’,
text:’NDVI cuts inspection time by 70%, focusing resources on high-risk cases. Anomaly detection lowers fraudulent payouts by 50%. Faster validations improve client satisfaction.’ }
];
// ———————————————————————-
var i = 0, locked = false;
var elTitle = document.getElementById(‘fsx-title’);
var elText = document.getElementById(‘fsx-text’);
var elChoices = document.getElementById(‘fsx-choices’);
var elFb = document.getElementById(‘fsx-feedback’);
var elFbTag = document.getElementById(‘fsx-fb-tag’);
var elFbText = document.getElementById(‘fsx-fb-text’);
var elNext = document.getElementById(‘fsx-next’);
var elRetry = document.getElementById(‘fsx-retry’);
var elRestart = document.getElementById(‘fsx-restart’);
var elBar = root.querySelector(‘.fsx-bar’);
function render(){
var s = STEPS[i];
locked = false;
elTitle.textContent = s.title;
elText.textContent = s.text;
elChoices.innerHTML = ”;
elFb.hidden = true;
elFb.classList.remove(‘fsx-warn’);
elBar.style.width = Math.round((i/(STEPS.length-1))*100) + ‘%’;
elRestart.hidden = true;
elRetry.hidden = true;
if(s.type === ‘decision’){
elNext.hidden = true; // appears only after a correct answer
s.choices.forEach(function(label, idx){
var b = document.createElement(‘button’);
b.type = ‘button’;
b.className = ‘fsx-choice’;
b.innerHTML = ‘‘+(idx+1)+’‘+label+’‘;
b.addEventListener(‘click’, function(){ choose(idx, b, label); });
elChoices.appendChild(b);
});
} else if(s.type === ‘end’){
elNext.hidden = true;
elRestart.hidden = false;
} else {
elNext.hidden = false;
elNext.disabled = false;
elNext.textContent = ‘Continue’;
}
}
function choose(idx, btn, label){
if(locked) return;
var s = STEPS[i];
var right = (idx === s.correct);
elChoices.querySelectorAll(‘.fsx-choice’).forEach(function(b){ b.disabled = true; });
btn.classList.add(right ? ‘fsx-picked-right’ : ‘fsx-picked-wrong’);
elFb.classList.toggle(‘fsx-warn’, !right);
elFbTag.textContent = ‘You chose: ‘ + label;
elFbText.textContent = right ? s.feedbackRight : s.feedbackWrong;
elFb.hidden = false;
if(right){
locked = true;
elNext.hidden = false;
elNext.disabled = false;
elNext.textContent = (i === STEPS.length – 1) ? ‘Finish’ : ‘Continue’;
elRetry.hidden = true;
} else {
// wrong: let the learner try the same claim again
elNext.hidden = true;
elRetry.hidden = false;
}
}
elNext.addEventListener(‘click’, function(){
if(i < STEPS.length – 1){ i++; render(); }
});
elRetry.addEventListener('click', function(){ render(); }); // re-open same step
elRestart.addEventListener('click', function(){ i = 0; render(); });
render();
})();
Report
There was a problem reporting this post.
Block Member?
Please confirm you want to block this member.
You will no longer be able to:
See blocked member's posts
Mention this member in posts
Invite this member to groups
Please allow a few minutes for this process to complete.