Skip to content
Docs & guide

Everything you need to run your board

The complete command reference and how-to guide for collecting feedback, triaging it, and shipping a roadmap — natively in Telegram and Discord, with a web dashboard for admins.

feedback · your-communityDiscord
M
can we get dark mode? 🌙
D
+1, and CSV export would help
S
wait didn’t someone already ask this?
A
a weekly digest email would be 🔥

Your community’s best ideas are scattered across chat — and lost.

Step by step

Getting started

Three steps and your community has a working feedback board.

  1. Step 1

    Add the bot

    Invite it to your Discord server or Telegram group. A board is created automatically — no setup wizard.

  2. Step 2

    Members post ideas

    People share requests with /suggest and upvote what they want. In a Telegram DM, plain text becomes a new idea.

  3. Step 3

    Admins manage it

    Triage from chat with admin commands, or run /dashboard for a one-time link into the web dashboard.

For everyone

Member commands

Available to every member of the community — no account required.

Discord uses named options, e.g. /suggest text:… In a Telegram DM, plain text becomes a new idea
CommandWhat it does
/suggestPost a new feature request or idea to the board.
/bugReport a bug as a tracked board item.
/feedbackShare general feedback that admins can triage.
/topSee the most-upvoted suggestions.
/trendingSee ideas gaining votes fastest right now.
/roadmapView what’s planned, in progress, and shipped.
/searchFind existing suggestions before posting a duplicate.
/statsShow board activity and totals.
/mysuggestionsList the suggestions you’ve posted.
/followingList the items you follow for status updates.
/changelogRead what the team has recently shipped.
/comment <id> <text>Add a comment to a suggestion.
/report <id> [reason]Flag a suggestion for an admin to review.
/helpShow the full command list in chat.
For admins

Admin commands

Run these from a community you administer. <id> is the suggestion id shown on each card.

Telegram

Run these in the group — you must be a group admin.

CommandWhat it does
Status buttons on a cardMove a suggestion through Planned / In progress / Done (admin-only).
/reviewShow the queue of suggestions awaiting triage.
/announce <title> | <body>Publish a changelog entry (note the “|” separator).
/merge <sourceId> <targetId>Merge a duplicate into another suggestion.
/delete <suggestionId>Delete a suggestion.
/assign <suggestionId> <telegramUserId|clear>Assign an item to a member (or clear it).
/ban · /unban · /mute · /unmute <telegramUserId>Member moderation.
/warn <telegramUserId> [reason]Warn a member — 3 warns auto-bans.
/unwarn <telegramUserId>Clear a member’s warnings.
/warns <telegramUserId>List a member’s warnings.
/blockword <word> · /unblockword <word> · /blocklistManage the banned-words filter.
/reportsList suggestions members have reported.
/dashboardDM yourself a one-time web-dashboard login link.

Discord

Admin = server owner, or anyone with Administrator or Manage Server. These commands are hidden from ordinary members — they never appear in a normal member’s slash-command picker. If you granted someone admin in the dashboard but they aren’t a Discord admin, they can still do everything from the web dashboard, or the server owner can re-enable specific commands for their role under Server Settings → Integrations.

CommandWhat it does
Status buttons on a cardChange a suggestion’s status (admin-only).
/reviewSuggestions awaiting review.
/announce title:<t> body:<b>Publish a changelog entry.
/merge source:<id> target:<id>Merge duplicates.
/remove id:<id>Delete a suggestion.
/assign id:<id> member:@userAssign to a member (omit member to clear).
/moderate action:<BAN|UNBAN|MUTE|UNMUTE> member:@userMember moderation.
/dashboardGet an ephemeral, one-time web-dashboard login link.
How access works

The admin model

You don’t assign board admins inside the bot — it mirrors the chat’s own admin list.

Community admins — automatic

  • Telegram: the group creator and any administrator gain bot-admin powers for that group’s board.
  • Discord: the server owner, or anyone with Administrator or Manage Server.
  • Telegram DM: each person is the admin of their own personal board.

To add an admin, simply make them an admin of your group or give them Manage Server on Discord — the status buttons and admin commands appear for them automatically. Powers are strictly per-community.

The platform owner

The operator of the whole deployment. They see every community and cross-community analytics in the dashboard’s Platform section, pass every authorization check, and can create back-office sub-accounts scoped to specific communities.

Admin sync

Bot-admin follows your Telegram/Discord admin status automatically. Removing someone’s platform admin auto-revokes their bot-admin role and dashboard access on their next interaction. Manually-assigned roles (owner, moderator) are never touched by this sync.

Manage from the web

Web dashboard

Three ways to sign in, then triage everything from one place.

1

Bot magic-link

Run /dashboard in a server or group you admin. The bot sends a private, single-use login link (valid 10 min) — no password.

2

Continue with Discord

Sign in with Discord OAuth from /login. You land scoped to the Discord servers you administer.

3

Email + password

The platform owner’s account — the only sign-in that sees the cross-community Platform section.

What you can do there

  • Triage the review queue, suggestions, and audit log.
  • Move items across the roadmap — reflected in the bots’ /roadmap.
  • Edit community settings and publish changelog entries.
  • Billing: see your plan, upgrade, or open the Stripe portal.
  • Integrations: Slack, Discord, GitHub, Linear, Jira.
  • Exports + scoped API keys, and a shareable public board.
Quick reference

Moderation playbook

Reach for the right tool fast. Every admin action is written to the audit log.

SituationDo this
Spam or abuse from a member/warn (3 = auto-ban), or /ban / /mute.
Already protected by defaultEvery community ships with a platform blocklist (slurs, harassment, explicit threats) plus threat detection — active from day one, nothing to configure.
Repeated bad words/blockword <term> — admins are exempt from the filter.
A default term is wrong for your community/unblockword <term> — excludes just that one platform default for you; everything else stays on.
What /ban actually doesBlocks them, HIDES their existing posts from the public board (hidden, never deleted), keeps a record of the content, and survives them deleting their account. /unban reverses all of it.
Duplicate suggestions/merge <dup> <canonical> — votes consolidate.
Off-topic or bad item/delete on Telegram, /remove on Discord.
A member flagged somethingIt appears in /reports — act with the above.
You shipped a feature/announce so it lands in /changelog and notifies followers.
Run it yourself

Self-hosting

The whole stack is yours to host — your data stays on your infrastructure.

Docker ComposeBring your own PostgresBring your own RedisFree local AI

The bot, web dashboard, and API ship as a Docker Compose stack. Deduplication and summaries run on a self-hosted local model by default — zero per-call cost — with OpenAI as an optional upgrade. Quickstart:

  1. Clone the repository.
  2. Copy stack.env.example to stack.env, run ./scripts/generate-secrets.sh, and fill in your domain + bot credentials.
  3. Bring it up: docker compose -f docker-compose.prod.yml --env-file stack.env up -d --build. Migrations run automatically and Caddy handles HTTPS.
  4. Create your first admin: … run --rm worker node apps/worker/dist/create-owner.js [email protected], then sign in.

Want to self-host? Contact us for access and the full setup guide.

On your own site

Embed the board anywhere

Drop your public board into your product, docs, or marketing site with one script tag.

Your public board is embeddable — add a single script tag to any page and it renders inline (submit, vote, roadmap), styled to match. Enable it under Settings → Embeddable widget (Scale plan), where you also set the domains allowed to embed it and, optionally, SSO so board actions carry your real end-user.

<script src="https://quillboard.xyz/widget.js" data-board="your-board-slug" async></script>

Optional attributes: data-height (px) and data-sso (a signed JWT identifying the current user).

SSO (attribute votes/comments to your real users)

Your backend signs a short-lived HS256 JWT with the board's shared secret (Settings → Embeddable widget) and exchanges it for a session cookie:

POST https://quillboard.xyz/v1/boards/your-board-slug/sso
Content-Type: application/json

{ "token": "<HS256 JWT signed with your board secret>" }

JWT claims: subject (required — your stable user id), exp (required, ≤ 24h out), and optional email, name, segment (weighted voting), company + companyId (B2B grouping). The response sets a signed cookie; the widget never sees an admin session. Pass the JWT as data-sso and the widget performs the exchange for you.

For developers

Read-only API

Pull a community's suggestions, roadmap, stats and changelog into your own tools (Pro+).

Create a scoped, read-only API key under Settings → API keys. Each key is bound to one community, so no community id is needed in the path. Authenticate with X-Api-Key: <key> (or Authorization: Bearer <key>). Rate limited to 60 requests/minute.

Endpoints

  • GET /v1/public/suggestions — list suggestions. Query: query, status, type, sort, cursor, category, tag. Returns { items, nextCursor }.
  • GET /v1/public/roadmap { planned, inProgress, completed }.
  • GET /v1/public/stats — community totals.
  • GET /v1/public/changelog — recent published entries.

Each suggestion returns public fields only (id, type, status, title, body, category, tags, voteScore, commentCount, followerCount, targetDate, createdAt) — never author identity or internal ML fields.

Example

curl -H "X-Api-Key: qb_your_key" \
  "https://quillboard.xyz/v1/public/suggestions?status=PLANNED&sort=top"

Ready to open your first board?

Add the bot in two clicks — your board is live in minutes.

Docs & command guide for Telegram & Discord · Quillboard