Skip to content
← All work

MeetingsCount

Verifiable attendance for court-ordered meetings. A participant taps check in and their phone reports where it is, once. The server scores that against the meeting's place and time, and anything it can't settle goes to a person before it affects anyone.

Role
Design, web app, backend
Platform
Web, installable on a phone
Stack
Python, FastAPI, PostgreSQL
Status
In development
The staff caseload: every participant, this week against their order, what is waiting on a decision, and who is behind
The participant app on a phone: checked in to a meeting, done for the week, eight weeks in a row

Screens show a demo county. Every person and record in them is invented.

The problem

MeetingsCount replaces the paper court card.

Today, someone ordered to attend recovery meetings or community service carries a slip of paper, asks the meeting chair to sign it, and hands the stack to their probation officer. The slip is easy to forge and easy to lose. The court gets a signature nobody verifies, and the officer reads compliance off a stack of slips, by hand, for every person.

There's a quieter problem too. Twelve-step meetings protect anonymity, so asking a chair to sign for the court is itself a problem. MeetingsCount needs nothing from the meeting.

What we built

One principle runs through all of it: the system confirms attendance, and a person decides anything that hurts.

Phone app
Installable from the browser, with no app store. One tap to check in, a plain answer, and the participant's own record with every reason.
Rules
Each check-in is scored for distance, timing, and GPS accuracy. Every rule writes its reason in plain English.
Review queue
Anything the rules can't settle waits for an officer, who decides with the evidence in front of them.
Caseload
Everyone an officer supervises, this week against their order, and who is behind.
Report
A printable attendance report for the file, week by week against the order.
Audit log
Every staff view of a record, every decision, and every export, with who and when.

Decisions that matter

A person decides anything that hurts.

The rules never record a failure on their own. A check-in that looks off goes to the review queue, where an officer sees the map, each signal against its limit, how check-ins usually go at that venue, and what the decision would do to the person's week.

Every decision waits six seconds with an undo, so a stray keystroke can't count or fail anyone. Changing a decision needs a reason and keeps the earlier one.

No single check is proof. A free app can fake a location, which is why confidence is built from layers and a person reviews anything unclear.

One check-in under review: what the decision does to the week, the map, and each signal against its limit

Unclear is not failed.

A weak signal in a basement isn't a missed meeting. The check-in is recorded, sent for review, and shown as pending, never as a miss. The participant can add a note in their own words.

An officer can also ask a question instead of deciding. It waits at the top of the participant's app, and the answer comes back to the top of the queue.

A check-in recorded and sent for review after a weak signal, with each reason listed
An officer's question waiting at the top of the participant's app, with an Answer button

Location is read once, at the tap.

The app explains the request before the phone asks. It reads the location at check-in and at check-out, and nothing in between. There is no background collection in the code.

Staff lists show outcomes, not coordinates. The phone shows the result as a drawing, not a map, so no location goes to a map provider from the phone.

A confirmed check-in, with a drawing of the phone's position inside the allowed circle

A report that says only what it knows.

The attendance report shows each week against the order, then every check-in with any review decision in the officer's own words. It explains itself to a reader who has never seen the system.

It says attendance was confirmed or could not be verified. It never says someone did not attend.

The top of a printable attendance report: the requirement, then each week against it
91automated tests
6seconds to undo any decision
500feet, the default check-in distance
0location reads in the background

Where it stands

Working today

The participant app, the review queue, the caseload and records, sign-in for staff and participants, the printable report, staff accounts, the audit log, and a preview running on demo data.

Next

Recurring meetings and address search, a rotating meeting code on a printed sheet, sign-in codes by SMS, field encryption, and deployment on AWS.

Deliberately not building

Continuous monitoring of any kind, geofence alerts, and scoring by machine learning.

Have a process that still runs on paper? Tell us how it works today.