9ThirtyOne

Cadet and instructor feedback for AFROTC detachments.

Free and open source · No account with us · Your records stay in your own Google Drive

What it is

A free, open-source feedback management system that covers the whole cycle: build a form, issue it, collect responses, analyse them, keep the record. It runs in a browser, and every record it creates lives in a Google Drive folder the detachment owns.

The problem it solves

AFROTC runs a centralized detachment model: one host facility serving cadets from several Crosstown universities. That is the point of the model, and it is also why the ordinary tooling does not fit — a detachment has cadets at schools its host university's IT system has never heard of.

So detachments stand up a Det Google Account to centralize communications, which solves the mail problem and creates a second one. A university IT system arrives with a course platform, a survey tool, a gradebook, somewhere for evaluations to live. A Google account arrives with none of that. The detachment gets the communications and loses the tooling.

That last one is the sharpest. It is not a tooling gap so much as a records and oversight gap that a tooling gap produced.

What it does, day to day

How it works

It is a web page, not an installation

9ThirtyOne is a progressive web app: a browser opens it, and it can be added to a phone's home screen. There is no software to install on a detachment machine, no server to maintain, and no account with anyone. The app is served from a web host and the data lives in Drive. Keeping those two separate is what lets the detachment own the half that matters.

The database is a Drive folder

Forms, feedback requests, responses, receipts, the roster, the activity log — ordinary files in one folder in the Det Google Account, readable in Drive with no special software. If a detachment stopped using 9ThirtyOne tomorrow, every response would still be sitting there. That is not an export feature; it is the storage format.

The app can only reach files it made

It asks Google for a permission called drive.file, which covers files the app created itself and nothing else. The rest of the account was never granted — not withheld by policy, never granted. The app could not reach the rest of that Drive even if it were compromised entirely.

Cadets get no Drive access at all

A small script the detachment deploys inside its own Google account receives answers, verifies who sent them, and writes the file. Without it, every cadet would need direct access to the folder to file an answer — and anyone with folder access can read the folder, so "anonymous" would mean anonymous on screen while readable by any cadet who opened Drive.

It also works offline — answers written with no signal are held on the device and sent when the connection returns — and it has no third-party dependencies, no build step and no vendor libraries. The only external code it loads is Google's own sign-in script, from Google.

What it guarantees, and the limits

Stated as narrowly as possible, because a narrow claim is one a detachment's IT reviewer can check.

The guarantees

Nothing reaches the people who publish this software. There is no server of ours, no database of ours, and no account with us. This is a property of the design, not a policy — there is no channel for data to travel down.

Anonymous results are withheld below three responses. Not "enough", not "several" — three. Below that line only the count of who has taken part is shown, so a single answer cannot be picked out by elimination.

Taking part is recorded separately from what was said. A receipt lives in a different file from the response, which is what lets the app say two cadets still owe feedback without attaching anyone's answers to their name.

And the limits that keep those honest

Removing names cannot change what someone wrote. An answer describing a role only one person holds, or an incident only one person witnessed, identifies its author no matter what fields were stored. Treat anonymous feedback as feedback, not as statistics.

The safety screen matches words, never meaning. It checks written answers against word lists for hazing, harassment, discrimination, violence, self-harm, substance misuse and integrity concerns. It cannot read context, sarcasm or quotation. It raises some matches that are nothing, and a clear screen is never proof that nothing was reported. It exists to get a real disclosure in front of a person faster, not to decide whether one happened. A match means read that answer now, and follow the detachment's own reporting procedures.

Not an official system

Read this one properly

9ThirtyOne is an independent, open-source project. It is not endorsed by, affiliated with, or an official system of the United States Air Force, the Air Force ROTC, or any university. Nothing recorded in it is an official record, and using it does not satisfy any reporting, retention or records-management obligation your unit may have.

It is not a channel for reporting anything that requires official reporting. Nobody monitors submissions in real time. If someone is in danger, contact emergency services; use your detachment's designated channels for everything else.

Using it

A detachment needs a Google account it owns, and about an hour once. The app is published at a single address that every detachment opens — there is nothing to download, host or keep running. Records belong to the detachment from the first response onward.

The software is licensed under the Apache License 2.0, and the source is public. You are free to read it and satisfy yourself that everything claimed on this page is true.

Open the app · Source on GitHub · Privacy policy · Terms of service