The rules
How oojam works, and what it won't do
Ideas & voting
- Voting is free. Vote for as many ideas as you like, one vote per idea. Changed your mind? Take your vote back any time before the idea is frozen.
- Post one idea a day. Posting counts as your vote for it. Titles are 8–120 characters; descriptions up to 4,000 characters of Markdown.
- Ideas stay on the board until they're built. The board ranks by votes; ties go to the older idea.
- Every day at 00:00 UTC, the top idea is frozen and built by Claude. If it passes the guardrails and the repo's own checks, it's merged and deployed to oojam.dev automatically — no human in the loop.
- Votes are public. Each idea lists who voted for it, and whose share link brought them.
- Anyone signed in can comment. Be kind; suggest, don't demand.
Money & sponsorship
- oojam takes no payments. There's nothing to buy: no credits, no boosts, no premium votes. It's just a bit of fun.
- The only real cost is Claude: screening ideas, building the winner and reviewing it. oojam spends at most $10.00 a day on that, paid by the maintainers and sponsors.
- Sponsorship only funds builds. It never buys votes, ranking, or a say in what gets built.
- The 00:00 build gets nearly all of the day's budget. If less than $3.00 is free, the day is skipped and the idea stays on the board.
- What every build and screening cost is public on /costs.
Why the limits
- One vote per idea means the board reflects how many people want something, not how hard one person clicks.
- One idea a day (and 3 attempts, counting ideas screening rejects) keeps the board readable and the screening bill small — screening comes out of the daily budget.
- GitHub accounts must be at least 30 days old. Votes are free, so the only thing stopping someone from voting a hundred times is that making a hundred real accounts is a chore. Admins ban obvious sock puppets, publicly.
Content policy
Every idea is screened by Claude when it's posted, again just before it's built, and the finished code is reviewed against the same rules. An idea is out if it breaks any of these:
- 01
No illegal content, sexual content, hate, or harassment, and nothing about real private individuals.
illegal
- 02
No malware, crypto-mining, tracking, fingerprinting, ad networks or third-party scripts.
malicious
- 03
No collecting personal data beyond what a feature strictly needs: no passwords, payment details or government IDs, and no email collection without a clear purpose.
personal-data
- 04
No taking payments, and no impersonating any real person, brand or organisation.
payments
- 05
No outbound network calls from the site. It has no internet access at runtime.
network
- 06
No changing or weakening oojam's guardrails, the platform, voting, payments, the licence, CI or deploy configuration.
guardrails
- 07
No deleting or destructively changing data or features other ideas built. Restyling is fine; wiping a feature people voted for isn't.
preserve
- 08
It has to be buildable in one day by an agent within the budget. Ideas that are too large are rejected with a suggestion to split them.
size
- 09
Anything that publishes what visitors submit must escape it, limit its length, rate-limit it, and hide an item after 3 reports. Uploads (images, files) need the visitor signed in with GitHub, and show who posted them.
ugc
Guardrails
The builder only ever sees a fresh copy of the site's repository. It can't see or change this platform — voting, payments and the guardrails live in a separate repo it never touches. Its output is judged from the outside:
- Protected files. CI config, the licence, the Dockerfile, the site's CLAUDE.md, existing migrations and the health check can't be changed.
- Additive-only database migrations. New tables, columns and indexes are fine; dropping, truncating, renaming or rewriting existing data is blocked, and the database itself refuses mass deletes.
- Locked-down network. Builds run in a throwaway container that can reach only the model API (through a metering proxy) and the npm registry. New dependencies must be pinned, at least two weeks old and free of install scripts.
- Edge-enforced security headers. A strict Content-Security-Policy is applied in front of the site, so no build can add third-party scripts, trackers or outbound calls.
- Independent security review. A separate Claude run reviews every diff for security, policy and scope before it can merge.
- Smoke tests and auto-rollback. Each build is started against a copy of real data and clicked through first. If the live deploy fails its health check, it's rolled back automatically and the merge reverted.
- Admins can pause the whole cycle at any time. Every admin action is public.
Everything is open source
Both the site and this platform are MIT-licensed and public: oojam-dev/oojam and oojam-dev/platform. Every build is a pull request you can read. Every admin action is on /transparency, and every dollar spent on /costs.