Connor Corr.
← All work
Community software · AI action controls

CPD community platform

A roleplay-community portal exploring explicit identity, confirmation-staged actions, and control over automated communication.

My roleProject lead · AI-assisted development and debugging
Period2025-2026
Tools & methodsNode.js · Express · EJS · SQLite · Discord.js · Gemini

Context

CPD is a FiveM/roleplay-community software project. It is not a municipal police department system. The portal supports community administration, including rosters, training, attendance, tickets, messaging, and records, with integrations to Discord and Google services.

The project grew across a website, bot components, and client experiments. These are related parts of one development lineage, rather than separate independent products presented to inflate the portfolio.

The question behind the AI features

An assistant connected to community tools needs more than a useful answer generator. It needs to know who is making a request, whether a message is addressed to it, what actions are allowed, and when a human must confirm a change.

These questions become concrete when a conversational feature can affect records or send communications. A model’s interpretation of identity cannot safely replace the identity attached to the actual triggering event.

Implemented controls in the retained source

  • Addressed-to-bot trigger rules reduce ambiguity about which messages should invoke the assistant.
  • Requester identity is derived from the triggering Discord message.
  • Write actions can be staged for confirmation before execution.
  • A kill-switch layer defaults unknown or unenabled features to disabled.
  • Suppression controls address unwanted automated communications.

Investigation and integration

The saved development history contains user-directed debugging and AI-assisted implementation. One investigation concerned differences before and after a change to message embeddings and reasoning behavior. I asked for comparison of the behavior and considered raw-text handling rather than accepting the new behavior without inspection.

The broader lesson is that an AI feature has a chain of responsibility: trigger, identity, context, proposed action, confirmation, and execution. The retained controls address parts of that chain. Their presence does not prove that every path is covered or every deployment has the intended configuration.

Technical breadth

The inspected portal combines Express/EJS, Discord.js, SQLite, scheduled jobs, Google Sheets/Drive integrations, and Gemini helpers. Companion desktop and voice experiments extend the interface. A voice pipeline experiment includes audio capture, transcription, a model response, and speech output.

Those experiments demonstrate implementation breadth. They do not establish measured voice latency, transcription accuracy, deployment scale, or a completed evaluation of the conversational system.

Testing limits

The main package does not define a complete automated test suite. Retained verification artifacts include runtime errors, so they cannot support a claim of a successful comprehensive regression campaign or a measured performance improvement.

A useful next step would be a small adversarial test matrix for requester identity, unsolicited triggers, staged writes, duplicate events, and disabled features. That is proposed validation work, not a result already achieved.