Galactia

AI

A Discord assistant that helps a World of Warcraft guild turn continuous conversations into readable summaries, traceable decisions and easier-to-follow actions.

Galactia is a Discord bot initially built for the Les Galactiques World of Warcraft guild. The repository confirms three main modules: AI summaries of Discord conversations, Twitch alerts and YouTube alerts, with guild-level configuration and PostgreSQL storage.

This project belongs in a product portfolio because it is not just "putting AI in Discord". The real product question is more precise: help a community recover decisions, actions and important signals from a continuous flow, while respecting permissions, social context and the limits of a conversational tool.

Product Problem

A guild or Discord community does not lack conversation. It often lacks readability.

Raid decisions, coordination questions, useful links, tensions, last-minute changes and follow-up actions can be buried across several channels. For community leads, the workload is not only answering people: it is rereading, sorting, finding what was decided and passing the right context to the right people.

The product challenge was therefore not to build a talkative bot. It was to build a discreet assistant able to turn a slice of discussion into usable information, within the limits of the channel and the permissions of the person asking.

Approach

I treated Galactia as a bounded AI workflow, not as a general-purpose chatbot.

  • Summaries can be triggered by a direct mention of Galactia or by the /summary slash command.
  • The request is interpreted as structured JSON, then validated with Pydantic before Discord history is read.
  • Common French time ranges are handled by a deterministic parser, with explicit refusals for ambiguous, invalid or too-old periods.
  • Galactia checks the target channel, guild, requester permissions and bot permissions before summarizing.
  • Volume limits, daily quotas, user and channel cooldowns, wider scanning and a two-minute cache keep costs, abuse and latency under control.
  • Responses use discord.AllowedMentions.none() to avoid accidental pings.
  • AI logs record technical metadata, such as status, tokens, latency and scanned volumes, without storing full message content, prompts or generated summaries.

This framing keeps AI useful without making it opaque. The model does not decide its own scope: the code first determines what it may read, how many messages it may process and when it must refuse.

What I Built

  • A shared summary flow for direct mentions and /summary, with the result posted back in Discord.
  • Optional channel targeting to summarize another same-guild channel when permissions and guild configuration allow it.
  • Structured AI intent detection with summary, authors, time_limit, count_limit, selection_mode, preset and focus.
  • Summary presets such as catch-up, decisions, actions, raid, tensions and lighter tone to frame the expected output.
  • A French deterministic time parser covering phrases such as hier, ce matin, les 3 derniers jours, mardi soir, T1 2025, avant 18h and Discord abbreviations such as ajd, dep 30 mn and mar der.
  • Message selection that excludes empty messages, bots, previous calls to Galactia and summary invocations.
  • Author filters through Discord mentions or careful name resolution, with refusal when a name is unknown or ambiguous.
  • An asynchronous OpenAI pipeline with timeout, retry on transient errors, token tracking, latency and attempt metadata.
  • A simple summary strategy for common volumes and bounded map-reduce for larger volumes.
  • Guild-level configuration: summarizable channels, authorized roles, Galactia Manager roles, language, timezone, message limits and quotas.
  • Admin setup through /galactia setup, /galactia status and configuration commands to activate modules.
  • Twitch and YouTube alerts with slash commands, persisted state and guild-level configuration.
  • Alembic migrations, SQLAlchemy repositories, local verification scripts and pytest tests, including 42 offline AI intent golden cases.

The verified stack includes Python, discord.py, OpenAI, Pydantic, SQLAlchemy, asyncpg, Alembic, PostgreSQL, aiohttp, pytest and pytest-asyncio.

Product Decisions

The first decision was to keep AI inside an explicit scope. Galactia does not read "all of Discord" and does not handle every kind of request. It summarizes a specific channel, over a bounded time range or message count, with permissions checked first.

The second was to refuse fragile requests. An explicit but unparsed period does not silently fall back to the last 24 hours. An ambiguous author does not trigger a general channel summary. A link to another server is blocked before any AI call.

The third was to treat trust as part of the Discord output. A useful summary can become harmful if it notifies everyone by accident. Neutralizing mentions is not a technical detail: it is a UX decision that protects the community.

The fourth was to make configuration visible. New servers start with modules disabled and go through admin setup. Trust depends as much on channel, role, quota and permission choices as on the AI model.

The fifth was not to confuse observability with content retention. Technical metadata is necessary to understand failures, costs and usage; full conversation text should not become stored data by default.

What This Project Shows

Galactia shows how I approach applied AI product work: start from a concrete use case, identify the social and operational risks, then build a system that constrains AI instead of giving it an overly broad role.

It also shows a maker capability. There is product framing, but also code, migrations, versioned prompts, tests, operating documentation, admin commands and reliability trade-offs. The point is not to claim a mature SaaS product; it is to show how a recurring community need can become a usable tool.

Limits And Next Steps

Galactia should still be presented as a private product prototype and community tool, not as a proven SaaS platform. I am not showing adoption metrics, server counts or time savings because I do not have verified publishable data for them.

The next public improvements should be a reconstructed product screenshot with dummy data, a demo path understandable by readers unfamiliar with Discord, and continued hardening around permissions, monitoring, AI costs and tests.