PLUTO: Public Value Assessment Tool
A questionnaire-based tool for assessing the public value of data practices. It translates abstract ethics questions into a structured workflow and outputs a risk-benefit analysis with concrete recommendations.
The widespread use of personal data creates a fundamental challenge: how do we assess its true public value? For organizations, it is difficult to know if their practices are genuinely beneficial to society, and for individuals, the risks and rewards of sharing their information are often opaque. This ambiguity makes it hard to build trust and accountability in a data-driven world.
This project, the Public vaLUe assessment TOol (PLUTO), was created to bring clarity to this complex issue. It reframes the abstract principles of data ethics into a simple, structured assessment that anyone can use. By guiding users through a concise questionnaire, the tool helps both data users and data subjects reason about the implications of data use in a systematic and accessible way.
The output is not a lengthy report, but an interactive visualization on a risk-benefit matrix. The experience is delivered through a web platform built with
Stack
While the problem is more important than the tools, the tech stack tells a story about the project's architecture and trade-offs. Here's what this project is built on:
Platforms & Runtimes

Primary programming language for the web frontend and CMS backend, providing type safety across the entire application stack

JavaScript runtime environment executing the Next.js server-side rendering and Strapi CMS backend services

React meta framework for the main web application with server-side rendering, API routes, and static generation of content pages

Core language for the analytics package, powering data processing and visualization components using Marimo notebooks

Used for creating the analytics dashboard that visualizes survey completion times and submission statistics combined by pulling data from Strapi and Umami analytics

In a prior version of the system, Streamlit was used instead of Marimo to interactively visualize potential survey submission result distributions based on simulated data
Frontend & Visualization

UI library powering the interactive survey interface, result visualization components, and admin dashboard for the PLUTO assessment tool

CSS framework used for consistent styling and responsive design

Headless UI components library providing accessible accordion, hover cards, and navigation menu components for the assessment interface

Renders the dynamic questionnaire interface with 25 questions across four assessment dimensions, handling form validation and user interactions

Creates the interactive quadrant plot visualization that displays risk-benefit analysis results in a four-quadrant matrix for survey respondents

Statistical visualization library generating charts and graphs for the analytics dashboard showing survey metrics
Data Engineering
Backend & APIs

Headless CMS that manages survey questions, content pages, and submission data through RESTful APIs for the assessment tool with webhooks for dynamic revalidation of static content

Embedded database storing survey configurations, user submissions, and content management data for the Strapi CMS backend
External Services

Privacy-focused, self-hosted web analytics service tracking user interactions and survey completion rates for the assessment tool

User behavior analytics platform providing heatmaps and session recordings to understand how users interact with the assessment interface

Form builder service collecting user feedback and suggestions about the assessment tool through embedded feedback forms
Cloud & DevOps

Containerizes all three application components (web, CMS, analytics) for consistent deployment and development environment setup

Used to automatically build docker images for each component and push them to GitHub Container Registry on every commit to the main branch

Used to self-host all system components on a VPS, managing Docker containers and monitoring resource usage
Development Tooling

Package manager managing dependencies across the monorepo workspace with efficient disk usage and fast installation for Node.js packages

Code formatter and linter enforcing consistent JavaScript/TypeScript code style across the entire monorepo workspace

In a previous version of the monorepo, Nx was used to manage project builds and dependencies but was later replaced by pnpm workspaces for simplicity

Fast Python package installer and resolver managing dependencies for the analytics package with improved performance over pip

Fast Python linter and formatter maintaining code quality and style consistency in the analytics package

