Fuatilia Portal

Tanzania Cotton Board

Sign in

{{ loginError }}

{{ (nav.find(n=>n.id===view)||{}).label }}

{{ online ? 'Cached data' : 'Offline' }}

{{ fmt(dash.kpis.active_farmers) }}

Active farmers

{{ fmt(dash.kpis.verified_acres) }}

Verified acres

{{ fmt(dash.kpis.seed_balance_kg) }}

Seed balance (kg)

{{ dash.enforcement.overdue }}

Overdue enforcement

Reporting coverage

{{ dash.villages.reporting }}

reporting

{{ dash.villages.not_reporting }}

not reporting

{{ pct(dash.villages.reporting, dash.villages.total) }}%

of {{ dash.villages.total }} villages

Key ratios

Lead farmer ratio

{{ dash.kpis.lead_farmer_ratio }}

Extension coverage

{{ dash.kpis.extension_coverage_ratio }}

GAP adoption

{{ dash.kpis.gap_adoption_rate }}%

Weather impact

{{ dash.kpis.weather_impact_pct }}%

Tractor functionality

{{ dash.kpis.tractor_functionality_rate }}%

Acres / working tractor

{{ dash.kpis.acres_per_working_tractor }}

Breakdown by {{ breakdownLevel }}

Export CSV
AreaVillagesReportingFarmersVerified acresSeed kg
{{ b.name }}{{ b.villages }}{{ b.reporting }}{{ fmt(b.active_farmers) }}{{ fmt(b.verified_acres) }}{{ fmt(b.seed_balance_kg) }}
No data

Purchase share by company

CompanyCorroborated (kg)Claimed only (kg)Share
{{ p.company }}{{ fmt(p.corroborated_qty) }}{{ fmt(p.claimed_qty) }}{{ p.share_pct }}%
No purchases recorded

{{ queue.length }} submissions awaiting your decision, oldest first.

{{ moduleName(q.module) }}

{{ q.location_name }} · {{ q.location_level }} · week {{ q.reporting_week||'—' }}

{{ q.status }}
{{ fl.code }} {{ fl.message }}
{{ k }}{{ fmtVal(v) }}

Queue empty — nothing awaiting your approval.

Export CSV
OffenceSeverityOffenderStatusOpenedFollow-upDays
{{ e.offence_name || '—' }} {{ e.severity }} {{ e.offender_identity || '—' }}{{ e.status }}{{ (e.opened_at||'').slice(0,10) }} {{ e.follow_up_date || '—' }}{{ e.days_open }}
No enforcement cases
Matched {{ reconResult.counts.matched }} · Mismatch {{ reconResult.counts.mismatch }} · Untracked {{ reconResult.counts.untracked }} · Pending {{ reconResult.counts.pending }}
LocationStatusField acresTelemetry acresVariance
{{ r.location }} {{ r.status }} {{ fmt(r.field_acres) }}{{ fmt(r.telemetry_acres) }} {{ r.variance>0?'+':'' }}{{ fmt(r.variance) }}
Run reconciliation to see variance

Exceptions

Negative stock ({{ exc.negative_stock.length }})

{{ n.location }} · {{ n.commodity }}{{ n.balance_kg }} kg

none

Overdue enforcement ({{ exc.overdue_enforcement.length }})

{{ o.location || '—' }}{{ o.days_over }}d over

none

Uninspected centres ({{ exc.uninspected_centres.length }})

{{ u.centre }}{{ u.ward }}

none

Unauthorised purchase locations ({{ exc.unauthorised_purchases.length }})

none

{{ u.location }}

Inspector scorecards

InspectorSubsLockedReturnedReturn %
{{ s.inspector }}{{ s.submitted }}{{ s.locked }}{{ s.returned }}{{ s.return_rate_pct }}%
no activity

Buying-centre risk

CentreWardInspectionsAvg complianceOffencesRisk
{{ c.centre }}{{ c.ward }}{{ c.inspections }}{{ c.avg_compliance ?? '—' }}{{ c.offences }} {{ c.risk_score }}
no centres

Season control

{{ adminMsg }}

Users & profiles ({{ users.length }})

App releases (APK)

v{{ r.version }} (code {{ r.version_code }})current {{ r.size_bytes ? (r.size_bytes/1e6).toFixed(1)+' MB' : '' }} Download

No releases yet. Upload the first APK above.

Administrative hierarchy

NameLevelTypeCodeValid
{{ l.name }}{{ l.level }}{{ l.council_type||'—' }}{{ l.code }}{{ l.valid_from||'—' }} → {{ l.valid_to||'open' }}

Return for correction

A comment is mandatory — it travels back to the inspector's device.

{{ userModal.mode==='create' ? 'Add user' : 'Edit user · @'+userModal.username }}

Reset password

Assigned areas (scope)

{{ a.location }} none

{{ userModal.error }}

Upload Android APK

{{ apkUpload.error }}

{{ toast.msg }}