Documentation
Platform Docs
Everything you need to run a secure, verifiable election with Baalot — from first setup to published results.
Introduction
Baalot is a secure election platform built for African institutions. It lets administrators create and manage elections, onboard verified voters, cast anonymous ballots, and publish live results — with one vote per verified identity.
Today, ballots are stored unreadable and tallied on Baalot's verified servers, and voter identity is verified against Nigerian national databases (NIN / BVN) before any ballot is cast. Anchoring every vote to a public blockchain via a zero-knowledge commitment — so results can be audited independently — is on our roadmap.
Who is this for? University registrars, student union electoral committees, corporate secretaries, and any institution that needs a defensible, verifiable election record.
How Elections Work
Every Baalot election follows the same three-phase lifecycle, regardless of size.
Admin Setup
The institution admin creates the election on the dashboard — sets the name, positions, candidates, and voting window. The voter list (CSV or manual) is uploaded and matched against the national ID registry to produce a verified electorate.
Voter Authentication & Voting
Eligible voters receive a credential link or download the Baalot app. They authenticate with their institutional ID and NIN/BVN. Once verified, they cast their ballot, protected by a voting PIN and optional biometrics. On-device zero-knowledge commitments written to a public blockchain are on our roadmap.
Tally & Results
When polls close, Baalot's servers tally the votes and the admin dashboard shows live results the instant counting completes. On-chain publication and independent verification via a public block explorer are on our roadmap.
Election states
An election moves through four states: draft -> open -> closed -> published. Only the institution admin can advance or revert between states. Votes can only be cast in the open state.
Admin Guide
Admins access the platform at admin.baalot.site using their institutional email. Admin accounts are provisioned by the Baalot team on institution onboarding.
Creating an election
New Election
From the dashboard, click New Election. Enter the election name, institution, and voting window (start date/time to end date/time).
Add positions & candidates
Add each position (e.g. President, Secretary). For each position, add the candidate names. Candidates do not need a Baalot account — only their name appears on the ballot.
Upload voter list
Upload a CSV with columns: matric_number, full_name, email (optional). Baalot matches each entry against the school registry. Unmatched rows are flagged for review before the election goes live.
Go live
Set the election to Open. Voters are notified automatically if email addresses were provided. The election runs until the end time you set, or until you manually close it.
Managing members
The Members tab shows every registered voter — Active, Pending, or Removed. You can approve, remove, or promote members from this view. For institutions with multiple departments, the institution picker in the top bar lets you switch context.
Voter Guide
Voters use the Baalot mobile app (iOS and Android) to register, verify their identity, and cast their vote.
Registering
Download the app
Install Baalot from the App Store or Google Play. Create an account with your institutional email address.
Complete your profile
Enter your name, nationality, phone number, and date of birth. These details are used to match your record against the voter list.
Verify your identity
Enter your NIN or BVN. Baalot checks it against the national identity database via Prembly IdentityPass.
Join your institution
Go to the Explore tab, search for your institution, and enter your matriculation or membership number. If it matches the voter list, you are added instantly as an active voter.
Casting a vote
When an election is open, it appears on your Home tab. Tap it, review the candidates for each position, make your selections, and confirm. Voting is protected by a voting PIN and optional biometrics, and your ballot is stored anonymously. On-device zero-knowledge proofs and a blockchain receipt you can verify independently are on our roadmap.
Security Model
Baalot's security rests on four independent layers. Each layer is designed so that compromising one does not compromise the others.
Blockchain immutability (roadmap)
We're building public-blockchain anchoring so vote commitments can be written to a chain and, once confirmed, cannot be edited, deleted, or reordered — by anyone, including Baalot.
Anonymous ballots
Ballots are stored unreadable, so no one can tie a vote back to a voter. Zero-knowledge commitments that prove validity without revealing your selection are on our roadmap.
NIN / BVN identity verification
Every voter is checked against the national identity database before they can access a ballot. Duplicate registrations are detected and blocked automatically.
End-to-end encryption
All data in transit is encrypted with TLS 1.3. Voter credentials are stored in device secure storage (iOS Keychain / Android Keystore), never on Baalot servers.
For a full security brief — including our architecture, blockchain roadmap, and data handling procedures — contact us at security@baalot.site.
API Access
The Baalot API is available to institutions on the Institution and Enterprise plans. It allows you to programmatically manage elections, upload voter lists, and retrieve results — useful for integrating Baalot into existing student portals or HR systems.
Full API reference is in progress. If you need API access now — for an integration, a student portal, or a custom voting workflow — reach out directly and we will give you early access with dedicated support.
Base URL
Key endpoints
POST /otpSend or verify a phone OTP. Body: { action: send or verify, phone, code? }
POST /verify-kycVerify a voter's NIN / BVN against the national registry.
POST /notify-electionSend push notifications to all eligible voters for an election.
Verification · Roadmap
Verify any ballot on-chain.
We're building independent verification: use the Baalot CLI or any node to confirm a voter receipt, no Baalot server required. Here's a preview of how it will work.