This is a current project to create a project-recommending ChatBot for Public Invention site users. It will be an interactive tool which will provide more details about projects, share which are currently active, and advise of which projects to join based on a given skillset or interest. Once complete, this project will be placed on the Public Invention website to aid prospective volunteers with navigating the website and project database.
Robert Read and Mairin O'Grady met with Daniel Lindenberger to open the Project Chatbot project. Began with a demonstration and tips on how to create a customized chatbot. O'Grady and Read created a first version using the project datasheet to feed the ChatGPT bot information. From there, it could successfully provide details about projects when prompted.
The project was picked up in March of 2025, with the additional mission to make the chatbot recommend some projects before others based on:
- Priority
- Active Status
The team ran into issues with the recommendation rankings, and so far the additional configuration has not been successful.
In October of 2025, the project was reopened for further updates, and/or to be implemented on the Public Invention website. Awaiting further updates.
A weekly GitHub Action (.github/workflows/refresh-project-workbook.yml) refreshes the workbook's activity columns, then pipeline/build_json.py writes:
data/projects.json: one record per project with status, synopsis, a README summary, priority, joinability, difficulty, Seeking Volunteers/Mentors (yes/maybe/no/unknown), activity (Active/Stale/Dormant/Unknown) and canonical skills.data/skills.json: the canonical skills used by at least one project.
Skills come from the workbook's Skills column, mapped through data/skill_aliases.json, plus keywords found in each project's README or idea file (pipeline/skill_rules.py). To run it locally: GITHUB_TOKEN=$(gh auth token) python3 pipeline/build_json.py, and python3 -m unittest discover -s tests for the tests.
chatbot/widget.js is a guided chat for the website: it asks a visitor's skills, what they want to learn and which area they care about, then recommends projects from data/projects.json. Public Invention's rules decide the order, in code (pipeline/ranking.py, mirrored in chatbot/recommend.js):
- never recommend Moonrat, Oxygen Concentrator, PolyVent, ADaM or Librecorder, Preliminary projects, or projects not seeking volunteers;
- Highly Active first, then Progress but Inactive, then Ready-to-start;
- within a status, more matching skills first, then the sheet's Order priority.
tests/ranking_cases.json is shared by the Python and JavaScript tests, so both rank the same way. Embedding it on pubinv.org: docs/wordpress-embed.md. The ChatGPT version reads the same JSON through an Action: ChatBot_Instructions.md. How the volunteer form works today: docs/volunteer-form.md.
The current Public Invention Project Chatbot is live and can provide details about projects currently on the project spreadsheet included in this repository.
Robert L. Read - Founder and Head Coach of Public Invention
Mairin O'Grady - Technical Writer for Public Invention
Daniel Lindenberger - Director of Thaumazo and Chatbot Expert