MyClient.software · Early access · one lane is in daily reach, the rest is built and named
Every CRM models a company selling to a company. A district is not shaped like that.
A general CRM asks you which company this is. Then it asks you to type in the parent company, invent a role for each contact, and pick a fiscal quarter for a contract that renews when a school year does. You can make it fit. Most studios have. The fit is a list of workarounds you maintain by hand forever.
This one starts from the district. The account is a school, joined to the national school directory’s own row for it. The district above it is resolved, not typed, from that row’s own local-education-agency identifier. The people are several, with roles that mean different things: the adviser who runs the book, the administrator who signs, the booster officer with a separate budget, the business office that pays. The deal is the picture-day contract or the ad and sponsorship buy — and winning it stands up the school’s own workspace rather than turning a row green.
It is early access, and this site carries a whole page listing everything that is written and cannot yet be reached from a screen. That list is longer than we would like. It is published anyway.
The rest of this site
Six more pages, and the longest one is the list of what does not work yet.
This front page carries the argument. The detail lives on its own pages, because a single scrolling document with a menu made of anchors is a brochure with a table of contents, not a place you can navigate.
The object model
The translation, line by line: the school as the account, the district resolved from the national directory rather than typed, the four answers the roll-up can give, several named people per school, and territory as a rule with a decision record.
What you can reach
The honest board. What a person can actually open, the two screens mounted with nothing linking to them, the 100 registered handlers counted per file with their register sites, and the 9 capabilities reachable from no screen at all.
The arithmetic
Integer cents, integer basis points, one floor at the end and expected revenue stored nowhere. When a quiet deal is allowed to be called quiet. And the lead score, which you can work yourself over the engine's published weights.
What it refuses
Every guard on one page: the advertising ladder the server will not let you skip, the evidence rule that stops an invoice claiming a payment that never happened, the adult relationship design and the scoped advertising gate, and the tenant boundary read from the session rather than the request.
Against a general CRM
The row-by-row comparison including the rows a general CRM wins outright, followed by the questions a studio sales lead actually asks.
About
Who builds this, the rule the whole site is written to, and the two occasions our own source code told us the wrong answer -- published rather than quietly fixed.
Related surfaces
Adjacent products, each its own thing.
MyClient.software is the relationship and the sale. These are the neighbouring surfaces, kept as separate products rather than folded into a suite.
companysuite.software
The small-business expression of the same pipeline substrate. Its front door is honest-off about every capability and says so in its own words, which is why it is worth reading beside this one.
payroll.software
The payroll calculation engine rather than a payroll service. Money out to staff is a different product from money in from a sale, and we keep them apart on purpose.
schedule.software
The scheduling surface a signed picture-day contract turns into. A won deal becomes a date on a calendar, and that belongs to its own product.
What this page is and is not claiming
The whole posture, in one paragraph.
MyClient.software is early access: one lane is wired end to end and reachable from two navigation entries, and the rest of the model is written with its gaps named. Its object model is a district’s relationships: the school is the account, the district above it is resolved from the national directory’s own agency identifier rather than typed, the people are several with different roles, and winning a deal provisions the customer’s own workspace. Money is integer cents and probability is integer basis points; expected revenue is derived on read with one floor at the end and stored nowhere. The advertising and sponsorship lane is wired end to end with a server-enforced contract ladder: no creative before the insertion order is signed, a paid invoice required when the tear-sheet placement has a linked order, and a tear sheet refused when a selected placement submission references a publication-suppressed student. 9 capabilities are written, registered and reachable from no screen, including account creation and the district roll-up, and all 9 are named on the what you can reach page rather than counted as features. The one page this paragraph used to call fully orphaned is now routed and navigable, and we corrected that claim in place rather than deleting it. The deal detail screen that owns the entire deal write path is reachable only by typing its URL, and two comments in our own source wrongly claim otherwise — a correction we publish rather than quietly fix. On sequences there is a spine and no engine: a cadence table, a pure resolver and a step type landed while this page was being written, and there is no endpoint that runs one, no screen that builds one and no caller anywhere — nothing sends anything, the comparison table concedes that row along with three others, and the paragraph this page originally shipped about it was re-measured and corrected rather than left standing. No money moves: the live payments switch defaults off, marking an invoice paid requires real evidence, and with the switch off the described settlement is an attested offline reconciliation. The relationship model is designed around adult organisation context, and minors are denied the commerce surface outright. There are no adoption counts, no named customers, no testimonials and no invented figures anywhere on this site; every count states the instrument that produced it. There is no pricing and no checkout on this site. The honest next step is a conversation.
MyClient.software is early access. The advertising and sponsorship sales lane is wired end to end and reachable from two navigation entries. The deal, forecast, account and territory surfaces are written and registered, and every one of them is either reachable only by typing a URL or reachable by nothing at all. Each one is named on the what-you-can-reach page. We would rather you read that here than discover it in week three.
Common questions
The questions a studio sales lead actually asks.
Can I use this as my CRM today?
For advertising and sponsorship sales inside a school publication, yes — that lane is wired end to end and sits behind two navigation entries. For general district prospecting, partly: the prospect board, the activity timeline, the contact model, the forecast and the account read are all reachable, and the deal detail screen that owns every deal EDIT is reachable only by typing its URL. Account creation has no browser screen at all. That is the honest shape of it, and the built-not-switched-on list on the what you can reach page is the full accounting.
Why can I not create an account in the browser?
Because nobody wired the write. The endpoint exists, it enforces one account per studio per directory row and returns a conflict on the duplicate, and the browser client carries only the two reads. We could have described the endpoint and let you find out. Naming it here costs us a sentence and saves you a week.
Do you have email sequences?
No, and the precise answer is more interesting than the no. There is a spine and no engine: a cadence table with row-level security, a pure resolver that turns a cadence definition into ordered steps, a sequence step type, and isolation tests over both. There is no endpoint that runs one, no screen that builds one, and nothing anywhere in the application that calls the resolver. Nothing sends anything. Worth knowing how we know that, because it is the same reason to trust the rest of this page: the first draft of it claimed a total absence, which was true when it was measured and stopped being true two commits later, while the page was being written. We re-measured rather than shipping the sentence. If multi-step outreach automation is your requirement today, a general CRM has it and we do not.
What is an account here — the school or the district?
The school. The district is resolved ABOVE it rather than being a second kind of account you also maintain, because in a district the money and the signature and the person you actually talk to are frequently at three different levels. The roll-up walks upward: this school’s district identifier, every sibling school under it, and the summed deal value across the ones your studio has an account for.
How is the forecast number computed?
For each open deal: take the amount in integer cents, take the effective probability in integer basis points — the per-deal override when one is set, otherwise the stage default — multiply, and floor once. Sum those into buckets by owner, stage or close month. Won and lost deals are excluded. A deal with no stage is excluded, because it has no probability basis and the alternative would be to invent one. Nothing is stored, so nothing drifts.
What happens when a deal goes quiet?
Each stage can carry a rot threshold in days. A deal whose last activity is older than its stage’s threshold is flagged as rotting, and the count rolls up into the forecast bucket. Three rules make the flag trustworthy: a won or lost deal never rots, a stage with no threshold never rots because the studio opted that stage out, and a deal that has never been touched at all is rotting the moment a threshold exists. The never-touched case is the most neglected one, so it gets no free pass.
Does closing a deal actually do anything?
Yes — the convert verb provisions the school’s own workspace, and the stage-move validator then refuses every subsequent move on that deal. Closed-won here is not a label on a row; it is the moment a customer exists. The immutability is deliberate: a provisioned deal that could be dragged back to “negotiation” is a reporting lie waiting to happen.
Does any of this touch student data?
The relationship model is designed around adult organisational context; that is not a blanket claim that every CRM-related surface is free of student data. The reviewed advertising tear-sheet route selects submissions for the placement whose status is approved or whose page reference is present. For the selected student references, it resolves publication suppression before creating the tear-sheet record and returns consent_blocked if any are suppressed. Its adviser gate also refuses a minor-held session. This is a scoped static source finding, not verification of every surface, a rendered document, or a deployment. No new minor-data or consent procedure is offered here.
Can a rep see another rep’s deals?
No. A rep reaches its own deals — as the working rep or as the owner — plus the unassigned house pipeline, and nothing else. A deal outside that set comes back as not-found rather than forbidden, so the wall does not confirm the row exists.
Can your support staff edit my pipeline?
No. Support reads across tenants and is refused every write by name: the function that resolves which studio a write targets forbids a support session outright. Reading to help you and writing to your data are different powers and they are separated in code, not in policy.
Is money live?
The live payments switch defaults to off. With that switch off, the described settlement path is an attested offline reconciliation, carrying a method, reference, and server-resolved staff attribution; it is not a provider charge. A provider identifier belongs to the separate live-enabled condition and is not proof supplied by this marketing page that a charge occurred. There is no pricing or checkout on this site, and an enquiry creates neither an account nor a payment.
What does “built, not switched on” mean, exactly?
A registered handler that answers, with tests over its logic, and zero surfaces a user can reach that call it. It is not vapour and it is not a feature. The distinction matters because the characteristic dishonesty of a technical product page is to present a green test suite as a working capability, and this codebase has 9 places where that temptation exists. All 9 are listed by name. The cadence spine is one rung lower still and is described in its own section: it has no handler at all, so it does not even qualify for that table.
Why should I believe this page?
Because it is checkable and it argues against itself in the places that matter. Every capability claim on it names the file and, where it is load-bearing, the line. Every count states the instrument that produced it. The comparison table gives the general-CRM category the first four rows outright, including the one where our own coverage is thinnest. And it publishes a correction against our own source: two comments in our web code assert that the deal detail screen is reached from the pipeline cards, and measured at tip that is false — it is a typeable URL. A page that will not contradict its own codebase is not measuring anything.