How it works
The moment before someone asks.
Your organization already hears from the people who submit the form, make the call, visit the counselor, contact HR, or use the EAP. HABLA™ is built for the moment before that — when someone knows something is wrong but may not know what to say, who to approach, or what will happen if they speak.
One interaction, from the placement onward
Someone opens a poster code, a link, or a page an organization has placed. They are not asked who they are, and there is nothing to sign in to. They read short, ordinary statements and choose the ones that fit. They can narrow the list by typing, with that search running on the device — what is typed never leaves it. If they want to, HABLA asks how much a statement fits: a little, quite a bit,very much. That is fit, not severity, and HABLA has no severity scale anywhere in it.
What comes back is language they might use to begin a conversation, together with the points of help their organization has listed and crisis resources that cannot be removed. Asking someone to make contact is a separate, deliberate step, taken on a screen that names the recipient and the expected response time before anything is sent. Leaving without taking it is an ordinary and complete way to use HABLA.
The two halves of that description are two separate systems. What someone taps is recorded against a topic and an hour; what they choose to send is recorded against a person who typed it knowingly. The drawing below this paragraph is the whole architecture: two paths, and no rung between them at any height.
Two paths that never meet
Anonymous activity and voluntary contact are separate paths. HABLA created no key that would join them, and no role can read across the two.
-
HABLA records nine fields on one row: which deployment, which placement, which audience pack, which topic, which date, which hour, which language, how many, and how much the statement fit. Two records sit beside that row rather than on it, both of them counters: how many topics an interaction involved, and how often a topic was named the most important. It does not record a person.
-
The event joins an aggregate. Nothing recorded identifies who tapped, so there is nobody to look up later.
-
Reports show which topics keep reaching the surface, where the count clears the privacy floor.
-
The two sides of this drawing are different shapes because they are different systems. Nothing on the anonymous side was declared to match a row on the contact side, and no role can read across the two. What the database engine stamps on its own rows is named on the privacy page rather than argued away here.
-
A separate, deliberate choice. Nothing about the anonymous experience requires it.
-
This is the only place HABLA holds identifying information, and the person typed it knowingly.
-
A person the organization designated. HABLA never contacts anyone on the individual’s behalf.
What that interaction leaves behind.
Nine fields on one row, and two records kept beside it — listed in full. Eight of the nine identify the row and the ninth is the count, because this is a tally and not a diary: there is no row per interaction anywhere in the anonymous experience. An interaction adds one to the row whose eight values match it, alongside every other interaction that matched the same eight. That is the whole of what an interaction leaves behind. HABLA is built to keep records and does not pretend otherwise. The claim it makes is narrower and checkable: not one of these is a fact about a person.
The honest version of the next sentence is not that these can never be combined into something identifying. Shared coarse context — the same organization, placement, pack, date and hour — is a correlator whenever a cell holds very few rows, and low volume is a de facto key. That is precisely why the two floors below exist: they sit between the record and every reader, so the combination is never published at the size where it would start to narrow toward a person.
The drawing below is that record, and it shows two things this list cannot. The hour bucket is stored as a calendar date and a whole hour — a pair of columns, drawn as a pair rather than flattened into one. And the two records this section calls counters sit beside the row rather than on it, in a different notation, because they are not fields on it. It also draws what is not there.
What one interaction leaves behind
Nine values on one row: eight of them identify the row and the ninth is the count of activity events that landed on it. Two more records sit beside that row rather than on it, both of them counters. The column that would join that row to a contact record has never been created.
-
The customer organization the placement belongs to. It identifies the row; it says nothing about who used it.
-
The poster, link, or code that was used — not a location the person was standing in.
-
The set of statements that was opened. It does not verify that the visitor belongs to that audience.
-
The statement that was selected, from a fixed library. It is an enumerated key, so nothing a person typed can become one, and a crisis resource’s key is refused by the database itself.
-
A calendar date, in UTC — its own column, not half of a timestamp. It bounds a reporting period and lets retention age the row out, and it is never rendered beside the hour as the time of an event.
-
A whole hour, 0–23, in UTC — never a timestamp and never finer. It is a second column beside the date rather than a time of day, which is why the hour bucket is two of the nine values. This is access timing: when the experience was used, not when a need began.
-
English or Spanish, so the organization can see what its wording is reaching.
-
A little, quite a bit, very much. It is part of what identifies the row rather than a value written onto it: a selection graded differently lands on a different row and adds one there. It is never averaged and never becomes a severity.
-
The one value that is measured rather than identifying, drawn here as activity events inside the cell. An interaction adds one to the row whose eight other values match it, alongside every other interaction that matched the same eight. A bounded count of activity events — not of people, and not a rate.
-
A separate record kept beside the row, never a field on it. HABLA counts interactions into three bands — one topic, two or three, four or more — against the same organization, placement, pack, date and hour as the row. It is a counter that goes up, not a row per interaction, because a number kept per interaction would itself be distinguishing.
-
The second record kept beside the row, and also a counter. When an interaction names one statement as the one that matters most, HABLA adds one to a count kept against the organization, the placement, the audience pack, the topic and the calendar date. That date is the whole of its timing: this count carries no hour, and there is no row per designation anywhere.
-
The empty outline is drawn where such a column would sit if it existed. It is not a field, it is not a blank waiting to be filled in, and it is not a link that was cut: no key between anonymous activity and voluntary contact was ever declared, and no role can read across the two. What the database engine stamps on its own rows is named on the privacy page rather than argued away here.
-
A different system from the row above it, and empty until a person deliberately leaves anonymous mode. It holds what they chose to give and the recipient they chose to reach. Nothing they selected on the anonymous side travels with it.
- Which deployment
- The customer organization the placement belongs to.
- Which placement
- The poster, link, or code that was used — not a location the person was standing in.
- Which audience pack
- The set of statements that was opened — not a verified membership of that audience.
- Which topic
- The statement that was selected, from a fixed library.
- Which date
- A calendar date, in UTC. It bounds a reporting period and lets retention age the row out; it is never rendered beside the hour as an event time.
- Which hour
- A whole hour, 0–23, in UTC — never a timestamp and never finer. This is access timing: when the experience was used, not when a need began.
- Which language
- English or Spanish, so the organization can see what its wording is reaching.
- How many
- A bounded count of activity events. Not a count of people, and not a rate.
A ninth field, and part of what identifies the row
- How much it fits
- HABLA asks how much a statement fits — a little, quite a bit, very much — and that answer is part of what identifies the row rather than a value written onto it: a selection graded differently lands on a different row and adds one there. It is never averaged and never becomes a severity.
Two records kept beside that row, both of them counters
- How many topics
- HABLA counts interactions into three bands — one topic, two or three, four or more — against the same organization, placement, pack, date and hour as everything else. It is a counter that goes up, not a row per interaction: there is no per-interaction record to hold a number, because a number kept per interaction would itself be distinguishing.
- How often a topic was the most important
- When an interaction names one statement as the one that matters most, HABLA adds one to a count kept against the organization, the placement, the audience pack, the topic and the calendar date. The date is the whole of its timing: this count carries no hour, and there is no per-designation row anywhere. A mark carried on a single selection would sit beside that selection’s hour, and in a quiet hour at a small placement it would name the most important choice while the selections next to it named the rest — the ranked order HABLA refuses to make readable. A day-long count of designations is a number about a day.
What the anonymous experience never stores
- Name
- Phone
- IP address
- Device identifier
- Fingerprint
- Session identifier
- Cookie identifier
- GPS or location
- Free text
- Diagnosis
- Risk score
If someone chooses to ask to be contacted, they give a name and a way to reach them. That is a separate system with no key back to anything anonymous, and the two floors above are what keep the coarse context from narrowing at low volume — so a name they give does not lead back to a topic they tapped. How the separation is built, and what each domain holds.
Four readings HABLA refuses to let a report imply.
Each of these is what a reasonable reader assumes for free when a number appears without its limits. Each is stated on the face of every report, in the same words, rather than in a footnote nobody reaches.
- That a count of activity is a count of people
- HABLA counts interactions. It has no unique-user identifier to count people with, so a number of activity events is never rendered as people, users, students, employees, or unique individuals.
- That a count is a rate or a prevalence
- A rate needs a denominator HABLA does not have. Nothing here estimates how many people in a population are experiencing anything.
- That a placement proves where someone was
- A site value reflects the organizational placement experience used. It does not confirm the person’s physical location, and the anonymous experience requests no GPS or geolocation at any point.
- That an hour tells you when people are struggling
- An hour bucket records when the experience was accessed. Access timing and need timing are different things, and only one of them is in the data.
Two floors, applied before anything is shown
Below ten activity events, a value is suppressed rather than displayed. The floor is applied to each topic in each hour of each day, before the month is added up. So a topic that never reaches ten activity events inside a single hour reports a zero for the month — and that zero means no activity there reached the floor, not that nothing happened. Independently of that, a placement or audience pack becomes its own row only when the population it covers is at least 50 people; below that, its activity rolls up into its parent rather than narrowing toward the individuals inside it. Neither floor is a per-customer setting, so neither is available to negotiate.
Below the floor, nothing is shown
Two floors, not one. A count is suppressed below ten activity events, and the floor is applied to each topic in each hour of each day, before the month is added up; a placement or audience pack is only reportable on its own if it also covers at least fifty people.
-
Suppressed. Not rounded, not estimated, and never shown next to another number that could reveal it by subtraction.
-
A fixed threshold. It is not lowered for a larger contract — that refusal is the product.
-
Clears the activity floor. Reported as forty-two activity events — never as forty-two people.
-
The second floor. A placement or audience pack covering fewer than fifty people is not reportable on its own however high its count climbs — its activity rolls into the parent site.
What the organization does with it
A count nobody acts on is measurement for its own sake. The last stretch of the path is what makes the rest of it worth building — and it is also the stretch where a system like this most easily starts acting on people rather than with them.
A signal arrives with the reading of it, the limits of what it establishes, and a set of organizational responses — never a recommendation to approach a named person. A person decides and acts; HABLA records what was decided and keeps watching the signal in the reporting periods that follow, so the organization can see what it did and what happened afterwards, without HABLA claiming the action caused the change. None of that last stretch is running for a customer yet. It is drawn below because what a system like this will be allowed to do is worth reading before it exists rather than after it is sold.
Signal to learning
A pattern reaches the surface, HABLA reads it and offers possible responses, a person decides and acts, and HABLA keeps watching the signal afterwards without claiming the action caused what followed. This is the model HABLA is building towards: none of the five stages is running for a customer today.
-
A topic that keeps reaching the surface across an organization, as aggregate activity that has already cleared both reporting floors. Core, in every plan.
-
Trend, persistence, timing and context, read without identifying anyone. The deterministic view of a topic is core; the generated reading of it is the paid add-on.
-
Possible organizational responses, or ways a practice that appears to be going well could be tried somewhere else. Options a person chooses between — never an instruction, and never a suggestion to approach a named person. The paid add-on.
-
Everything on the far side of this band is done by people in the organization. HABLA produces the signal, the reading of it and the options; it does not decide, does not act, and does not contact anyone.
-
What leadership decides to do, and when it will be reviewed. The organization acts; HABLA never contacts anyone or intervenes for them. The organization’s own decision record keeps what was decided and done; the decision, the administrator who owns it and the date are three of its fields. The record holds no audience-member identity; what prompted it was a pattern in anonymous activity, and it never claims an action caused an outcome. Core, in every plan.
-
Watching does not stop at the decision. HABLA will keep the signal under watch and report what the aggregate activity did in the reporting periods after a recorded action — stated as a comparison of closed periods, and never as a claim that the action caused the change. Core, in every plan.
What holds the whole path together
A pattern, not a person
Leadership sees which topics keep reaching the surface — never who raised one.
No account, no profile
The anonymous experience has nothing to sign in to, so no history attaches to a person — only to a topic, a placement, and an hour.
A floor under every number
Below ten activity events, a value stays suppressed — and the floor is applied to each topic in each hour of each day, before the month is added up. A placement or audience pack must also cover at least 50 people to be shown as its own row — otherwise its activity rolls into the parent site.
No key between the domains
Anonymous activity and voluntary contact details are separate systems with nothing to join on.
Every step above is one where something identifying was not created.
That is the whole design. A walkthrough is the fastest way to test whether it survives your organization's hardest question.
Request a walkthroughWhat HABLA does, and what it refuses to do