CASE 01
Central dos Players
Valorant community bot: onboarding with a rendered card, social feed, VIP spaces and a design panel. Staff stepped out of the middle.
1000×560 · rendered card — Client project. Private source; publication authorised by contract.
Context
A Valorant community taking hundreds of new members every week. Each one had to go through staff to get a role, an introduction and a welcome.
Content lived scattered across channels: posts without likes, threads without an owner, announcements lost in chat.
Staff needed tools, not more commands to memorise.
My role
Built the full onboarding flow: form, introduction card rendered at 1000×560, automatic publication to the feed.
Implemented the social feed with likes, threads and ordering.
Created VIP spaces with role, private voice channel and expiry cycle.
Built the design panel and the per-command permission system — 16 routable commands.
Modelled the database in PostgreSQL and the rendering in Pillow, with a Components V2 interface.
Technical decisions
A rendered image card, not an embed
Embeds cap layout and render differently per client. Rendering at 1000×560 gave the server a visual identity and became the card members carry elsewhere.
Permission per command, not a global role
Staff roles are heterogeneous. Tying permission to a single role would force artificial roles to exist; per command, each person gets only what they use.
PostgreSQL with a connection pool from day one
Onboarding spikes concentrate hundreds of writes in minutes. Pool and indexes avoid the queue a local file would create.
Design in the panel, not in code
Colours, copy and images live in their own panel. Changing the server's look stopped requiring a ticket and started fitting inside staff time.
Outcome
Manual onboarding no longer exists: a member joins, fills the form, shows up in the feed.
30 content agents and 16 routable commands in operation.
Client project: private source, published with contractual authorisation and sanitised screenshots.
Stack
- Python
- PostgreSQL
- Pillow
- Components V2
Gallery
Next case
02 · CombatForge →