Group Formation
A system that forms small groups instead of listing them. Rounds, constraints, explainable placement, pairs and households, backfill, and the delivery layer that tells everybody.
The product
A leader configures a program, opens a round, keeps the roster, forms, reviews, approves, publishes, and fills the seats that open mid-season, all without touching a terminal. Every panel below is the real behavior with invented people. Click things.
A leader’s real question is never whether the software works. It is what their people will experience, and whether they will be embarrassed by it. So both answers are here, before any feature: the same season, from the side that runs it and the side that lives in it.
You’re in the pool.
Everything the engine can use is a column here, and every column is a constraint an organization decides the weight of. Geography and availability are hard almost everywhere. Life stage is the primary cohesion axis. A household is one assignable unit, not two rows.
| Member | Area · radius | Free | Life stage | Unit | Tenure |
|---|---|---|---|---|---|
| Tomi A. | Rogers Park · 20 min | Tue, Thu | Young family | Household of 2 | Returning |
| Maya R. | Edgewater · 15 min | Tue | Young family | Individual | New |
| Kemi E. | Hyde Park · 25 min | Tue, Wed | Empty nest | Household of 2 | Returning |
| Ruth B. | Andersonville · 30 min | Thu | Newly married | Household of 2 | New |
| Nia P. | Woodlawn · 20 min | Tue | Single adult | Individual | New |
Groups arrive with the sentences that justify them, because a placement nobody can explain is a placement nobody will defend. Select a member and every other group answers at once, will you take them, and why not, before anything is committed. Overriding is allowed; it is recorded.
A round moves open → closed → proposed → published, and each step is separately auditable. Showing all four at once invites doing them out of order. Showing the next one, with what it will and will not do and exactly who gets told, is the same information without the trap.
128 people have joined. Members were told it closes on 3 October.
Closing stops new entries so the engine can solve against the whole pool. It emails nobody.
A member sees four states in a season and never a list: not yet, in the pool, forming, and yours. The waiting screen is the one most products skip, and it is the one that decides whether somebody is still there in October. So it carries real dates, the size of the pool, and the promise that a person will check the group before anyone hears a word.
There are also two ways to step out, and the difference matters: leaving a group puts you back in the round; leaving the round takes you out of the season. Conflating them is how a system loses somebody who only meant to change rooms.
Autumn 2025 · groups form after 3 October
Nothing in the notification layer moves on its own. If the schedule stops, there is no error and no alert, just members who were never told their group had formed. So the run takes a lease and leaves a record, pass or fail, and there is a health check that exits non-zero when the schedule has died.
Ember, Archivo and the 14px people-radius are Family Dinner Foundation’s answers, not mbio’s. An organization running Groups inside its own site sets five variables and gets its own identity throughout: accent, tint, accent type, typeface, and the one radius. No component is re-styled and no stylesheet is forked, because a fork is a thing that silently stops receiving what we ship next.
A church with a serif wordmark and square corners throughout.
You are not migrating a database. Groups is not a system of record and is not asking to become one. Your church management system keeps the people, a round takes a copy of the pool for one season, and what comes back is groups and the reasons for them. Nothing below is blocked on moving data. The dates are set by people answering questions, which is a different problem and a harder one.
The phases above add up to about three weeks. Four to six is what it actually takes, and the difference is calendar rather than work: a launch lands on a Sunday, the leader configuring it has a day job, and an enrollment window is worth extending by a week when the answers are not in. We would rather quote the number you will hit.
Six ways an organization could get a roster into a round. All six now exist, which was not true when this page was first written. The two that every buyer asks about first, a file and a church-management connection, are the two most recently built. What each still costs you is next to it.
| Way in | What it costs you | State |
|---|---|---|
| A leader types the roster | Four fields a person (organization, first name, last name, email) in the console. About an hour per hundred people, and it is the only way a person gets on a roster today. | Built |
| A sign-in link to each person | One click. The email is queued and leaves on the next scheduled run, and there is no password for anybody to lose or for you to support. | Built |
| The member answers for themselves | Three to five minutes of theirs, and this is the part you cannot do on their behalf. Place, how far they will travel, when they are free, and anything else your program marks required. | Built |
| A CSV of the roster you already have | One export and a column mapping the console guesses for you. CSV, Excel, a zip, or a Google Sheet link. Nothing is written until you have seen what it would do, and the row that will fail tells you why before it fails. | Built |
| An application form on your own site | One link, and no typing. A form on your site posts each application to the console, and a person appears on the roster with their answers already on them: the location resolved to a real place, the evenings they chose turned into windows the engine can intersect. It will not guess: a city that could mean two places is recorded as unresolved and the member is asked. It also does not enroll anybody, on purpose. | Built |
| Planning Center or CCB, on a connection | Credentials once, sealed before they are stored, then people come across on demand. This removes the typing. It does not push formed groups back. That direction does not exist and has no date. A companion to a church management system rather than a replacement. | Built |
Even with an importer, and even with the Planning Center integration nobody has written, the schedule would not move much. A round needs two answers that no church management system holds: a place we can resolve to coordinates, and the times a person is actually free. An export gives you a name, an email, a household and a mailing address. It does not tell you that somebody will drive twenty minutes but not forty, or that Tuesday is the only evening that works.
Those two answers are the whole basis of the match, and they can only come from the member. So implementation is a response-rate problem wearing a software costume, and the number that decides your launch date is what share of your list answers an email in a fortnight. Plan the enrollment window around that, not around us.
| What the engine reads | Where it comes from | Source |
|---|---|---|
| Name | Any roster you already keep | In the export |
| Any roster you already keep | In the export | |
| Household | Usually in the export, occasionally as two rows | In the export |
| Life stage | Sometimes a tag; almost always worth confirming | Only the member |
| A place that resolves | Selected from Google Places, with coordinates. Free text is rejected. | Only the member |
| How far they will travel | Nobody's export holds this | Only the member |
| The evenings they are free | Nobody's export holds this | Only the member |
What the product does about this is small, and worth stating exactly. The database refuses an enrollment with a gap in it and names the missing questions, so a half-answered person never degrades a group instead. The member’s own screen counts what is left. The roster shows answers per person, so a leader chases the eleven people who have not finished rather than emailing everybody. Nothing chases an unfinished profile automatically yet. The notification layer has the digests and the timers to do it, and no job is wired to fire them at an incomplete profile. That is the next thing we would build for a launching partner.
Groups does not want to be your church’s database. It wants the roster that database already holds, and it will take it from wherever that is, including the spreadsheet in somebody’s downloads folder, which is where it usually is.
Two things this deliberately does not do. It does not write back: formed groups do not appear in Planning Center or CCB, and there is no date we would stand behind for that. And an import never enrolls anybody. It puts people on the roster and answers what the source could honestly answer. Joining a round stays theirs to do, because two of the answers a round needs are ones no church management system holds.
A system that forms small groups instead of listing them. Rounds, constraints, explainable placement, pairs and households, backfill, and the delivery layer that tells everybody.
Make it simple for people to ask for care and show up for one another. Members can request a meal, groceries, a ride, an errand, childcare, a check-in, or another act their community has offered.
Saved favorites and household details turn everyday care into a simple, one-click experience, while Honor recognizes the people who serve.
Explore Mutual Care ↗Real-time, activity-based social matching, already running as mbio. It is where somebody the round could not place goes the same day, instead of nowhere.
Mutual Care can live inside a formed group or across a larger community. Groups helps people belong. Mutual Care makes it easier for them to care for one another.
| Part | What it does | State |
|---|---|---|
| The formation engine | Assignment and the validator for the policies it runs. Pure, zero-dependency, and it ships with no defaults of its own. | Built |
| Rounds | Loads a pool, runs the engine, persists, emits events. Backfill for seats that open mid-season lives here. | Built |
| Notification | Events in, queued messages out. Urgency, digests, timers, delivery with retries, and one scheduled tick that does all four. | Built |
| Sign-in | Passwordless. A link in an email, and no password for anybody to lose. | Built |
| The console | Program, round, roster, board, approval, publication, backfill. A whole season without a terminal. | Built |
| The member app | Profile, waiting, your group, and the two different ways to step out. | Built |
| Row level security | Every policy written against the platform's own identity claim, and both apps refuse to start in production on a connection those policies do not apply to. | Built |
| Mutual Care | Simple requests, saved care preferences, community offers, and one-click ways to show up for someone. | Built |
Run one round
Bring one season’s worth of names and your hard rules. We will run the round with you, show you every placement and every reason, and you decide whether to publish it.