!
{{ reminderHeadline }}
{{ reminderSub }}
Active contracts
{{ kpiActive }}
{{ kpiActiveSub }}
Managed value (ARR)
{{ kpiArr }}
{{ kpiArrSub }}
Renewals due
{{ kpiRenew }}
{{ kpiRenewSub }}
Win rate
{{ kpiWin }}
{{ kpiWinSub }}
Retention
{{ kpiRetention }}
{{ kpiRetentionSub }}
Referrals & wins by source
Opportunities and contracts secured per referral channel
{{ s.key }}
{{ s.summary }}
Referrals
Secured
Lifecycle distribution
Count and value at each stage
{{ st.label }}
{{ st.count }}
{{ st.valueFmt }}
Renewals coming up
Active contracts closest to expiry
Expires {{ r.endFmt }} · {{ r.owner }}
No active contracts with a set expiry date yet.
Why we didn’t win
Reasons recorded for lost or no-bid referrals
{{ l.label }}
{{ l.count }}
No losses recorded yet.
{{ col.label }}
{{ col.count }}
{{ c.name }}
{{ c.metaLine }}
{{ c.source }}
{{ c.valueK }}
No referrals
{{ selectionNote }}
{{ bulkMsg }}
Showing {{ filteredCount }} of {{ listTotal }} {{ listNoun }}
{{ selectionNote }}
{{ bulkMsg }}
No contracts to show
Won referrals appear here once secured. Adjust the filter or search.
{{ contractsFooter }}
@
Expiry reminders fire automatically at 90, 60 and 30 days before each contract’s end date and stay active until checked off. Email reminders to the assigned manager are sent on the same schedule once the Supabase reminder function is enabled (see setup guide).
Sites by Assigned Manager
{{ repListMeta }}
Managers
{{ repMgrCount }}
Sites
{{ repSiteCount }}
Units
{{ repUnitCount }}
No active contracts{{ repMgrSuffix }}.
{{ g.name }}
{{ g.count }}sites · {{ g.unitsFmt }} units
SiteLocationUnitsFundingRoleSite contactContract endRenewal
{{ g.name }}
{{ g.summary }}
{{ r.name }}
{{ r.loc }}
{{ r.unitsFmt }}
{{ r.funding }}
{{ r.role }}
{{ r.contact }}
{{ r.endFmt }}
{{ r.badgeLabel }}
Client List with Contact Information
{{ repListMeta }}
Clients
{{ repSiteCount }}
Units
{{ repUnitCount }}
No active contracts{{ repMgrSuffix }}.
Co-operativeSite contactEmailUnitsFundingManagerContract end
{{ c.name }}
{{ c.address }}
{{ c.phone }}
{{ c.contact }}
{{ c.hours }}
{{ c.email }}
{{ c.officeEmail }}
{{ c.endFmt }}
{{ c.badgeLabel }}
Sites by Human – {{ humanMonth }}
{{ humanSiteLabel }}
{{ humanSub }}
No active contracts{{ repMgrSuffix }}.
{{ c.name }}
{{ cell.site }}
{{ cell.tag }}
{{ c.count }}
{{ c.units }}
Managing marks sites the manager runs directly; all others are co-ordinated.
Subsidy only (not counted as a site): {{ humanSubsidy }}
Generated from the Contract Lifecycle Tracker · assigned manager field
{{ humanGenerated }}
Portfolio & Pipeline Report
{{ reportMeta }}
Managed value
{{ kpiArr }}
Active contracts
{{ kpiActive }}
Units managed
{{ reportUnits }}
Renewals ≤90d
{{ kpiRenew }}
Win rate
{{ kpiWin }}
Active contracts
| Co-op | Manager | Units | Annual value | Term / status |
|---|---|---|---|---|
| {{ c.name }} | {{ c.owner }} | {{ c.unitsFmt }} | {{ c.valueFmt }} | {{ c.reportTerm }} |
Renewals due (next 90 days)
{{ r.name }}
Expires {{ r.endFmt }} · {{ r.badgeLabel }} · {{ r.valueFmt }}
No contracts expiring within 90 days.
Avg contract value
{{ repAvgValue }}
{{ repAvgValueSub }}
Avg per unit
{{ repPerUnit }}
annual, across live contracts
Referral → decision
{{ repVelocity }}
{{ repVelocitySub }}
Total renewals
{{ repRenewalCount }}
{{ repRenewalSub }}
Retention by province
Share of live contracts renewed at least once
| Province | Live | Renewed | Retention |
|---|---|---|---|
| {{ p.province }} | {{ p.liveCount }} | {{ p.renewedCount }} | {{ p.ratePct }} |
Referrals brought in
Who the referral came to, and how those bids landed
| Referred to | Secured | Lost | Win rate |
|---|---|---|---|
| {{ t.name }} | {{ t.won }} | {{ t.lost }} | {{ t.ratePct }} |
No decided bids with a recorded referral recipient yet.
Win rate by bid lead
Decided bids only — secured against lost
| Lead | Secured | Lost | Win rate |
|---|---|---|---|
| {{ l.name }} | {{ l.won }} | {{ l.lost }} | {{ l.ratePct }} |
No decided bids with an assigned lead yet.
Win rate on interview panels
Bids where each manager sat on the panel
| Panel member | Secured | Lost | Win rate |
|---|---|---|---|
| {{ i.name }} | {{ i.won }} | {{ i.lost }} | {{ i.ratePct }} |
No decided bids with a recorded panel yet.
Panel pairings
Combinations with three or more decided bids
| Pairing | Sample | Win rate |
|---|---|---|
| {{ p.name }} | {{ p.bids }} | {{ p.ratePct }} |
Pipeline by stage
{{ st.label }}
{{ st.count }} · {{ st.valueFmt }}
Referrals by source
{{ s.key }}
{{ s.summary }}
{{ rtStatPlays }}
Open retention plays
{{ rtStatRot }}
Manager rotations due
{{ rtStatRev }}
Fresh-eyes reviews due
{{ rtStatRisk }}
Clients at risk
Rotation cadence by manager
Months each manager has been in place on their current sites, against the rotation target.
{{ m.name }}{{ m.sites }}
{{ m.line }}
{{ m.over }}
{{ rd.name }}
{{ rd.meta }}
{{ rd.score }}{{ rd.band }}
Retention play
{{ rd.playNote }}
Manager rotation
Assigned manager
{{ rd.mgr }}
{{ rd.mgrSince }}
In place
{{ rd.mgrMonths }}{{ rd.rotLabel }}
Client since
Rotation target
{{ rd.sinceNote }}
{{ rd.rotPrompt }}
Reason for keeping (required)
The flag is cleared for 12 months, then returns.
Rotation decisions
{{ k.head }} — {{ k.reason }}
Fresh-eyes review
{{ rd.revNote }}
Date
Reviewer
Status
Findings
{{ rtFormErr }}
{{ v.head }}{{ v.status }}
{{ v.findings }}
Accomplishments
{{ rd.accSummary }}
Date
Title
Category
Value / savings ($)
Manager credited
Linked document
Description
{{ rtFormErr }}
{{ a.date }}
{{ a.title }}{{ a.category }}Internal
{{ a.description }}
{{ a.meta }}
{{ a.value }}
Nothing logged yet. Capital work, savings, grants, governance wins and resolved issues all count.
Community involvement
{{ rd.comSummary }}
Date
Type
Event
Amount ($, if any)
Staff attended
Comment
{{ rtFormErr }}
{{ a.date }}
{{ a.event }}{{ a.type }}
{{ a.attendees }}
{{ a.comment }}
{{ a.amount }}
No events, sponsorships or attendance logged yet.
{{ rp.preparedFor }}
{{ rp.generated }}
{{ rp.generated }}
Value Delivered · {{ rp.year }}
{{ rd.name }}
{{ rp.subline }}
{{ t.v }}
{{ t.l }}
What we accomplished
{{ a.date }}
{{ a.title }}
{{ a.category }}
{{ a.description }}
{{ a.value }}
No board-visible accomplishments logged for {{ rp.year }}.
In your community
{{ a.date }}
{{ a.event }}
{{ a.line }}
Independent operational review
{{ a }}
{{ rp.footer }}
Who can see Retention
{{ rtAccessIntro }}
Admin
Import, people, lists, branding and history. {{ adminScopeNote }}
Bulk import
Import many records at once from an Excel (.xlsx) or CSV file.
1Download the template
{{ importTemplateNote }}
2Upload your file
Fill in the rows, then upload here to preview before importing.
{{ importFileName }}
✓
{{ importDoneMsg }}
Last import
{{ lastBatchNote }} Remove the whole batch if it went in wrong.
{{ importErrorHead }}
• {{ er }}
Check before importing
• {{ w }}
Preview — {{ importCount }} ready to import
{{ importTruncatedNote }}
Expected columns
Managers
The people who can be assigned as Lead or to an interview panel. Email addresses are what the renewal reminders send to.
!
{{ mgrWarning }}
Name
Email
{{ mgrErr }}
Managers are deactivated rather than deleted, so historical records keep their names.
Names on records that are not on this list
Usually a typo, or someone who has left. Add them above to keep the rollups clean, or correct the record.
Lists
Referral sources and funding options for {{ orgName }}. These vary by province and by organisation, so they are data rather than fixed choices.
!
{{ listWarning }}
List
Code
Full name
{{ listErr }}
Referral sources
Funding options
Hidden entries disappear from the dropdowns but stay on the records already using them.
Organisation
Name, logo and defaults for this organisation. Everything here is data, so one deployment serves every tenant.
Sign-in domain
Anyone with an @{{ orgDomain }} address can sign in, and sees only this organisation's records. Adding another organisation is a database row, not a new deployment — see Part 9f of the setup guide.
Audit log
Every create, edit, delete, renewal, reminder check-off and import — who, what and when.
No activity recorded yet
Every save, delete, renewal and import will appear here as it happens.