Job Description
for intro paragraphs and general text,
for section headers (Responsibilities, Qualifications, Requirements, Education, Experience, Skills, How to Apply, Key Duties, About the Role). Use - for list items (duties, requirements, qualifications, skills). No CSS classes, no inline styles, no , no
. Preserve all original content word-for-word — do not add, remove, summarise, or rephrase. If text has no clear sections, just wrap paragraphs in tags.
We have a job description with sections: intro paragraphs, then position, contract, location, closing date, then DUTIES (list). No other sections like Qualifications etc. So we need to keep all content exactly as is, but reformat using allowed tags.
We must preserve original content word-for-word. That means we cannot change wording, but we can change tags. We need to wrap paragraphs in
. For headings like "Position:", "Contract:", "Location:", "Closing Date:" maybe they are not section headers per allowed list; they are just labels. The rule says use
for section headers (e.g. Responsibilities, Qualifications, Requirements, Education, Experience, Skills, How to Apply, Key Duties, About the Role). So "DUTIES" is a section header akin to Key Duties, so we should wrap that in . The other labels like Position:, Contract:, Location:, Closing Date: are not in that list, so they should be treated as general text, wrapped in
. Also the intro paragraphs: "The International Institute of Tropical Agriculture seeks suitable Nigerian nationals for the position below at the Institute’s Headquarters in Ibadan." plus empty paragraph etc.
We must preserve all content word-for-word, including spaces and special characters like etc. The original includes entities. We must keep them exactly. Also there are bullet points using "· ". Those are special characters and spaces. We need to keep them exactly. For list items we need to wrap each duty in
- inside a
. The bullet characters are part of the content; we should keep them inside - . The original bullet is a middle dot followed by (maybe 4 spaces). We'll keep that.
We must not add or remove any content. So we need to ensure we keep the exact same text, just changing tags.
Let's extract the raw text from the given input (including HTML tags). But we need to ignore the existing tags and treat the content as plain text? The instruction: "Preserve ALL original content word-for-word — do not add, remove, summarise, or rephrase". The original content includes the HTML tags? The given job description includes HTML tags like
, , etc. If we preserve them word-for-word, we would output the same HTML, but we need to reformat to semantic HTML using only allowed tags. That would be a change (removing etc). However the instruction says preserve original content word-for-word, but also we must format as clean semantic HTML using only certain tags. Likely they mean preserve the textual content (the words) not the markup. So we should strip existing tags and reapply our own. We must not add or remove any words, characters, spaces, etc. So we need to output the same textual content (including spaces, entities) but wrapped in allowed tags.
Thus we need to parse the textual content from the given snippet, ignoring the existing tags, but preserving the text exactly as it appears between tags, including entities like and & (maybe &?). The snippet includes entities; we must keep them as is.
Let's extract the text:
Start: "The International Institute of Tropical Agriculture seeks suitable Nigerian nationals for the position below at the Institute’s Headquarters in Ibadan.
Position: MEL Officer
Contract: 2-years renewable contract
Location: Ibadan
Closing Date: 10 September 2026
DUTIES
· Support the implementation of the I-Youth 2.0 MEL framework and monitoring plan in Nigeria.
..."
We need to get the text nodes.
Let's manually extract:
Paragraph1: "The International Institute of Tropical Agriculture seeks suitable Nigerian nationals for the position below at the Institute’s Headquarters in Ibadan."
Paragraph2: empty (just ) => maybe we should keep an empty paragraph? The rule: preserve all original content word-for-word. An empty paragraph is content? It's just a tag with no text. If we preserve word-for-word, we might need to output an empty . But we are only allowed to use for paragraphs. An empty
is allowed. Should we keep it? Probably yes to preserve original content. However the instruction: "If text has no clear sections, just wrap paragraphs in
tags". An empty paragraph is still a paragraph. We'll keep
.
Paragraph3: contains Position: MEL Officer. So text: "Position: MEL Officer". Note there are spaces and entities. We'll keep exactly that.
Paragraph4: "Contract: 2-years renewable contract "
We need to extract the text nodes: The first strong: "Contract: " then a space? Actually after there is (an entity) then 2-years renewable contract... then after that there are spaces and entities. Let's capture exactly.
The raw string:
`Contract: 2-years renewable contract
`
Let's break:
- Opening
- Contract:
-
- 2-years renewable contract
- (that's 8 ? Actually count: there is a space then 8 ? Let's just keep as is)
- space? Actually after the series of there is a space then (maybe 8?). Hard to parse but we must keep exactly.
Thus the paragraph text is: "Contract: 2-years renewable contract  
. Preserve all original content word-for-word — do not add, remove, summarise, or rephrase. If text has no clear sections, just wrap paragraphs in
tags. We have a job description with sections: intro paragraphs, then position, contract, location, closing date, then DUTIES (list). No other sections like Qualifications etc. So we need to keep all content exactly as is, but reformat using allowed tags. We must preserve original content word-for-word. That means we cannot change wording, but we can change tags. We need to wrap paragraphs in
. For headings like "Position:", "Contract:", "Location:", "Closing Date:" maybe they are not section headers per allowed list; they are just labels. The rule says use
for section headers (e.g. Responsibilities, Qualifications, Requirements, Education, Experience, Skills, How to Apply, Key Duties, About the Role). So "DUTIES" is a section header akin to Key Duties, so we should wrap that in . The other labels like Position:, Contract:, Location:, Closing Date: are not in that list, so they should be treated as general text, wrapped in
. Also the intro paragraphs: "The International Institute of Tropical Agriculture seeks suitable Nigerian nationals for the position below at the Institute’s Headquarters in Ibadan." plus empty paragraph etc. We must preserve all content word-for-word, including spaces and special characters like etc. The original includes entities. We must keep them exactly. Also there are bullet points using "· ". Those are special characters and spaces. We need to keep them exactly. For list items we need to wrap each duty in
- . The bullet characters are part of the content; we should keep them inside
- . The original bullet is a middle dot followed by (maybe 4 spaces). We'll keep that.
We must not add or remove any content. So we need to ensure we keep the exact same text, just changing tags.
Let's extract the raw text from the given input (including HTML tags). But we need to ignore the existing tags and treat the content as plain text? The instruction: "Preserve ALL original content word-for-word — do not add, remove, summarise, or rephrase". The original content includes the HTML tags? The given job description includes HTML tags like
, , etc. If we preserve them word-for-word, we would output the same HTML, but we need to reformat to semantic HTML using only allowed tags. That would be a change (removing etc). However the instruction says preserve original content word-for-word, but also we must format as clean semantic HTML using only certain tags. Likely they mean preserve the textual content (the words) not the markup. So we should strip existing tags and reapply our own. We must not add or remove any words, characters, spaces, etc. So we need to output the same textual content (including spaces, entities) but wrapped in allowed tags. Thus we need to parse the textual content from the given snippet, ignoring the existing tags, but preserving the text exactly as it appears between tags, including entities like and & (maybe &?). The snippet includes entities; we must keep them as is. Let's extract the text: Start: "
The International Institute of Tropical Agriculture seeks suitable Nigerian nationals for the position below at the Institute’s Headquarters in Ibadan.
Position: MEL Officer
Contract: 2-years renewable contract
Location: Ibadan
Closing Date: 10 September 2026
DUTIES
· Support the implementation of the I-Youth 2.0 MEL framework and monitoring plan in Nigeria.
..." We need to get the text nodes. Let's manually extract: Paragraph1: "The International Institute of Tropical Agriculture seeks suitable Nigerian nationals for the position below at the Institute’s Headquarters in Ibadan." Paragraph2: empty (just ) => maybe we should keep an empty paragraph? The rule: preserve all original content word-for-word. An empty paragraph is content? It's just a tag with no text. If we preserve word-for-word, we might need to output an empty . But we are only allowed to usefor paragraphs. An empty
is allowed. Should we keep it? Probably yes to preserve original content. However the instruction: "If text has no clear sections, just wrap paragraphs in
tags". An empty paragraph is still a paragraph. We'll keep
. Paragraph3: contains Position: MEL Officer. So text: "Position: MEL Officer". Note there are spaces and entities. We'll keep exactly that. Paragraph4: "Contract: 2-years renewable contract " We need to extract the text nodes: The first strong: "Contract: " then a space? Actually after there is (an entity) then 2-years renewable contract... then after that there are spaces and entities. Let's capture exactly. The raw string: `Contract: 2-years renewable contract
` Let's break: - Opening- Contract: - - 2-years renewable contract - (that's 8 ? Actually count: there is a space then 8 ? Let's just keep as is) - space? Actually after the series of there is a space then (maybe 8?). Hard to parse but we must keep exactly. Thus the paragraph text is: "Contract: 2-years renewable contract  
How well do you match?
Get an instant AI match score for this role — free, takes 3 minutes.
Tailor your CV for this role
The concierge rewrites your whole CV and writes a matching cover letter for this job — opens right here, nothing to paste.
Tailor My CV to This Job ✍️Free cover letter for this job
Upload your CV and get a tailored cover letter in seconds — free, no account needed.
Generate a Cover Letter 📝Let jobs find you
Leave your email and our AI matches you to new jobs across 24 African markets — free. You wait for the call.
Add your CV for real matches
Upload your CV and we score every new job against your real experience — only strong matches reach your inbox. Optional, but it makes your matches far sharper.
You're in.
We'll email you the moment a job matches your profile. Check your inbox for a welcome from My Job Concierge.
I'm ECHO, your MJC career assistant. I can help you find jobs, explore career tools, and connect with opportunities across Africa.