1 · Record a change find the school, then say what happened
▾
2 · Changes register everything recorded on this device
▾
| Date | School / BEMIS | Change | Details | Order no. | By |
|---|
3 · Bulk import (CSV) update many schools at once from a spreadsheet
▾
Upload or paste CSV with a header row. Recognised columns: bemis (required), enrollment, level (P/M/H/S), gender (B/G/C), name. Only cells that differ become changes, and only for schools inside your permitted area — you review the diff before anything is saved.
5 · How it works accounts, publishing, the data flow
▾
Accounts & permissions. The super admin creates accounts and assigns each officer an area (divisions and/or districts) plus
permissions. Officers only see and change schools inside their area; every saved change is stamped with their username.
Use Export accounts to carry the same officer list to other computers.
Changes. Changes save on this device and apply instantly to every module. Export changes downloads
sed-changes.json — a colleague merges it with Import changes. To publish permanently, the focal person runs
the dataset build with the change file; the official schools-data.js is regenerated for everyone.
Honesty note. With no server, this is device-level access control — it organises and deters, it is not bank-grade
security. The official data files remain read-only regardless of who signs in.
5 · Register refresh import a fresh full school list — the overwrite / add decision is yours
▾
A register refresh is a whole extract, not a correction. The file must follow the sample format — columns bemis, name, district (required) and tehsil, gender, level, enrollment, lat, lng. Every row is validated before anything applies: unknown districts and missing BEMIS codes are rejected and listed, coordinates outside Balochistan are dropped, and a coordinate already held is never erased by a row that carries none. The official files are not touched — the import applies on top, can be removed, and becomes permanent only through the deploy file.
6 · Add a dataset new data — missing facilities, budgets, anything with a number per district or school
▾
Describe the data first — the description is what every module will show — then upload a CSV of district,value or bemis,value rows. Once integrated it appears as an indicator in the Intelligence maps, the report’s choropleth panels and blind-spot audit, and the Assurance collection ranking. A district with no value reads as absent, not zero.
7 · Read a PDF extract district figures from a report — you confirm every value before it integrates
▾
The PDF is read on this device — nothing is uploaded anywhere. The reader finds district names (through the same crosswalk the rest of the system uses, so “Hub” and “Usta Muhammad” resolve correctly) and proposes the number standing next to each; a person checks every value against the line it came from before anything integrates. Scanned-image PDFs carry no text and cannot be extracted — they can still be stored as reference documents.
Document library
Every PDF read here is remembered: its full text is stored on this device, tagged by the districts and topics it mentions, and searchable below — across every document at once. Its detected figures stay attached, so they can be reviewed and integrated later. This is not a model being trained — no such thing runs here — it is the system's institutional memory growing one document at a time.
8 · Imports & deploy what is applied, how far it reaches, and how it becomes permanent
▾
How the deploy file works: it replaces js/import-overlay.js; then run python bump.py. Every device then carries the import without touching browser storage. What propagates live on import: the map, school lists and search, analytics headline figures (recomputed, not patched), the Assurance GPS worklist, report register sections, and — for datasets — the Intelligence indicators, report choropleths, blind spots and Assurance ranking. What waits for a Python rebuild: the 5-Year Plan baselines, integrity exposure, and the census comparison — they are build artifacts, and pretending an import moves them would be false.
9 · Data API the documented read surface — window.SedAPI on every page
▾
Every page exposes window.SedAPI — a stable, versioned surface returning plain named objects, never the internal arrays. Any future tool, script or system should read through it; the JSON exports below carry the same shapes with provenance attached, so what leaves this system stays checkable.