Documentation

Platform Docs

Everything you need to run a secure, verifiable election with Baalot — from first setup to published results.

Introduction

UniversitiesStudent UnionsOrganizations

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.

1

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.

2

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.

3

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

1

New Election

From the dashboard, click New Election. Enter the election name, institution, and voting window (start date/time to end date/time).

2

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.

3

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.

4

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

1

Download the app

Install Baalot from the App Store or Google Play. Create an account with your institutional email address.

2

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.

3

Verify your identity

Enter your NIN or BVN. Baalot checks it against the national identity database via Prembly IdentityPass.

4

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

POST / GET https://baalot.vercel.app/api/

Key endpoints

POST /otp

Send or verify a phone OTP. Body: { action: send or verify, phone, code? }

POST /verify-kyc

Verify a voter's NIN / BVN against the national registry.

POST /notify-election

Send 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.

baalot-verify
preview

Every vote is cryptographically sealed on your institution's chain - Baalot never stores your ballot.