Trust and privacy

The thresholds, written down.

Most privacy pages are adjectives. This one is numbers. Below are the actual floors, cell sizes, and deletion windows that govern what an agency or sponsor can see, stated precisely enough that a technical evaluator can hold us to them.

The short version

What a partner receives.

Sponsors, employers, and public agencies receive aggregate counts. They do not receive individual movement histories, message content, or rider identities. The mechanisms that enforce that boundary are described below, along with the limits of each one.

Minimum distinct riders per published cell

5

Configurable upward by the agency; the configuration schema rejects any value below five.

Minimum for sensitive categories

10

Applies to accessibility, equity, and curb-friction datasets, which use a higher floor than the default.

Minimum for externally shared aggregates

10

The published-analysis pipeline enforces this in SQL, so a sub-threshold row is never written in the first place.

Geographic resolution of aggregated mobility

~100 m

Coordinates rounded to three decimal places before aggregation. Roughly 111 m north-south, 86 m east-west at Nashville's latitude.

Raw telemetry and mobility event retention

30 days

Map telemetry, viewport requests, stop interactions, and route-preference events, deleted on a schedule.

Navigation ETA session retention

90 days

Sessions and their stored predictions are both purged on this window.

Product analytics event retention

180 days

Analytics rows are content-scrubbed and identifier-hashed before they are written.

Third-party security certifications held

None

No SOC 2 report, ISO certificate, or external audit. We do not claim one. See the last section.

Small-cell suppression

A cell publishes, or it disappears.

Every aggregate that reaches an agency dashboard or an export file passes through one shared suppression routine. The charts on screen and the CSV an analyst downloads apply the same rule, which means an evaluator has one thing to reason about rather than two.

The test is on people, not rows

A cell passes when the number of distinct riders behind it is at least five. A cell with four hundred trips contributed by three riders is withheld. A cell with three trips contributed by seven riders is published. Counting rows instead of people is the most common way a suppression rule quietly fails, so the check is written against the distinct-subject count, which is itself never included in any response.

Failing cells are removed, not blanked

A cell below the floor is dropped from the result set rather than nulled, zeroed, or marked in place. Each response also carries the number of cells that were dropped, so a partner can see how much coverage the privacy rule cost them and decide to widen the time window or the corridor rather than guess at what is missing.

A true zero survives

A cell with no activity at all is preserved rather than suppressed. Nothing about an individual can be inferred from an empty cell, and keeping it lets a partner distinguish “this corridor was covered and nothing happened” from “this was withheld.” Collapsing those two cases into one blank is a real loss of analytic meaning, so we do not.

Survivors are rounded

Counts that pass the floor are rounded to the nearest five before they are returned. Exact counts across two overlapping queries can be differenced to isolate the individuals in the gap between them, and rounding blunts that. The rounding base sits in the same agency configuration block as the two cell-size floors, so a program that needs a coarser number can raise it.

Geography

Coarsened before aggregation — and that alone is not enough.

Mobility records are keyed to a privacy cell produced by rounding latitude and longitude to three decimal places. Rounding happens before aggregation, so downstream analytics never see a finer coordinate than the cell. In Nashville that cell is roughly 111 meters north to south and roughly 86 meters east to west, because a degree of longitude narrows as latitude rises.

We want to be exact about what this buys, because it is routinely oversold. A hundred-meter cell in a dense downtown block covers a great many people. The same cell on a rural road can cover one driveway. Coarsening on its own is not anonymity. It is a coordinate reduction that makes the minimum-cell-size rule meaningful, and it is that rule — five distinct riders, ten for sensitive categories — that does the protective work.

For the same reason, coordinates are not the only thing coarsened. Agency datasets are grained to the week, and the published-analysis standard allows hour-of-day and year buckets but never a per-event timestamp, because a precise time attached to a coarse cell can re-identify as effectively as a precise coordinate can.

Data governance

Three states, and only one of them leaves.

Our written data governance policy classifies every dataset into one of three states. Data may only move toward less identifiability, never back, and each transition has a named mechanism rather than a convention.

  • State 0, raw: direct identifiers present — phone numbers, emails, names, precise per-user traces. Production database only, reachable over a private network, owner-held credentials.
  • State 1, pseudonymized: direct identifiers dropped at extraction, records keyed by opaque ids. Never exported.
  • State 2, aggregates at k ≥ 10: no user-level records, every published row reflecting at least ten distinct users. This is the only state eligible for sharing with a partner, an agency, or a publication.

The step from State 1 to State 2 is enforced inside the aggregation SQL itself, with a HAVING count(DISTINCT …) >= 10 clause, so a sub-threshold aggregate is never materialized anywhere to be leaked later. The loaders that write those tables re-check the floor independently and reject rows below it, because a control that exists in exactly one place is a control that eventually gets refactored away.

Note the two floors are different on purpose, and we would rather say so than average them into one marketing number. The live agency reporting surface has a floor of five, raised to ten for sensitive categories. The published-analysis pipeline, whose outputs are designed to leave our systems entirely, holds every row to ten.

Retention

Deletion is a scheduled job, not a policy sentence.

Retention windows that live only in a document tend not to happen. Ours run as background jobs started when the service boots, on a fixed six-hour interval, coordinated across application instances by a lock so that two servers do not duplicate the same purge.

What gets deleted, and when

Raw map telemetry, mobility viewport requests, stop interactions, and route-preference events are deleted after 30 days. Navigation ETA sessions and the predictions attached to them are deleted after 90 days. Product analytics events are deleted after 180 days.

These are the windows for movement and telemetry signals specifically. Other categories — reward and eligibility history, payment records — are kept longer for audit, dispute, and grant-reporting reasons, and the full schedule is set out in the Privacy Policy.

The job reports when it stops

A retention job that silently dies is worse than no job, because the policy still reads as satisfied. Each purge writes a heartbeat after a successful run, and a run that keeps failing lets that heartbeat expire, which surfaces the loop as degraded on the service health endpoint instead of letting retention lapse unnoticed.

The deletions are ordinary row deletions against the operational database. Copies inside encrypted backups persist until those backups age out under the backup schedule, which is 30 days rolling for the nightly encrypted dumps.

Server-side handling

What the servers write down.

Request bodies are never logged

The request-logging middleware records method, path, a request id, timing, and status code. It never reads the request or response body on any route, so payload contents cannot reach the logs even by misconfiguration — there is no branch that would enable it. Routes carrying navigation, telemetry, transit, and trip-planning payloads are additionally tagged in the log line as payload-logging-disabled, so the absence is auditable rather than merely true.

Coordinates are stripped before storage

Metadata attached to mobility records passes through a scrubber before it is written to the database. Fifteen coordinate-bearing field names are dropped outright, nested structures and lists are walked recursively, and free-text values containing a coordinate at four or more decimal places are rewritten to a placeholder. This is a write-path control: the precise value is removed before persistence, not redacted afterwards.

Analytics rows carry a pseudonym

Mobility analytics rows carry an HMAC-SHA256 pseudonym with a domain-separating version prefix in place of the user id. Because it is keyed rather than a bare hash, it cannot be reversed by anyone holding only the pseudonym and a list of candidate ids. Product analytics events are separately content-scrubbed and identifier-hashed before they are persisted at all.

The dashboard explains its own gaps

Where the suppression rule removes data, the agency view says so rather than rendering an unexplained blank: it states the minimum group size in force, counts the hidden cells in the current view, labels individual withheld values, and suggests widening the window or the corridor to bring more data above the floor.

Evidence quality

Reporting that says what it doesn't know.

A privacy claim and an accuracy claim fail the same way, by rounding an estimate up into a fact. Every row in a Hytch impact report carries an evidence tag of observed, derived, or modeled. The tag is part of the row's data type rather than a presentation detail, it renders as a badge in the report view, and it survives into the exported file as its own column, so it cannot be lost when the numbers are pasted into a grant application.

The exported report states the distinction in words as well: counts labeled observed come from aggregate trip records, while derived and modeled outcomes are estimates rather than direct emissions measurements. Avoided single-occupancy miles and reduced CO₂ are both tagged modeled, and the export prints its own methodology — the CO₂ factor per avoided mile, the assumed fuel economy, the counterfactual, and the source list — alongside the numbers, so a reviewer can recompute them.

The same discipline applies to service data. The parking API returns a live_availability field that is false, alongside plain-language caveats stating that candidates are built from static public parking data and that live occupancy is not available yet. Those strings ship in the API response itself, which makes the limitation hard to lose in translation between our system and a partner's.

Messaging

The limit we will not soften.

Hytch message content is not end-to-end encrypted at launch.

Network connections and stored data are encrypted, and that is worth having, but it is a different guarantee and we will not let the two blur together. Encryption in transit and at rest does not make a conversation end-to-end encrypted, because MobileFlow and the service providers that operate the platform retain the technical ability to access message content.

Restricting a message to a group or thread describes its intended audience. It does not mean the content is technically inaccessible to us. Human access to message content is limited to authorized personnel with a legitimate support, safety, security, or legal need, but the honest advice is the plain one: do not send anything through this service that you would not want us, an authorized service provider, or a lawful recipient of legal process to be able to read.

Our Privacy Policy states this at length and commits that a conversation which is not end-to-end encrypted will never be presented as though it were. That commitment is the reason this section exists on a page whose job is otherwise to describe what we do well.

What we do not claim

The absences, stated plainly.

A procurement reviewer's time is mostly spent finding out what a vendor left out. These are ours, up front.

  • We hold no SOC 2 report, ISO certificate, third-party security audit, or compliance attestation. Our internal governance policy names SOC 2 as a roadmap item triggered by the first agency data agreement entering diligence, and until that happens we will not imply otherwise.
  • Message content is not end-to-end encrypted at launch, as set out above.
  • Coarsening coordinates to roughly a hundred meters is not anonymization on its own, and we do not describe it as such. The minimum-cell-size rule is what carries the guarantee.
  • Modeled figures, including avoided vehicle-miles and reduced emissions, are estimates rather than direct measurements. They are labeled modeled in every report and export, and the factors and assumptions behind them are printed with the numbers.
  • Deleted rows can persist inside encrypted backups until those backups age out, and we would rather say so than describe deletion as instantaneous.

Evaluation questions

Five distinct riders. A cell in an agency dashboard or export is published only if at least five distinct riders contributed to it. Categories treated as sensitive, such as accessibility, use a floor of ten. An agency can configure a higher floor, but the configuration schema will not accept a value below five. The test runs on the number of distinct riders behind a cell, not on the row count, so a busy cell driven by three people is still withheld.

The row is removed from the response entirely rather than blanked or zeroed, and the response carries a count of how many cells were removed so an evaluator can see the coverage cost. A true zero is kept, because a cell with no activity at all reveals nothing about an individual and distinguishes covered-but-quiet from withheld. Surviving counts are rounded to the nearest five, which limits what can be inferred by differencing two overlapping queries.

Mobility records are aggregated to a privacy cell built by rounding latitude and longitude to three decimal places — roughly 111 meters north to south, and roughly 86 meters east to west at Nashville’s latitude. Coarsening alone is not anonymity: in a low-density area a cell that size can cover very few addresses. The protection comes from applying the minimum-cell-size rule on top of the coarsened cells, not from the cell size by itself.

Raw map telemetry, viewport requests, stop interactions, and route-preference events are deleted after 30 days. Navigation ETA sessions and their predictions are deleted after 90 days. Product analytics events are deleted after 180 days. Deletion runs as a scheduled background job every six hours, coordinated by a lock so overlapping application instances do not duplicate work, with a heartbeat that surfaces a stalled job on the service health endpoint. Full retention terms, including longer windows for records such as reward history, are in the Privacy Policy.

No. At launch, Hytch message content is not end-to-end encrypted. Network connections and stored data use encryption, but that is not the same guarantee: MobileFlow and the service providers that operate the platform retain the technical ability to access message content. This is stated in the Privacy Policy, which also commits that a conversation which is not end-to-end encrypted will never be presented as though it were.

No. Hytch holds no third-party security certification, audit report, or compliance attestation today, and does not claim one. The internal data governance policy names SOC 2 as a roadmap item triggered by the first agency data agreement entering diligence. Everything described on this page is a property of the code and the written policy, which a partner can review directly under a technical evaluation.

No. Sponsors and program funders receive aggregated, privacy-filtered, program-level reporting on participation and verified outcomes. They are not entitled to message content, raw movement traces, or continuous location visibility, and the reporting surfaces they use are built on the same suppression routine described on this page. Hytch does not sell private message content, raw personal movement histories, or continuous location feeds.

Technical evaluation

Ask us harder questions.

Everything above is a property of running code or of a written policy, which means it can be checked rather than taken on trust. If you are evaluating Hytch for an agency, campus, employer, or corridor program, we will walk your technical and privacy reviewers through the specific controls, the configuration your program would run under, and the parts we have not built yet.

Talk to us about an evaluation