The community

Listing a demo publicly: the card, the scan and the checks.

On this page

Listing puts a demo in public: at one address anyone can open, on your public page, behind a card that strangers see. This page covers who can list, the card, the checks that run when you ask, what happens when one fails or Roomi takes a listing off, and what the public address does and does not do.

Listing is opt-in, on every plan. Until you list a project, and its card and build pass the checks, nothing about it is public.

Listed and unlisted

Every project starts unlisted, whatever the plan: a draft that only your workspace can open, with Preview as viewer in the project's header. The preview opens the room exactly as a viewer would see it, marked as a preview, and records nothing.

A listed project is public at one address, <project>.getroomi.app, as soon as its card and build pass the checks.

The app says where each project stands, in words, wherever the project appears: in the side bar, on Home and on the Projects page, a project carries Community when it is listed, Blocked when a check kept it off, Taken off when Roomi took it off the community, and In review while it waits for Roomi to look at it again; an unlisted project carries nothing. At the top of each project, one line says the same and what to do next: List on the Community, which opens the card; its public address, to open or copy; what a check found; Roomi's comment, if it took the listing off; or when it went for review. The Projects page filters by these, and lets you order your projects and put them in groups of your own; the order is your workspace's, and changes nothing about who can see a project.

What listing means for you depends on your plan:

  • On Free, there are no private viewer links. Listing is the way to show a project to anyone outside your workspace: an unlisted Free project is a draft, and a listed one is a public demo.
  • On a paid plan, each viewer gets their own private link whether or not the project is listed. Listing adds a public address beside them. The private links, their analytics and their pipeline are unaffected.

The community card

The card is what strangers see: a title, one line and a cover. It is separate from the pitch, because the pitch is written for a prospect who knows your business and the card for someone who does not. Write it in the project's Community tab, under Community listing, or from Claude.

Title and line

  • Title: up to 60 characters.
  • One line: up to 140 characters.

Both are required and trimmed of spaces at either end. Save the words before anything else: a cover, and asking to list, both need a saved card.

Cover

One image: PNG, JPEG or WebP, at most 1 MB. Upload it once the card's words are saved. The cover is stored privately and served from the card's row; until the card is listed, only your workspace, and Roomi when it looks at the card, can see it.

Every new cover is checked on its own, after it is saved. Until that check passes, the community shows a plain placeholder in its place, and the card says so; the listing itself stays as it is.

Remove cover takes it off the card.

Suggest neutral wording

Asking to list

List on the community runs the checks on the card and the live build there and then. If they pass, the project is listed at once. It needs:

  1. A saved card. Otherwise: "write the community card first".
  2. A live build. Otherwise: "deploy a build first: there is nothing to show".

While the checks run, the card says Checking the card and the build…. Then it says what they decided: On the Community, or Blocked by a check with the reason beside it. A workspace can ask 3 times a day, and one person 5 times.

The pre-flight scan

Asking to list runs a quick check for anything that might identify a real business. It warns and never blocks: every rule in it is a guess, and you decide. What it noticed is shown under What the check noticed, and Roomi may look at a listing it names.

Warning What it found
An image named like a logo An image file in the build whose name contains logo, brand, wordmark, favicon or trademark
A real-looking web address A domain in the build's text, a page or the card that is not an example, local or placeholder domain, nor common infrastructure such as a font or script CDN
A name that comes up N times A capitalised name, not an ordinary word, that recurs at least three times and rarely appears in lower case
Not checked Part of the project the check could not read

It reads the live build's files, your pages and the card:

  • A static build: the names of up to the first 500 files, which is where it finds an image named like a logo, and the text of as many of their text files (HTML, Markdown, text, JSON, CSV, JavaScript, CSS, XML, SVG) as fit in 4 MB, each up to 256 KB. It reads the most telling first: pages, then data and prose, then scripts and stylesheets, each shallow before deep and small before large, with no one kind taking more than half the 4 MB while another waits. Last come the files a Next export writes beside each page that repeat its words (__next.*.txt, and index.txt beside index.html).
  • A container build: not read at all. The platform never unpacks a container bundle, so the check always says it did not read it.
  • Names are looked for in the words a person reads: the visible text of HTML and Markdown, and the quoted strings in code and data, which is where mock data lives.

What it did not check is always said, after what it found and in at most three lines, however much that is: the text files it had no room for are one line, with how many there were and the first few worth reading yourself. The other warnings share the rest of 25, so a large build never hides what it found behind what it skipped. Columbus, the Quickstart's demo, is a build like that: of its export's 490 files, the check reads 85, among them 58 of its 79 pages, all 13 scripts and its stylesheet, and says the 390 text files it had no room for in one line.

If it names something real, change it in the demo and deploy again, or change the card. A listed card is checked again when you change it.

Listing from Claude

Listing on the Community walks through Claude, the CLI and the app step by step. With the Roomi connector, Claude does all of this from the conversation, through the same routes and the same checks as the app: set_community_card writes the card and its cover, request_listing asks to list it, community_card shows where it stands, with what a check found or Roomi's comment, appeal_listing asks for a review, list_notices shows your notices, and withdraw_listing unlists it. Each one that changes something rehearses first and acts only on your yes.

Claude runs the check before you save the card, not only when you ask to list: set_community_card's rehearsal checks the project with the words you are about to save, and Claude tells you what it found and suggests neutral wording. Before you agree to list, request_listing's rehearsal runs the checks without writing anything, says whether the project would be listed now, would be blocked (and why) or would wait for review, and says what listing means: the public address, five people at once, and on Free, total views as the only analytics. MCP tools has every argument.

The checks

Asking to list runs checks that decide there and then:

  • The words. The title, the line, the project's name and its address are checked against a list of terms that are never listed, such as slurs.
  • The build. A static build may not ship a program or an installer (an .exe, a .dmg, an .apk and the like, including inside an archive), a password field on a page that sends it to another site, or a known cryptocurrency miner.
  • The address. A project address that borrows the name of a brand people trust, or uses a name that is not available, is not listed.

If they pass, the project is listed at once. Everything else Roomi notices, such as the pre-flight scan's warnings, a new account or reports, never stops a listing: it is something for Roomi to look at, and the listing stays up meanwhile. Every check and every decision is recorded.

Listed

The card shows On the Community and when it was listed, and the project's public address opens.

Blocked by a check

A card that fails a check is not listed. It shows Blocked by a check, and says which part failed and why, such as "The title contains a slur" or "The build ships a program or an installer (downloads/setup.exe)". It never shows the list it was checked against. Change what is named, in the card or in the demo (and deploy again), then Ask to list it again.

Taken off

Roomi may take a listing off the community, with a comment saying why. Its public address stops answering at once. The card shows Taken off with the comment beside it, and you get a notice in the app (Notices, in the side bar). Change the card if the comment asks for it, then ask again: after a listing has been taken off, asking again waits for Roomi to look at it before it is listed (In review). So does every request from a workspace that has had two or more listings taken off.

Asking for a review

If you think a check or Roomi got it wrong, Ask for a review beside the card sends your reason, in 10 to 1,000 characters. Someone at Roomi reads it and decides, and the answer shows beside the card and in a notice. Upheld, the card and build that were reviewed are listed exactly as they were; any later change is checked again. One review can be open at a time, and a workspace can ask for 3 in 30 days.

Changing a listed card

Saving new words on a listed card, uploading a new cover, or deploying a new build runs the checks again. It stays listed if they pass, and is blocked, off the community, if one fails. A new cover shows once its own check has passed (see Cover). A workspace can change a listed card 10 times a day.

A card that is waiting for review takes the new words, and those are what Roomi reads.

The public address

Once listed, the project answers at <project>.getroomi.app to anyone, with no link and no account. It answers only while the card stays listed: an unlisted, blocked or taken-off card, a paused project, or one Roomi took down is the same "Not found" as an address that never existed, checked on every request.

Five at once

Everyone at the public address shares one copy of the demo, and at most five people can be in it at once, on every plan. The sixth sees "This demo is full right now", and is counted as turned away, once per visitor per hour however often they retry. The app says how many this month on the project's Overview and in the plan panel in Settings, and on a paid plan Analytics draws them day by day. A seat is given back as soon as a viewer closes the tab, or 45 seconds after their room stops checking in.

On Free, a workspace's public addresses share 100 hours of viewing a month, measured as the time a seat is held. Past it, new visitors are turned away until the month turns; nobody already in is cut off.

Because the copy is shared, one visitor's clicks and resets are seen by the others. For a demo where that matters, a private link per viewer, on a paid plan, gives each their own copy.

Comments and reactions

Anyone can look. To comment, react (a heart, a clap or a fire) or ask a question, a visitor signs in with GitHub or Google. The room sends them to the app's sign-in page for this room, and back again with a one-time pass: it works once, within two minutes, and only on this project's address. The room learns their public face, and nothing else.

What you see of a commenter is that public face: the name their sign-in gave them, their handle if they have chosen one, and their avatar. Never their email. A name that looks like an email address is not shown; the handle, or "Someone", stands in for it.

At a public address, "Ask a question" is the only next step offered, and it is sent as one of these signed-in comments.

Analytics there

Visitors at a public address are anonymous: the room counts them by an id it gives each browser session, stored hashed, and never says who they are. On Free, a project's analytics are its total views; on a paid plan the public address's visits are counted in the Analytics screen with everything else. See Analytics and the pipeline.

Your public page

Each person can have a public page at app.getroomi.com/people/<handle>: their name and avatar as their sign-in gave them, a bio, and the listings they asked for that are on the community, each with its cover and its address. Anyone can open it, signed in or not. It never shows an email.

Set it in Settings, under Profile:

  • Handle: 3 to 40 characters, lower-case letters, digits and single hyphens, starting and ending with a letter or digit. The same rules as a project's address: names the platform uses itself (such as app, api, docs or community) are refused, and so are names that borrow someone else's trust, such as ones containing paypal, bank or login. Handles are unique.
  • Bio: up to 280 characters.

A listing appears on the page of the person who asked for it to be listed, not on every member's, and only while its project is in one of their workspaces: moved to a workspace they are not in, it leaves their page.

Unlisting

Unlist takes the project off the community at once. The app asks first: "Take “Columbus: a private-markets introduction prototype” off the community now? Its public address stops answering at once. You can ask to list it again later." Listing it again runs the checks again. The card is kept as a draft.

Reporting a project

Anyone signed in can report a project by its address, giving a reason and, optionally, up to 1,000 characters of detail:

Reason For
phishing A page fishing for credentials or payment
impersonation Posing as a business or person it is not
abuse Harassment or abuse
illegal Illegal content
spam Spam
other Anything else; say what in the detail

One person can file at most 20 reports in a day. Roomi reads every report, and dismisses it or acts on it. When three different people report a project for phishing or illegal content within 24 hours, it is hidden from the community until someone at Roomi has looked.

What Roomi can do

Besides looking at what the checks and reports flag, Roomi can:

  • Take a listing off the community, with a comment to you (see Taken off).
  • Take a project down: its room admits nobody, it is hidden from the community, and every open report on it is marked actioned. You get a notice in the app. Nothing is deleted, and it can be restored.
  • Hide a project from the community without stopping it.
  • Clean up a dormant free project: one nobody has visited in 30 days may be deleted by a person at Roomi, as its owner would delete it. It is never done automatically.
  • Ban a name, such as a brand's: no new project address or handle may contain it.

Every one of these is done by a person, with a reason that is recorded.

Where listed projects appear

A listed project is public at its address, on its publisher's public page, and on the community page, newest listing first, within a minute of being listed. The community page credits a card to the name its listing carries: for a project in an account named a colour and an animal, such as "Blue Giraffe", that name, and for every other card "Anonymous". It never shows who built a project, and neither does the listings endpoint it reads.