PLUTO: Public Value Assessment Tool
A tool designed to make the complex ethics of data use tangible. Through a structured questionnaire, it helps organizations and individuals assess the public value of data practices, providing a clear risk-benefit analysis and actionable recommendations to foster trust and accountability in a data-driven world.
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 a clear, interactive visualization on a risk-benefit matrix, providing an immediate understanding of a project’s standing. The entire 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