Cadet and instructor feedback for AFROTC detachments.
Free and open source · No account with us · Your records stay in your own Google Drive
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.
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.
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.
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.
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.
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.
Stated as narrowly as possible, because a narrow claim is one a detachment's IT reviewer can check.
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.
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.
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.
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