Create a development
Define it once, correctly, and everything downstream is arithmetic. Every figure on the right recalculates as you type.
The land
Where it is and how big.
Pricing
A stand's price is snapshotted when the stand is created. Changing this later never alters a stand that already exists.
Prices are entered and stored as integer cents. A financial system that holds people's housing money cannot afford a rounding error introduced by a floating-point subtraction three years into a sixty-month schedule.
Stands
Generate the numbered stands, then adjust individual sizes or prices where the surveyor's layout demands it.
You are selling before the subdivision permit lands, as the market requires. When the surveyor's approved diagram comes back, any stand whose size or price has changed raises a contract variation (J10) for the member to accept — it never silently edits a signed contract.
| Stand | Size | Price | Monthly | Status |
|---|---|---|---|---|
Nothing generated yet. Set the count above and press generate — the stands appear here with their snapshotted prices.
Servicing components
The one genuinely consequential choice in this wizard: whether each component is rolled into the monthly instalment or billed as a separate levy.
The monthly instalment jumps by roughly US$40 and the disclosed levy list empties. That single toggle is the difference between a member paying one predictable amount and being invoiced separately for electricity two years from now — which is exactly the sort of surprise that destroys trust in a cooperative.
Milestones
The standard Zimbabwean pipeline, pre-ticked. Untick anything that does not apply to this development. These ten rows are what members watch for years.
These ten rows are the member-facing narrative of the entire product. The original spec flagged them as needing client confirmation and that has not happened yet.
Terms
How long members pay for, what they put down, and what happens when they fall behind.
Late payment
Built into the system whether or not you switch it on — adding a fee type after contracts are live is a migration, not a feature.
Allocation & exit
Two rules that must exist before anyone can sign: how a member gets a stand, and what they get back if they leave.
How members get a stand
This inverts the member journey entirely, so it is set per development rather than per cooperative.
If a member exits
The platform computes the settlement from this schedule rather than negotiating case by case. Members can see the rule before they ever need it.
A forfeited stand needs a buyer. Members who registered interest after sell-out are notified automatically when one comes back — which is why the waiting list exists at all.
Review & publish
Publishing writes the stands, the components and the milestones in one transaction. All of it, or none of it.
this development
- Location
- —
- Stands
- 120
- Stand size
- 2400 sq ft
- Currency
- USD
- Servicing components
- 4 (3 rolled in)
- Milestones
- 10
- Allocation
- —
- Exit rule
- —
- Stand price
- —
- Rolled-in servicing
- —
- Principal
- —
- Deposit
- —
- Term
- 60 months
- Monthly
- —
Plus disclosed future levies: —
Invited members can now see this development and take a stand. Every figure above is snapshotted onto each contract at signing and will not move afterwards.
this development
—
| Component | Cost per stand | Billing |
|---|---|---|
Open the member portal and buy one of the stands you just created. The price you set follows through to the contract, the schedule and eventually the settlement run.
Members
Everyone with a contract on this development. Billing counts a person once, however many stands they hold.
| Member | Phone | Stand | Balance | Status | |
|---|---|---|---|---|---|
A member holding two stands is one billable member — they are one human receiving one set of notifications. Counting per contract would charge the cooperative more for its best-paying members, which is a bad incentive to build in.
Invite members
Bulk invitation over WhatsApp. Each invite is scoped to this development and carries a single-use code.
- Invitations
- 3
- Channel
- WhatsApp, platform account
- Counts against
- Your fair-use allowance
- Allocation mode
- —
Signup is self-service only in this version — there is no officer-assisted path. In a market where cash at the office is the norm, expect a proportion of your register to be unreachable by this invite.
Stand register
Every stand, its snapshotted price, and who holds it. Individual sizes and prices can be overridden where the layout demands it.
| Stand | Size (sq ft) | Price | Status | Held by | |
|---|---|---|---|---|---|
A stand's price is fixed when the stand is created. Changing the development's price per square foot afterwards affects new stands only — it can never silently move a stand somebody has already contracted on.
Edit development
Once a contract exists, most of this is frozen. What is locked and why is shown on each field rather than hidden behind a disabled input.
Still editable
Nothing downstream depends on these.
Locked
Changing these would move money on signed contracts.
Servicing cost overruns become a levy. A change to the stand itself becomes a variation the member must accept. Neither one edits a contract in place.
the member
— · —
Identity
- Full name
- —
- Mobile
- —
- National ID
- —
- Preferred channel
- Registered
- 02 Mar 2027
Billing
What this member costs the cooperative on its platform plan.
- Billable
- Yes — active contract
- Counts as
- 1 member, however many stands
- Per-member rate
- US¢250 / month
They generate the most work — reminders, statements, chasing — so they are the ones the platform is working hardest for.
| # | Due | Amount | Paid | Status |
|---|---|---|---|---|
| File | Purpose | Type | Size | Uploaded | |
|---|---|---|---|---|---|
Officers as well as administrators can open identity documents here. Access is recorded against a named person, but the exposure surface is wider than admin-only.
| When | Channel | Message | Delivery |
|---|---|---|---|
Invitations
Who has been invited, who has registered, and who has gone quiet. Every invite is scoped to one development.
| Name | Mobile | Sent | Status | |
|---|---|---|---|---|
A member who never opened the link is often a member without a smartphone rather than one who lost interest. Since signup is self-service only, there is currently no path for them at all.
Waiting list
Where a forfeited or declined stand goes. This is the reason the list exists — a released stand needs a buyer without a fresh sales cycle.
| # | Name | Mobile | Joined | Note | |
|---|---|---|---|---|---|
When an exit is approved the stand is released here automatically and the person at the top of the list is notified.
Under committee allocation, a member who declines an offered stand returns it to the pool and keeps their position.
Allocate stands
The committee's own screen. Only appears when the development is set to committee allocation.
This development is currently set to —. Switch it in the wizard's allocation step to change how this screen behaves.
| # | Name | Joined | |
|---|---|---|---|
| Stand | Size | Price | Status |
|---|---|---|---|
Allocating sends an offer with the full cost breakdown. Nothing is binding until the member accepts, and declining returns the stand to the pool without losing their place on the list.
Event log
Append-only. Every state transition in the system writes one row here, with an actor and a timestamp. This is the product's actual promise.
The core social problem in this market is members not trusting where their money went. A log that cannot be edited, showing who did what and when, is the thing that actually answers that — everything else is interface over it.
The same table gives a future AI agent perfect recall of what happened on a development, which is why it exists from day one even though nothing reads it yet.
Import stands from CSV
For layouts where stands differ in size or price.
number,size_sqft,price_minor Stand 001,2400,3000000 Stand 002,2850,3562500 Stand 003,2400,3000000
3000000 means US$30,000.00. Importing with major units would understate every stand by a factor of a hundred, so the importer rejects any file whose values are not integers.
Edit stand
Overrides apply to this stand only.
Changing its size or price does not touch the signed contract. It raises a variation the member has to accept, and the contract is superseded rather than edited.
Publish this development?
One transaction — all of it, or none of it.
- Stands created
- 120
- Components
- 4
- Milestones
- 10
- Monthly per stand
- —
Everything else stays editable until someone signs. After that, price and term changes affect new stands and new contracts only.
Resend invitation
A new single-use code replaces the old one.
- Channel
- Cost
- 1 conversation
- Allowance
- 218 of 2,000 used
Every WhatsApp conversation counts against this cooperative's fair-use allowance and is billed through at cost beyond it.
Offer a stand
The member receives the full cost breakdown before committing to anything.
- They would pay
- —
- Deposit
- —
- Offer expires
- 72 hours
The stand returns to the pool and they keep their position on the waiting list.
Add a note
Visible to cooperative staff only, never to the member.
Notes are written to the event log with your name against them and cannot be deleted afterwards.
Export event log
For the committee, the auditor, or an AGM pack.
The log itself is append-only and cannot be edited, so an export is always reconcilable against the live system.