top of page

COMMONS

Canadian Parliamentary Bill app built to serve the public

Commons App

Github Code

Frontend

Backend

Overview

 

Commons is a full-stack civic data product that structures and surfaces Canadian federal legislation in near real time. It transforms fragmented parliamentary data from LegisInfo into a unified, searchable system designed to improve clarity, traceability, and accessibility of legislative activity.

The product is built with React and a Node.js/Express backend, with a lightweight machine learning classification layer used to organize bills into categories for improved discoverability.

Problem

Canadian legislative data is publicly available but difficult to meaningfully use.

Bills are distributed across legacy government systems, formatted inconsistently, and lack a cohesive way to track status, relationships, or progression over time. This creates a high cognitive load for users trying to understand what legislation is active, changing, or relevant. As a result, there is a gap between data availability and data usability.

Goal

Design a system that reduces friction in how users discover, interpret, and track legislative activity. The focus was on building an information layer that could structure unstandardized civic data into a coherent, navigable product experience.

Solution

Commons introduces a structured data pipeline combined with automated categorization to transform raw legislative inputs into a usable product experience.

Key system decisions included:

  • Data normalization layer: Standardized inconsistent LegisInfo data into a structured schema for reliable querying and filtering

  • Automated classification layer: Used a lightweight ML-based approach to assign categories to bills, improving discoverability and reducing manual tagging

  • Search-first architecture: Prioritized retrieval and filtering over hierarchical navigation models

  • Progressive disclosure: Separated high-level summaries from detailed legislative metadata to reduce cognitive load

  • State-aware organization: Bills are contextualized by status, chamber, and session to support comparative analysis over time

 

Key Features

  • Live legislative ingestion pipeline from LegisInfo with structured transformation

  • Automated bill categorization system to support browsing and discovery

  • Search and filtering system across bill attributes, categories, and status

  • Bill lifecycle views showing progression through legislative stages

  • Responsive interface optimized for scanning dense informational content

 

System Design

  • Frontend: React (component-driven UI)

  • Backend: Node.js / Express REST API

  • Data layer: ETL pipeline converting LegisInfo XML/JSON into a normalized schema

  • Classification layer: Lightweight ML-assisted categorization for bill grouping

  • Architecture: Decoupled frontend/backend with API-first data consumption

 

Design Focus Areas

This project emphasized:

  • Designing for high-complexity civic datasets with inconsistent structure

  • Building a meaningful information hierarchy from unstructured data

  • Applying automated classification to improve content organization and discoverability

  • Optimizing for scanability and progressive understanding of dense content

  • Balancing data completeness, interpretability, and cognitive load

 

Outcome

 

Commons demonstrates how system design and structured data modelling can improve accessibility of institutional information without oversimplifying it.

The project reflects a shift from interface-level execution to product-level thinking—designing not just screens, but information systems that scale with complexity and evolve with data.

  • LinkedIn
  • GitHub

© 2026 by Mitch Lum

bottom of page