All posts
ProductProduct Team

Field notes

Accountable by design: how iElect ships maturity labels

Every product surface on this site carries a maturity badge — live, pre-prod, active-dev, concept, PRD. It is not a marketing choice. It is a build-time error if missing.

On every page of this site where a product is named, a small chip appears next to it. "Live · Nigeria". "Pre-launch". "Active development". "Concept — partnership inquiries open". "PRD available".

The chip is not decorative. It is a build-time error if missing. Our content registry — a typed TypeScript file, not a CMS — requires every product record to carry a maturity value from a five-element union. If we tried to publish a product card without one, the build would fail. That is deliberate. In an industry where "enterprise-grade" often means "we hope to build that one day", we wanted the opposite: the claim a product is live is a claim that has to survive a type checker.

Why does that matter? Because election technology exists in a trust environment where overclaiming costs everyone. A commission that signs a contract expecting a production-ready platform and receives a slideware prototype suffers. So does every vendor in the market, because the next procurement gets more defensive. We would rather be boring and correct than exciting and wrong.

The five labels are load-bearing. "Live" means the code is running in at least one real deployment with real users. "Pre-launch" means the architecture is complete, testing is underway, and a launch date exists. "Active development" means the product is being built now and a launch date is not yet committed. "Concept" means we have a PRD but no code. "PRD available" means we have a specification you can read before committing to anything.

You will notice that Social Platform is labelled "Concept" on this site. That is because it is a concept. The Executive Summary is public. The software is not built. Telling a donor it is "live" would be a lie we cannot afford to ship.