Dez completed · streak ×5 → +50 XP, 1,200 gold from the pool. 3 IRON_INGOT burned on take.
Guilds, not a feed
No infinite scroll, no strangers, no algorithm deciding who matters. A guild is a room with a door, a history and a name on it.
Obelus Technology Ltd
We build Guilds, a programmable social network for communities, now in private beta — alongside the open-source tools we ship it with.
Product / Guilds
Every community already has rules — in Guilds they execute. A guild declares its stats, signals, ranks, recipes, timers and hooks in one model. Signals fold the guild's own event log; ranks are the highest match over those signals; quests and crafting check gates written the same way. Nothing is hand-assigned, and every value is a pure function of the log.
// a guild is a model — stats in, ranks out{ "name": "Ironforge", "stats": { "ATK": 0, "DEF": 0, "SMITHING": 0, "XP": 0 }, "signals": { "member": { "power": "sqrt(ATK + 2*DEF + STA/2)", "weeklyXp": "deltaOver(XP, 7d)", "approvals": "count(reviewed, approved == 1 & actor.rank >= ranks.Gold)", "kicks": "count(memberLeft, kicked == 1)" }, "guild": { "powerIdx": "index(members.power)" } }, "ranks": [ { "name": "Bronze", "match": "1" }, { "name": "Silver", "match": "ATK >= 100 & kicks == 0" }, { "name": "Gold", "match": "approvals >= 3 & percentRank(powerIdx, power) >= 8000" } ]}
// a quest validates itself before it pays out{ "title": "Forge the Blade", "signals": { "member": { "streak": "consecutive(questCompleted, 24h)", "lastAt": "last(questCompleted.at)", "approvals": "count(reviewed, topic == 'quest' & approved == 1)" } }, "costItems": [{ "name": "IRON_INGOT", "qty": 3 }], "canTake": "now - lastAt > 3600 & completions < 100", "canComplete": "taken & approvals >= 2", "rewards": { "XP": "min(streak, 5) * 10", "gold": "pool / 2" }, "refundPolicy": "funders"}
// recipes, timers, and the effects they fire{ "recipes": { "SWORD_LV7": { "canMint": "SMITHING >= 500 & rank >= ranks.Gold & mintedToday < 3", "cost": "10000", "yield": "1 + SMITHING / 500" } }, "timers": { "weekly": "0 0 * * 1", "season": "0 0 1 */3 *" }, "hooks": { "onRankChanged": { "Max": { "stats": "reset", "emit": "prestige" } }, "onTimer": { "weekly": { "forEachMember": { "gold": "1000 * weeklyXp / max(guildWeeklyXp, 1)" } } } }}
Native iOS and Android clients are built and talk to the same API as the web. Join the waitlist and we'll send the store link the day they land.
What makes it different
No infinite scroll, no strangers, no algorithm deciding who matters. A guild is a room with a door, a history and a name on it.
Stats, signals, ranks, recipes, timers and hooks in one declaration. Every guild ships its own logic — no two have to work alike.
Rank is derived from behaviour and cannot be assigned. A position is assigned and derives nothing. Two different powers, never confused.
Gold and items move on a double-entry ledger that sums to zero. Nothing is created except by a mint, and every night the invariants are checked.
Fund a quest, take it, split the payout. Recipes gate on your own stats and rate limits. Expiry refunds the funders, to the copper.
Every rank, balance and signal is a pure function of an append-only log. Replay is deterministic, so the guild can always show its work.
Open source
The tools under our products are public and MIT-licensed. Use them, fork them, file issues — if they're useful to you, they're yours.
Customizable components for the non-trivial UI pieces that are tedious to reimplement.
trioxide.obelus.fi → Capsules ShellA lightweight process supervisor, application files, and configuration bundled into a single self-extracting binary.
github.com/ObelusTechnology → bun-cstruct TypeScriptA convenience layer for working with C structs in bun:ffi, driven by TypeScript decorators.
github.com/ObelusTechnology →The company
Obelus Technology Ltd makes tools that do exactly one thing well — and keep doing it. We would rather be genuinely useful to a thousand people than tolerable to a million.
“The mark exists to say: this part is questionable. Most software would be better if it kept one.”
Roadmap
We publish the list so you can hold us to it. One app at a time.
Early access
We're onboarding guilds in small batches so we can sit with each one. Tell us where to reach you and we'll send an invite when your batch opens.
No newsletter. One email when it's your turn. · Privacy
Got it — you're on the list. We'll be in touch before the next batch opens.