Code::Core
PD-VMS-001 · v0.1
Operation: Get Rid of the Blue Book
Visitor
Management
System
Project Document
A proposal to replace paper visitor books in Ugandan buildings with a verified, configurable and auditable check‑in system.
Packages from UGX 32MDjango · offline-firstData Protection Act 2019
Prepared byCode::Core, Kampala
Date20 October 2026
StatusConfidential · Draft
Document control
| Document | Project Document (PD-VMS-001) |
| Version | 0.1 — working draft for discussion |
| Date | 20 October 2026 |
| Owner | Code::Core, Kampala |
| Audience | Technical team, sales & marketing, prospective clients, funders |
| Status | Figures and hardware models are planning estimates pending supplier quotes |
Revision history
| Version | Date | Author | Changes |
| 0.1 | 20 Oct 2026 | Code::Core | First working draft for discussion |
| | | | |
| | | | |
Approvals
| Role | Name | Signature | Date |
| Project lead | | | |
| Technical lead | | | |
| Client owner | | | |
Contents
- Executive summary
- Background and problem
- Objectives and success measures
- Scope
- Stakeholders and users
- Solution overview
- Functional requirements
- Non-functional requirements
- System architecture
- Hardware
- Data model
- Security, privacy and compliance
- Integrations
- Implementation plan
- Team and governance
- Commercials
- Risks
- Assumptions and dependencies
- Open decisions
- Appendices
1. Executive summary
Almost every institutional building in Uganda — regulators such as UCC and CAA, banks, telcos, government offices and multi-tenant commercial blocks — controls visitors with a paper "blue book". The visitor surrenders an ID, writes their name, date, host, reason and times in a book, and receives a reusable visitor card. Some buildings keep one book per tenant; some require the same details in up to three books.
The book gives the appearance of control without the substance. Entries are unverified and often illegible, IDs are held at a desk where they can be lost or copied, and the books are rarely if ever consulted. When an alarm sounds, nobody can say which visitors are still inside.
Code::Core proposes a visitor management system (VMS) built in Uganda for Ugandan conditions. A kiosk at the gate or reception reads the visitor's National ID or passport once, decodes and checks the NIN, runs the organisation's own entry procedure (induction video, safety test, NDA, speaking with the host), notifies the host by SMS, WhatsApp or intercom, prints a time-limited badge, releases the turnstile and records everything for reporting and audit.
The platform is built on Django with an offline-first edge agent on each kiosk, so check-in continues through power and internet outages. It is configurable per organisation and supports many tenants behind one entrance.
115M
The headline offer is a fully kitted reception processing 100 visitors a day for UGX 115M including 18% VAT. Packages scale from UGX 32M (up to 40 visitors a day) to UGX 200M (up to 300 a day), with full ownership of the system at UGX 320M.
The proposal is led by an engineer who has previously built and operated a comparable system in a data centre environment.
2. Background and problem
2.1 Current process
- Visitor arrives at the gate; guard requests an ID.
- Visitor writes name, date, person to visit, reason and time in in the blue book.
- ID is retained; a numbered visitor card is issued.
- In multi-tenant buildings, steps 2–3 may repeat at the lobby and again at the tenant's own reception.
- On exit, the visitor writes the time out (often skipped) and swaps the card for the ID.
2.2 Problems
| Problem | Effect |
| Unverified entries | Anyone can write any name. No link between the person, the ID and the entry. |
| ID retention | National IDs held at an unsecured desk; risk of loss, swapping or copying; visitors leave without their ID. |
| Never referred to | Books are filed and not searched after incidents or for audits; the data has no operational value. |
| Duplicate books | One book per tenant or per checkpoint — up to three entries for one visit, none joined up. |
| No live occupancy | No roll call during evacuation; overstays and unreturned cards go unnoticed. |
| Procedures not enforced | Safety inductions, tests or host confirmation depend on the guard remembering and are not evidenced. |
| Privacy exposure | Personal data sits open on a desk for every later visitor to read, contrary to the spirit of the Data Protection and Privacy Act, 2019. |
3. Objectives and success measures
| # | Objective | Measure (pilot target) |
| O1 | Replace every paper book at a site | All books retired within 30 days of go-live |
| O2 | Verify identity at entry | 100% of visits linked to a scanned ID; NIN format check on every National ID |
| O3 | Return IDs immediately | 0 IDs retained at reception |
| O4 | Speed up check-in | Median ≤ 2 min first visit; ≤ 30 s returning or pre-invited |
| O5 | Enforce each organisation's procedure | 100% of required steps evidenced in the audit log |
| O6 | Know who is on site | Evacuation roll call available in ≤ 10 s; drill accuracy ≥ 98% |
| O7 | Make records useful | Any past visit retrievable in ≤ 30 s by name, NIN, host or date |
| O8 | Stay available | Check-in continues during internet or mains outage; 99.5% kiosk availability |
4. Scope
4.1 In scope
- Visitor self-service kiosk application (gate and reception variants).
- Reception / security dashboard with live occupancy and evacuation roll call.
- Organisation admin console: hosts, tenants, visitor types, workflow builder, devices, reports.
- Host notification and approval by SMS, WhatsApp and SIP intercom.
- Pre-registration and QR invites sent by hosts.
- Badge printing (PVC card or sticker) and time-limited access credentials.
- Integration with turnstiles and door controllers via relay, Wiegand or OSDP.
- Multi-tenant operation: many organisations behind one entrance.
- Reporting, audit logs and data exports.
- Supply, installation, training and support for the hardware in each package.
4.2 Out of scope (phase 1)
- Live verification against the NIRA register (planned as phase 2, subject to an agreement with NIRA).
- Staff time and attendance.
- Vehicle number-plate recognition.
- Civil works for new turnstiles or gates (coordinated with the client's contractor).
- Replacement of an existing access-control system; the VMS integrates with it.
5. Stakeholders and users
| Role | Needs | Primary touchpoint |
| Visitor | Fast entry, keep their ID, clear directions | Kiosk, SMS/WhatsApp invite |
| Host | Know when a guest arrives; approve without an app | SMS, WhatsApp, desk phone |
| Guard / receptionist | Handle exceptions, see who is waiting, run roll call | Reception dashboard |
| Security manager | Enforce policy, watchlists, investigations | Dashboard, reports, audit log |
| Organisation admin | Configure procedure, hosts, visitor types | Admin console |
| Building manager / landlord | One entrance for all tenants; occupancy | Building admin console |
| Auditor / regulator | Evidence that procedures were followed | Read-only exports |
| Code::Core support | Monitor devices, update software, fix faults | Device fleet console |
6. Solution overview
The VMS has three parts: a cloud platform (Django) that holds configuration, records and reports; a kiosk at each entrance running a local edge agent that drives the hardware and keeps working offline; and communications channels that reach hosts wherever they are.
6.1 Visitor journey (example: regulator, meeting visitor)
| Step | Screen | What happens |
| K1 | Attract | Visitor chooses Check in, Check out or "I have a QR invite". Language: English or Swahili. |
| K2 | Identity | ID placed on reader. MRZ and face photo read; live photo taken. NIN decoded and cross-checked. ID returned. |
| K3 | Host & reason | Search across all tenants; presence shown. Reason chosen (meeting, delivery, interview, contractor). |
| K4 | Induction | Organisation's safety video; cannot be skipped; completion valid for a configured period. |
| K5 | Safety test | Organisation's questions and pass mark; two attempts, then reception is alerted. |
| K6 | Host approval | SMS → WhatsApp → SIP call, in the order the organisation sets. Visitor may speak on the intercom. |
| K7 | Badge | Badge printed with photo, host, floor and validity; access credential pushed to the turnstile. |
| — | Exit | Badge tapped at exit turnstile or kiosk; visit closed; card recovered for re-encoding. |
6.2 Configurable steps
Each organisation assembles its own workflow per visitor type from: ID scan, live photo, host lookup, induction video, safety test, NDA / e-signature, speak with host, host approval, badge print, turnstile release and check-out. A contractor flow can require induction and a test; a delivery flow may need only an ID scan and a sticker badge.
7. Functional requirements
Priority: M must have for go-live, S should have, C could have (later phase).
| ID | Requirement | Pri. |
| Check-in |
| FR-01 | Read Uganda National ID and passports via MRZ; capture document photo where available. | M |
| FR-02 | Validate NIN format (Appendix A) and cross-check sex and birth year against the document; flag mismatches to reception. | M |
| FR-03 | Capture a live photo and attach it to the visit. | M |
| FR-04 | Recognise returning visitors and pre-fill details; skip steps still valid (e.g. induction within 90 days). | M |
| FR-05 | Search hosts across all tenants at the site, with presence status. | M |
| FR-06 | Run the organisation's workflow for the selected visitor type, in order, recording a result for each step. | M |
| FR-07 | Play induction video with skipping disabled; record completion and version. | M |
| FR-08 | Run configurable safety test with pass mark and attempt limit. | M |
| FR-09 | Capture NDA or site-rules acceptance with on-screen signature. | S |
| FR-10 | Accept QR invites issued by hosts and skip pre-completed steps. | M |
| FR-11 | Show consent notice and capture consent before storing personal data. | M |
| FR-12 | Support English and Swahili on the kiosk; further languages configurable. | S |
| Host communication |
| FR-13 | Notify host by SMS and WhatsApp with visitor name, photo, reason and approve / coming down / decline actions. | M |
| FR-14 | Escalate to SIP call to the host's desk phone, then to reception, after configurable timeouts. | M |
| FR-15 | Allow two-way intercom between kiosk and host or reception. | S |
| FR-16 | Accept plain-SMS replies (1 / 2 / 3) for hosts without WhatsApp. | M |
| Badges and access |
| FR-17 | Print PVC badge with photo, name, host, floor and validity; encode access credential. | M |
| FR-18 | Print sticker badge with QR for low-security sites. | M |
| FR-19 | Push credential validity (zones, start, expiry) to the access controller; revoke on check-out or expiry. | M |
| FR-20 | Check out by badge tap, kiosk or reception; auto-close at end of day with overstay flag. | M |
| Reception and security |
| FR-21 | Live dashboard: on site, waiting for host, overstayed, failed steps. | M |
| FR-22 | One-tap evacuation roll call (screen, print and SMS to marshals); triggered automatically by fire-panel input. | M |
| FR-23 | Organisation watchlist (deny or silent alert) matched on NIN, passport or name. | S |
| FR-24 | Manual check-in by receptionist for exceptions, with reason recorded. | M |
| Administration and reporting |
| FR-25 | Admin console for hosts, departments, tenants, visitor types and workflows (drag-to-order). | M |
| FR-26 | Bulk host import (CSV) and optional directory sync. | S |
| FR-27 | Reports: daily visits, peak hours, per-host, per-tenant, overstays, failed tests; CSV and PDF export. | M |
| FR-28 | Search any past visit by name, NIN, host, tenant or date. | M |
| FR-29 | Immutable audit log of every action by every user and device. | M |
| FR-30 | Device fleet view: health, printer supplies, last sync, software version. | M |
| FR-31 | REST API for integration with client systems. | C |
8. Non-functional requirements
| Area | Requirement |
| Performance | Each kiosk clears ≥ 30 check-ins per hour; ID read ≤ 3 s; dashboard updates within 2 s of an event. |
| Availability | 99.5% kiosk availability; cloud platform 99.5% monthly. |
| Offline operation | Kiosk completes check-in, badge print and turnstile release with no internet for at least 72 hours; host notification falls back to local SIP; queued events sync on reconnect. |
| Power | Online UPS gives at least 1 hour of full operation on mains failure. |
| Scalability | Horizontal scaling to 500 sites and 50,000 visits per day without redesign. |
| Security | TLS 1.2+; encryption at rest; per-tenant isolation; role-based access; MFA for admins. |
| Privacy | Configurable retention with automatic purge; data minimisation; subject access and erasure supported. |
| Usability | First-time visitor completes check-in unaided; touch targets ≥ 48 px; readable in bright lobby light. |
| Maintainability | Signed over-the-air updates; remote diagnostics; documented runbooks. |
| Durability | Gate kiosks IP65 front, operating 0–45 °C, dust tolerant. |
9. System architecture
The system is split between a central platform and a hardened edge at each entrance. The edge is the source of truth during an outage; the platform is the source of truth for configuration and history.
| Layer | Components |
| Cloud platform | Django 5 and Django REST Framework; PostgreSQL with schema-per-tenant isolation (django-tenants); Celery and Redis for notifications, reports and purges; Django Channels (WebSockets) for live dashboards; object storage for photos and signatures, encrypted. |
| Web front ends | Admin console and reception dashboard as server-rendered Django templates with HTMX; kiosk UI as a locked full-screen web app served by the edge agent. |
| Edge agent | Python service on each kiosk (Linux, or Windows IoT where vendor drivers require it). Holds a local copy of workflows, hosts and active credentials in SQLite; queues events and syncs over an authenticated API; exposes hardware to the kiosk UI through a local API. |
| Hardware drivers | Document reader SDK (MRZ), camera, card printer and encoder, label printer, relay / Wiegand / OSDP controller, fire-panel dry contact. |
| Communications | SMS through a Ugandan aggregator; WhatsApp Business Platform for interactive approvals; Asterisk / FreePBX for SIP intercom and desk-phone calls; email for invites and reports. |
| Hosting | Ugandan data centre preferred (data residency); containerised deployment; daily encrypted backups with off-site copy. Own-the-system package deploys the same stack on the client's servers. |
| Operations | CI/CD with automated tests; monitoring and alerting on kiosk health and queue depth; centralised logs. |
9.1 Key flows
- Online check-in: kiosk → edge agent → platform API; notification jobs queued in Celery; dashboard updated over WebSocket.
- Offline check-in: edge agent validates against local data, prints the badge and pushes the credential to the local controller; host reached through local SIP; events queued and replayed in order on reconnect.
- Evacuation: fire-panel contact on the edge agent triggers a local roll-call print and SMS to marshals, independent of the cloud.
10. Hardware
Two kiosk tiers run the same software. Models are suggestions to be confirmed with Kampala suppliers for availability, warranty and local support. Prices are planning estimates in UGX, excluding VAT.
| Component | Gate kiosk (industrial) | Reception kiosk (tablet) | Est. UGX |
| Compute | Fanless industrial panel PC, 15.6", IP65 front, Core i5, 8 GB (e.g. Advantech TPC / UTC series) | Rugged tablet in locked stand (e.g. Samsung Galaxy Tab Active) | 6–8M / 2.5–3.5M |
| ID reader | Full-page document reader, MRZ OCR + UV (e.g. Thales, Regula) | Camera MRZ read or compact USB MRZ reader | 3–6M / 0.8–2M |
| Badge printer | PVC card printer with RFID encoder (e.g. Zebra ZC300) | Label printer (e.g. Brother QL series) | 6–9M / 0.8–1.2M |
| Access cards | MIFARE DESFire 13.56 MHz reader / writer (e.g. HID Omnikey) | QR on sticker badge | 0.4–0.8M |
| Camera | USB 1080p with IR for photo and liveness | Tablet front camera | 0.3–0.6M |
| Intercom | SIP video door station or handset (e.g. Grandstream, Yealink) | Tablet softphone | 1.2–2.5M |
| I/O | Relay / Wiegand / OSDP controller; fire-panel input | Optional | 0.8–1.5M |
| Power | Online UPS, 1–2 h runtime | Small UPS for printer | 1–2M |
| Network | Wired LAN + 4G LTE failover router | Wi-Fi + 4G SIM | 0.5–1M |
| Enclosure | Floor-standing steel kiosk, lockable, cable-managed | Desk stand with security lock | 2–4M / 0.3–0.6M |
11. Data model
| Entity | Purpose and key fields |
Organisation | Tenant. Name, branding, retention policy, notification order, data-protection contact. |
Site, Entrance | Building and its gates. One site can host many organisations. |
Host | Staff member who receives visitors. Phone, WhatsApp, SIP extension, department, floor, presence. |
Visitor | Person. Document type, hashed NIN or passport number, decoded sex and birth year, photo reference, consent record. |
VisitorType | Meeting, contractor, delivery, interview, VIP — each linked to a workflow. |
Workflow, Step | Ordered steps with per-step configuration (video, questions, pass mark, validity). |
Visit | One trip. Visitor, host, organisation, entrance, reason, times in and out, status. |
StepResult | Evidence per step: watched, score, signature, approval channel and time. |
Badge, Credential | Printed badge and access credential: zones, validity window, revocation. |
Device | Registered kiosk: capabilities, health, software version, last sync. |
WatchlistEntry | Identifier, action (deny / alert), reason, owner, expiry. |
AuditEvent | Append-only record of every action: actor, device, object, before / after, time. |
12. Security, privacy and compliance
12.1 Data Protection and Privacy Act, 2019
- Code::Core and each client register with the Personal Data Protection Office as required; roles of data controller (client) and processor (Code::Core) defined in a data processing agreement.
- Consent notice shown and recorded at every check-in, stating purpose, retention and contact.
- Data minimisation: identifiers stored hashed; full document image stored only where the organisation's policy requires it.
- Retention configurable per organisation (default 90 days for visit records, 30 days for photos), with automatic purge and legal-hold override.
- Subject access, correction and erasure requests handled through the admin console and logged.
- Personal data hosted in Uganda by default; any cross-border transfer documented and agreed with the client.
12.2 Security controls
| Control | Implementation |
| Tenant isolation | Separate PostgreSQL schema per organisation; shared-site directory exposes only host names and floors. |
| Encryption | TLS in transit; AES-256 at rest; per-tenant keys for sensitive fields. |
| Access control | Roles: guard, receptionist, host, organisation admin, building admin, auditor, Code::Core support. MFA for admin roles. |
| Device trust | Each kiosk enrolled with a unique certificate; revocable remotely. |
| Kiosk hardening | Locked OS shell, USB storage disabled, BIOS password, tamper switch, remote wipe. |
| Audit | Append-only audit log; exports signed with a checksum. |
| Testing | Independent penetration test before first production go-live and annually. |
| Backups | Daily encrypted backups, 30-day retention, quarterly restore test. |
13. Integrations
| System | Purpose | Method |
| Turnstiles / door controllers | Release on valid badge; revoke on exit | Relay, Wiegand 26/34, OSDP |
| Existing access control | Create and revoke visitor credentials | Vendor API or Wiegand emulation |
| Fire alarm panel | Trigger roll call automatically | Dry-contact input |
| PBX / desk phones | Call host; intercom | SIP trunk to Asterisk / FreePBX |
| SMS aggregator | Host alerts and visitor invites | HTTP API |
| WhatsApp Business Platform | Interactive host approvals | Cloud API via approved provider |
| Directory / HR system | Keep host list current | CSV, LDAP / Active Directory, or API |
| NIRA (phase 2) | Verify NIN against the register | Subject to agreement with NIRA |
14. Implementation plan
14.1 Product build
| Months | Phase | Deliverables |
| 1–2 | Discovery | Three pilot sites surveyed; entry procedures mapped; hardware tier confirmed; data protection impact assessment. |
| 3–5 | MVP build | ID scan and NIN check, host notification, badge printing, reception dashboard, workflow builder, offline edge agent. |
| 6 | Pilot 1 | Single-organisation reception live; books retired. |
| 7–9 | Access and comms | Turnstile integration, SIP intercom, inductions and tests; multi-tenant building pilot. |
| 10–12 | Hardening | Reports and exports, penetration test, compliance review, support runbooks; first paid contracts. |
14.2 Per-site rollout (Reception package, ~8 weeks)
| Week | Activity |
| 1 | Site survey: entrances, network, power, turnstiles, visitor volumes and peak hour. |
| 2–3 | Workflow design with the client; host list import; induction content and test questions agreed. |
| 4–5 | Hardware procurement and staging; configuration; acceptance test at Code::Core. |
| 6 | Installation, cabling and integration on site. |
| 7 | Training for guards, receptionists and admins; parallel run alongside the book. |
| 8 | Go-live; book retired; handover to support. |
15. Team and governance
| Role | Responsibility |
| Project lead / solution architect | Engineer with prior experience building and operating this class of system in a data centre. Owns architecture, hardware selection and client relationships. |
| Backend engineer (Django) | Platform, APIs, multi-tenancy, notifications, reports. |
| Edge / integration engineer | Kiosk agent, hardware drivers, access control, SIP. |
| Front-end engineer | Kiosk UI, dashboard, admin console. |
| Field technician | Installation, cabling, maintenance, consumables. |
| Client project owner | Named contact at each client: approves workflow, hosts list, sign-off. |
A steering meeting with each client is held fortnightly during rollout and monthly during support. Changes to scope follow a written change request with impact on cost and timeline.
16. Commercials
16.1 Sizing method
Sites are sized for the morning peak, not the daily average. The peak hour is taken as about 25% of daily visitors. One kiosk clears about 30 check-ins an hour (around 2 minutes for a first visit, 30 seconds for returning or pre-invited visitors).
Kiosks required = ⌈ (daily visitors × 0.25) ÷ 30 ⌉
Example: 100 visitors a day → 25 at peak → 1 kiosk, plus a reception tablet as backup and for walk-ups.
16.2 Packages (one-off, UGX, including 18% VAT)
| Package | Visitors / day | Includes | Ex VAT | Incl. VAT |
| Lite | up to 40 | Tablet kiosk, ID scan and NIN check, sticker badges, SMS / WhatsApp host alerts, daily reports | 27.1M | 32M |
| Reception | up to 100 | Industrial kiosk + reception tablet, PVC card printing, induction video and test, host approval with escalation, evacuation roll call, 12 months support | 97.5M | 115M |
| Gate | up to 300 | 3 kiosks across entrances, turnstile and door control, SIP intercom, multi-tenant directory, watchlist, audit exports | 169.5M | 200M |
| Own the system | unlimited | Every feature, full build, on-premise deployment, source code licence and ownership, access-control and HR integrations, training, 24 months support | 271.2M | 320M |
16.3 Reception package breakdown (UGX 115M)
| Item | UGX |
| Hardware kit — industrial kiosk, reception tablet, card printer and encoder, ID reader, intercom, UPS, enclosure | 38.0M |
| Software licence, configuration and workflows | 32.0M |
| Year-1 support, hosting, SMS and WhatsApp messaging | 15.5M |
| Installation, integration and staff training | 12.0M |
| Subtotal (ex VAT) | 97.5M |
| VAT at 18% (URA) | 17.5M |
| Total | 115.0M |
16.4 Terms
- Payment: 50% on signing, 40% on installation, 10% on go-live acceptance.
- Where the client is a designated withholding agent, 6% withholding tax is deducted at payment and credited to Code::Core with URA; the package price does not change.
- Support renewal after the included period: 15% of the ex-VAT package price per year, plus VAT. Covers software updates, remote support, next-business-day on-site response in Kampala, and messaging up to the package's visitor volume.
- Consumables (blank cards, ribbons, labels) supplied at cost after the first year.
- Final quote follows a site survey. Tax treatment to be confirmed with a tax adviser before quoting.
17. Risks
| Risk | L / I | Mitigation |
| Internet or power outage at the gate | H / H | Offline-first edge agent; UPS; 4G failover; local SIP for host calls. |
| Visitors without a National ID or passport | M / M | Receptionist-assisted manual entry with photo and reason; flagged in reports. |
| Hardware lead times or availability in Uganda | M / H | Two approved models per component; stock one spare kit in Kampala. |
| Hosts ignore notifications | M / M | Escalation to desk phone then reception; per-host response reports. |
| Guards bypass the system | M / H | Turnstile integration; daily book-vs-system reconciliation during parallel run; management reports. |
| Data protection breach | L / H | Encryption, tenant isolation, retention limits, penetration test, incident response plan. |
| Integration with legacy access control | M / M | Survey in week 1; Wiegand emulation fallback; vendor engagement early. |
| WhatsApp template approval delays | M / L | SMS as default channel; templates submitted in discovery. |
| Price sensitivity of public-sector buyers | M / M | Lite package; phased upgrade path; landlord-funded building model. |
| Key-person dependency | M / H | Documentation, code review, second engineer trained on every component. |
L / I = likelihood / impact: H high, M medium, L low.
18. Assumptions and dependencies
- Client provides a powered, networked location at each entrance and access for cabling.
- Client provides an up-to-date host list and a named project owner.
- Where turnstiles exist, they accept a relay, Wiegand or OSDP input.
- Uganda National IDs in circulation carry a readable MRZ.
- Messaging costs are based on current aggregator and WhatsApp rates; large rate changes may be passed through.
- Prices assume current UGX/USD exchange rates for imported hardware; quotes are valid for 30 days.
19. Open decisions
| Decision | Options |
| Product name | Keep "Code::Core VMS" · choose a neutral product name |
| First pilot hardware | Industrial gate kiosk · tablet reception kiosk |
| ID verification depth | MRZ + NIN format check + photo · add NIRA verification (phase 2) |
| Hosting | Ugandan data centre · regional cloud with local backup |
| Who pays in shared buildings | Landlord, tenants included · each tenant separately |
| Default host channel | SMS + WhatsApp first · SIP desk-phone first |
| Kiosk front-end stack | Django templates + HTMX · separate PWA on DRF API |
| First target segment | Regulators and agencies · multi-tenant commercial buildings |
Appendix A — Uganda NIN format
The National Identification Number issued by NIRA has 14 characters, letters and digits, with no spaces.
| Position | Example | Meaning |
| 1 | C | C = citizen; A = lawfully resident alien |
| 2 | F | M = male; F = female |
| 3–4 | 92 | Last two digits of year of birth |
| 5–10 | 018734 | Unique numeric block |
| 11–14 | XK4P | Alphanumeric block increasing the number range |
The system uses these rules to check that a NIN is well formed and that its sex and birth year agree with the document. This is a consistency check, not proof of identity; NIRA has not published a check digit, and confirming that a NIN belongs to the holder requires a lookup with NIRA.
Appendix B — Proposed screens
| Ref | Screen | Purpose |
| K1 | Attract | Start check-in, check-out or QR invite |
| K2 | Identity | Confirm details read from ID; NIN decoded |
| K3 | Host & reason | Choose host across tenants; reason |
| K4 | Induction | Mandatory safety video |
| K5 | Safety test | Organisation's questions |
| K6 | Host approval | Waiting / intercom |
| K7 | Badge | Directions and badge collection |
| R1 | Reception dashboard | Live occupancy, exceptions, roll call |
| A1 | Workflow builder | Configure steps per visitor type |
| H1 | Host notification | Approve from WhatsApp or SMS |
Visual mock-ups are in the Project Hub, Screens tab.
Appendix C — Glossary
| DRF | Django REST Framework |
| Edge agent | Software on the kiosk that drives hardware and works offline |
| MRZ | Machine-readable zone on an ID card or passport |
| NIN | National Identification Number |
| NIRA | National Identification and Registration Authority |
| OSDP / Wiegand | Protocols between card readers and access controllers |
| PDPO | Personal Data Protection Office |
| SIP | Session Initiation Protocol, used for voice-over-IP calls |
| URA | Uganda Revenue Authority |
| VAT / WHT | Value-added tax (18%) / withholding tax (6%) |