A personal project by Daniel Moya

Documentation answers. Human-reviewed moderation.

A self-hosted Discord bot that connects public documentation, moderation review and release announcements.

Your docs are your bot. People make the final call.
# general · helios-community simulated
N
@nora14:02
anyone tried the new helios persistent volume mode?
V
@vexbridge14:03
(redacted) - unsolicited DM offer to a maintainer with sketchy link
Pending review - needs an angle
Channel: #general
Author: @vexbridge
Reason: borderline harassment pattern, sent to mod-log
✓ Approve & Restore ✕ Reject
V
@vexbridge14:04
(redacted) - unsolicited DM offer to a maintainer with sketchy link
restored via per-channel webhook · benefit of the doubt logged

Documentation

Your docs are the KB.

Index configured public-document mounts with lexical retrieval. Hosted-document ingestion is an operator-controlled extension; document changes rebuild the index.

Human review

Soft-delete with one-click restore.

Borderline messages quarantine to a review card with Approve & Restore. Approved messages can be reposted through a per-channel webhook with a visible review reference. Recovery is a deliberate moderator action.

Three jobs, one agent.

Classification, grounded answers, and human review.
M

Moderate

Per-message classifier with a six-rung action ladder (allow / warn / flag / delete / timeout / ban). Borderline messages soft-delete to a quarantine card; approved messages are reposted with a visible review reference. Timeout and ban verdicts are human recommendations.

action ladder × 6 per-channel webhook persistent buttons
AI Core

Where the intelligence lives

Configurable Anthropic models for classification and documentation answers Separate models can be selected for classification and answers.
Lexical KB
In-memory BM25-style lexical retrieval over configured public docs Filesystem watcher reflects doc edits in seconds. No redeploy.
Discord Gateway
Long-lived WebSocket; the agent handles configured guild events An outbound connection to configured Discord communities.
Refuses cleanly when the docs don't cover a question. Generated answers are checked for known source IDs; citations do not guarantee correctness.
A

Answer

Forum-aware support Q&A grounded on your docs. Retrieve top-k chunks → Sonnet with citations → reply in-thread. 👍/👎 reactions log feedback.

cited URLs forum + thread aware refuses cleanly
N

Announce

A webhook CLI (bizangent-announce) drops release notes into the right channel from any of your repos. No bot-token sprawl. Wire it as a Stop hook on tagged releases for operator-authorized release publishing.

webhook only opt-in per repo CI-friendly

Reference community: HeliosDB

Personal reference project

HeliosDB documentation and community workflows informed the project. This showcase describes the design; the examples below do not contact a live bot or model.

Docs firstanswers with source references
Human reviewModerator-owned decisions

Illustrative documentation examples

No live model request; examples only
Choose an example to explore the documentation-answer format. These are static illustrations, not live model replies.
Loading examples…

A personal project, open to inspection.

Explore the code behind the examples.

Bizangent stays a personal, self-hosted project. There are no hosted plans, paid pilots or public customer registrations.

Browse the repository

Data handling

Message text and retrieved public documents are sent to Anthropic for classification and answers. Provider processing and retention depend on the operator’s provider agreement; we do not promise zero retention. Restricted moderation records include text and supported attachments for recovery, ordinarily for 7 days; minimal audit metadata normally expires after 30 days. Remote review deletion is retried during outages; minimal references for unresolved delivery or cleanup remain until reconciled. Feedback stores answer/source identifiers and pseudonymous vote identity, not question bodies. Review cards and local records expire. This page only displays static examples; questions about a bot instance should go to its operator.