September 2026 Equalify Dashboard Development Report
Edit on GitHubSeptember 2026 Development Report
Reporting period: Aug 3 – Sep 2, 2026 Sources: #648, #649, #650, #652, #653, #654, #655 Contributors: B. Bertuccelli-Booth, C. Aitken, T. Daniel
Executive Summary
September centered on the FOSS deployable release, with 35 tasks completed across 165 code commits at a 64% completion rate. The team merged the Terraform-based deployable branch into staging and shipped it to production as version 2.0.0, marking the first release that external institutions can provision on their own AWS accounts. Alongside the release, the team added dashboard KPIs, clickable Summary View navigation, duplicate blocker grouping, and a new Accessibility Standard grouping in the Detailed View. Separately, B. Bertuccelli-Booth built a benchmarking framework for the Iris scanning engine, which accounts for the majority of this month's commit volume.
Highlights
- Shipped version 2.0.0 with the deployable release, merging the Terraform build scripts, deployment strategy, and provisioning documentation into main so external institutions can deploy Equalify independently on AWS
- Added dashboard KPIs for tracking platform usage
- Established a platform KPI baseline for May through August (pages scanned, sessions, active users, tickets opened, releases), now tracked month over month in these reports
- Added interactive Summary View navigation and new metrics, allowing users to click items in "Most Common Blockers" and "URLs with Most Blockers" to jump directly to filtered detailed results
- Added duplicate blocker grouping and unique blocker counts, with hash-based deduplication so ignoring a blocker also ignores identical instances across URLs
- Replaced blocker tags with an Accessibility Standard grouping in the Detailed View, with grouped display and readable labels
- Built an Iris benchmarking framework to measure scanning engine performance across document corpora, tracking success rates, processing time, and cost metrics
Key Metrics
| Metric | Value |
|---|---|
| Tasks completed | 35 |
| Tasks remaining | 59 |
| New tasks added | 39 |
| Completion rate | 64% |
| Code commits | 165 |
| Repositories with activity | 6 |
| Issue edits (activity) | 62 |
| Source issues | 7 |
Platform KPI Baseline
Starting with this report, each monthly report carries a month-over-month table of platform usage KPIs alongside the development metrics above. The figures below establish the baseline for the four full calendar months preceding this report. Sources and definitions follow the table.
| KPI | May 2026 | Jun 2026 | Jul 2026 | Aug 2026 |
|---|---|---|---|---|
| Pages scanned (HTML) | 204,524 | 210,909 | 218,134 | 223,860 |
| Pages scanned (PDF) | 3,808 | 6,567 | 8,209 | 7,523 |
| Pages scanned (total) | 208,332 | 217,476 | 226,343 | 231,383 |
| Scan runs (audit-level) | 575 | 575 | 784 | 743 |
| Sessions started (app loads) | 262 | 237 | 169 | 210 |
| Active users | 23 | 14 | 19 | 18 |
| Active user-days | 79 | 68 | 58 | 53 |
Tickets opened (equalify repo) | 10 | 11 | 9 | 5 |
| Tickets opened (all org repos) | 24 | 14 | 13 | 128 |
| Releases published | 0 | 4 | 1 | 1 |
| Hub page views | 618 | 2,430 | 1,749 | 3,792 |
| Units served (SSO) | — | — | — | — |
Definitions and Sources
- Pages scanned counts individual HTML page and PDF document scans started by the scan Lambdas (CloudWatch
scansStartedmetric,equalifyuicnamespace). Earlier months are omitted because their PDF scan volume was not comparable to the current pipeline. - Scan runs are audit-level scan records in the database, one per scheduled or manual audit run.
- Sessions started counts app loads that completed backend validation (
/auth/getAccountcalls in the API Lambda logs). Active users is the number of distinct authenticated users making any API call during the month. Active user-days counts distinct user and day pairs. - Tickets opened are GitHub issues created during the month. The August org-wide spike is 122 issues in
equalify-irisgenerated by the Iris benchmarking work; theequalifyrepo row is the better product-support signal. Hub feedback-board submissions are not yet counted. - Units served is not yet instrumented. Azure AD ID tokens carry no department claim, so the app will record department from Microsoft Graph at SSO login (see Operations below). This row populates from the month that ships.
- September to date (Sep 1 to 3): 24,647 pages scanned, 109 scan runs, 35 sessions, 5 active users.
Completed Work
Team
- Completed the FOSS deployment milestone: wrote Terraform build scripts to provision all required components (Lambdas, database, and service relationships), determined the deployment strategy for pushing code updates to provisioned environments, and produced technical deployment documentation.
- Merged the deployable branch into staging (Aug 11) and released it to main as version 2.0.0 (Aug 20).
- Implemented dashboard KPIs for platform usage tracking.
- Added clickable links from Summary View tables to the filtered Detailed View, enabling users to navigate directly from "Most Common Blockers" and "URLs with Most Blockers" to the corresponding results.
- Added an AGPLv3 license to the main repository and updated the README with technical documentation.
T. Daniel
- Fixed deployable-branch issues surfaced during testing, including a Lambda SSO compatibility check that failed due to a JavaScript versus Terraform truthiness mismatch, and restored environment files that had been accidentally excluded from the repository.
- Refactored the audit summary with new metrics and moved the "Most Common Blockers" and "URLs with Most Blockers" tables to paginated backend endpoints.
- Replaced blocker tags with an "Accessibility Standard" field in the Detailed View, adding grouping and readable labels.
- Persisted the Audits screen filter (My Audits vs. All Audits) in application state so the selection carries across sessions.
- Implemented routing and back-button support application-wide, particularly on the audit screen.
- Copied the technical documentation into the main repository and updated the README.
- Resolved reported blocker-count inconsistencies between sites that share a page template (issue #647).
C. Aitken
- Published the August 2026 development report.
- Updated user and technical documentation for the self-registration access request flow.
- Reviewed and refined the Terraform provisioning process, adding account-ID guards, installation notes, and fixes ahead of the staging merge.
- Added duplicate blocker grouping, hiding, and unique blocker counts to the Detailed View, Summary View, and CSV export, backed by hash-based deduplication of ignored blockers.
- Resolved a scheduled audit that was not running (issue #645), traced to the WordPress integration listing the URL count as unavailable.
- Handed off Equalify Extension design context and documentation to T. Daniel.
- Adjusted the DASE Hub based on feedback from Helen, Michael, and Jemma, and prepared a prototype for demonstration to program directors.
Notable Events
- Aug 11: Merged the deployable branch into staging, bringing the Terraform provisioning scripts and technical documentation into the shared codebase.
- Aug 20: Released version 2.0.0 to production, the first release that supports external institutional deployment.
- Iris benchmarking framework established: B. Bertuccelli-Booth contributed 132 commits during the period, primarily advancing the Iris scanning engine and building a new benchmarking harness to measure scanning performance, cost, and reliability across document corpora.
- DASE Hub prototype refined: C. Aitken incorporated stakeholder feedback and prepared the DASE Hub prototype for demonstration to program directors.
Risks & Blockers
- Audit-level scan failure behavior (#654): When an audit-level scan fails, active blockers are currently moved to an icebox, which zeroes out blocker counts and makes individual blocker pages unreachable. A more graceful failure mode that preserves data from the last valid scan has been identified as a priority improvement.
- Production-to-deployable interoperability testing: Verifying that a provisioned deployable instance operates correctly alongside the production environment is still in progress following the 2.0.0 release.
- API access without browser login (#655): External integrations will need an alternate authentication method such as user-issued tokens, which is not yet designed.
In Progress & Upcoming
Development
- Test production-to-deployable interoperability. (C. Aitken and T. Daniel)
- Finalize developer-focused documentation that introduces how to install and use the platform from a high level. (T. Daniel)
- Present the DASE Hub prototype to program directors. (C. Aitken)
- Publish the September 2026 development report. (C. Aitken)
- Plan and scope the Error Explanation Sprint to improve data interpretability for end users.
- Improve scheduled email notification content to include URL and blocker counts and summary information, and evaluate additional triggers such as scan-completion notifications.
Operations
- Integrate database schema and Hasura metadata version control into the CI/CD pipeline. (C. Aitken)
- Ship in-app session and SSO unit tracking (new
sessionstable, monthly KPI table on the admin Statistics tab) so sessions started and units served are captured from September onward. (C. Aitken) - Move documentation into the main repository.
- Connect the Hub to the main repository.
Newly Identified Work
- Handle audit-level scan failures gracefully by preserving data from the last valid scan instead of zeroing out blocker counts.
- Indicate scan failures visually on the scans chart and table (e.g., different pip color or icon).
- Add a historical scan viewer to the Audit Detailed View, allowing users to select and review previous scans with their associated blocker data.
- Continue enhancing the Summary View with PDF vs. HTML page counts, repeated blocker code identification across URLs, and better visual highlighting of high-blocker-count pages.
- Evaluate an optional LLM-generated summary block for the Summary View.
- Add URL drilldown capability and issue export and integrations to the Detailed View.
- Add contextual helper text to the Build Audit screen.
- Expand blocker status options beyond "Ignore" to include additional user-settable tracking states (e.g., Needs Review).
- Develop API support for external integrations, including an authentication method that does not require browser login.
- Plan a promotional release for the deployable version.
Development Activity
Contributor Activity
| Contributor | Commits |
|---|---|
| B. Bertuccelli-Booth | 132 |
| T. Daniel | 24 |
| C. Aitken | 9 |
Active Repositories
| Repository | Commits |
|---|---|
| equalify-iris | 100 |
| equalify | 30 |
| benchmarks-ai-alt | 23 |
| equalify-iris-bench | 9 |
| equalify-docs | 2 |
| equalify-hub | 1 |
Recent Commit Highlights
- Released version 2.0.0 after merging the deployable branch through staging to main.
- Completed Terraform infrastructure scripts with account-level safeguards, installation notes, and deployment fixes including a Lambda SSO compatibility resolution.
- Added duplicate blocker grouping, hiding, and unique blocker counts, with hash-based deduplication of ignored blockers hardened across the scan webhook and HTML normalization.
- Replaced blocker tags with an "Accessibility Standard" grouping and readable labels in the Detailed View.
- Refactored the audit summary with new metrics and paginated backend endpoints for the "Most Common Blockers" and "URLs with Most Blockers" tables.
- Added clickable links from Summary View tables to the filtered Detailed View, enabling direct navigation from high-level findings to specific results.
- Restored environment configuration files and updated the main README with technical documentation and AGPLv3 licensing.
- Published the August 2026 development report and documented the self-registration access request flow across user and technical documentation.
- Added team and partner links to the DASE Hub footer, including accessibility team and partner hub references.
- Built an Iris benchmarking framework to measure scanning engine performance across a document corpus, tracking success rates, processing time, and cost metrics.
- Improved benchmarking accuracy and efficiency by fixing file-level claim validation, correcting cost accounting to measure actual spend, and reducing corpus storage from 5.4 GB to 265 MB.
- Enhanced benchmark reliability by distinguishing slow document servers from unresponsive ones and preventing approval data loss from dropped network packets.
Planned Sprints
FOSS Sprint (1-2 weeks)
This sprint focuses on finalizing the deployable release by completing interoperability testing between production and a provisioned deployable instance, producing developer-focused documentation that introduces how to install and use the platform from a high level, and planning a promotional release.
Design and Maintenance Sprint (1-2 weeks)
This sprint will establish a cohesive visual direction for the platform, including alignment on an overall palette, branding guidelines, a component design system for interface consistency, and general code and style cleanup. The sprint will also include planning discussions for roll-up reporting across multiple audits and more fine-grained user-to-audit group permissions.