Skip to content

codeforamerica/curam-browser-extension

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Curam Evidence Validator

A Chrome / Edge browser extension that helps SNAP caseworkers ("SSRs") catch missing evidence on Curam cases — places where a missing piece of evidence might accidentally leave someone off a SNAP case. Originally built to reduce the "Household Composition" error category.

⚠ Research tool — not production-ready. This codebase was built as a research probe for fast iteration with a small, trusted group of caseworkers. It makes deliberate trade-offs that prioritize speed, cost, and freedom from backend dependencies over the guarantees a production deployment would require: synchronous DOM scraping of Curam pages, telemetry stored only in browser-local storage, distribution via OneDrive + Developer Mode "load unpacked," no build system or tests, and a noncommercial license. Each of these is documented — with the production path we would take instead — in docs/adr/. Read the ADRs before adopting this in any environment beyond a pilot.

Overview

The extension runs in Google Chrome and Microsoft Edge alongside your Curam instance. It surfaces helpful alerts on three specific evidence pages so caseworkers can catch missing or inconsistent household evidence before submitting a case:

  • Income Support – Addresses
  • Income Support – Living Arrangements
  • Income Support – Meal Group Members

How It Works

  • The extension integrates directly with your Curam instance.

  • Validation runs only on the three designated evidence pages and does not activate on any other website.

  • It cross-references key household composition details from the Household Members evidence with the page being viewed. Results appear in a popup that shows the household-member count and the validation findings.

  • On a Curam page where validation does not apply, the popup shows a "not supported" message:

  • When everything checks out, the popup confirms with a success message (the wording adapts to the page being validated):

Addresses

  • Missing addresses — a household member has no address on this page.
  • More than one address — a household member has more than one active private address; all of their addresses are highlighted.

Living Arrangements

  • Missing Living Arrangements — a household member has no living arrangement on this page.
  • Different Living Arrangements — a household member has a living arrangement different from the majority of the household; the outliers are highlighted.

Household Meal Group Members

  • Household Member Not Included — a household member is missing from this meal group.

Configuration

Every Curam deployment differs, so this extension ships with deployment-specific values that you must review before use. All such values live in a single file: scripts/config.js.

Before loading the extension you must:

  1. Set domSelectorPrefix in scripts/config.js. It defaults to the placeholder YOUR_DEPLOYMENT_PREFIX and the extension will not detect tabs until you replace it. Find your prefix by opening DevTools on a case page and inspecting the id attribute of .tabLabel elements — the prefix is the substring that distinguishes Curam tab IDs in your instance.
  2. Verify evidenceTypes match the type IDs your Curam instance uses for household-member, address, living-arrangement, and meal-group evidence. Inspect the network requests on each evidence page to confirm.
  3. Verify pageTitles match the exact page-title strings your Curam instance shows for the three evidence pages.
  4. Verify evidenceEndpoint matches the URL path Curam uses to serve evidence lists (the language segment, e.g. en_US, may differ).
  5. Update content_scripts.matches in manifest.json to point at your Curam URL pattern(s). The shipped values are examples — adopters must replace them.

The default values committed in config.js and manifest.json are the worked example from the original District of Columbia deployment.

Chrome Install Instructions

  1. Clone or download a zip of this repository.

  2. If you downloaded a zip, go to your Downloads Folder, double-click the zip, and select Extract all at the top of the page.

  3. In the new pop-up window, click Extract.

  4. Open a new tab and navigate to chrome://extensions.

  5. Enable Developer Mode by clicking the Developer Mode option on the top right of the page.

  6. Complete the steps in Configuration above, then click Load Unpacked on the left side of the page (below the Chrome logo).

  7. Double-click the extracted folder and select the main extension folder.

    Note: If you are not seeing the extracted folder then you may not have fully extracted the downloaded zip file. Go back to step 2 and make sure all steps are completed.

  8. Pin the extension to your toolbar by clicking the puzzle icon on the top right of the browser, then clicking the Pin icon on Curam Evidence Validator.

Edge Install Instructions

  1. Clone or download a zip of this repository.

  2. If you downloaded a zip, go to your Downloads Folder, double-click the zip, and select Extract all at the top of the page.

  3. In the new pop-up window, click Extract.

  4. Open a new tab and navigate to edge://extensions.

  5. Enable Developer Mode by toggling Developer Mode on the bottom left of the page. If you do not see the option then you may need to open the left side menu to expose it.

  6. Complete the steps in Configuration above, then click Load Unpacked.

  7. Double-click the extracted folder and select the main extension folder.

    Note: If you are not seeing the extracted folder then you may not have fully extracted the downloaded zip file. Go back to step 2 and make sure all steps are completed.

  8. Pin the extension to your toolbar by opening browser options using the puzzle icon on the top right of the browser and clicking the pin icon next to Curam Evidence Validator.

Security and Privacy

  • Local Storage Usage: The extension uses chrome.storage.local to track usage data only during pilot phases for analysis. The collected data is used to determine the extension's effectiveness and identify areas for improvement.
    • Stored Data: The following non-sensitive data is recorded locally in the caseworker's browser:
      • Caseworker Name
      • Timestamp
      • CaseId (a non-PII identifier)
      • Page title where validation ran
  • Access to the Usage Data: Only the caseworker can access the stored data through the extension options.
  • Data Removal: To remove stored data, the caseworker can clear local storage or uninstall the extension.
  • Download Usage option — this data cannot be accessed by other websites or extensions.
  • Site Restrictions: The extension runs only on the Curam URL patterns configured in manifest.json and does not interact with any other sites.
  • No External Communications: The extension does not make any external API calls; all data stays within the local environment.
  • No external packages: The extension contains no external packages and uses only vanilla JavaScript and HTML.

Acknowledgments

This extension was originally built for the District of Columbia. We thank the DC Department of Human Services (DHS), the DC Department of Health Care Finance (DHCF), and the DCAS (District of Columbia Access System) team for their partnership and support during development, testing, and deployment.

Team

This extension was made possible by cross-disciplinary collaboration. Each discipline contributed a critical slice of the project — research grounded the problem, design shaped the interaction, programs anchored the policy context, and solutions engineering built and shipped the tool. None of the slices alone would have produced a usable product; the work depended on each discipline's distinct lens.

Research

  • Deirdre Hirschtritt
  • Ayobami Laniyonu

Service Design

  • Minnar Xie

Programs

  • Maria Peñaloza

Solutions Engineering

  • Rohan Mathur — Solutions Architect
  • Jorge Hernandez — Solutions Architect

License

This project is licensed under the PolyForm Noncommercial License 1.0.0. Noncommercial use — including use by government agencies, nonprofits, and educational institutions — is permitted; see the license text for details.

References

Open an issue on GitHub for questions or bug reports.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages