SF Accountability Ledger

An independent public record. Not a City and County of San Francisco website.

What this site is

San Francisco writes reporting deadlines into its own ordinances. This tracks whether the documents actually appear, across homelessness, behavioral health and drug policy. Everything here comes from public records. No residents are named, and nothing on this site argues that any policy is good or bad. It records one thing: whether the city did what its own law requires, by the date its own law sets.

We score two things

A document can be filed and still be impossible to find. Those are different failures, so the ledger scores them separately.

The clearest example is the semiannual report under Administrative Code 124.4. It was filed. It also has no page on sf.gov, no catalogue record, and nothing on the responsible department's site. It appears only as an item inside one Board agenda packet, under a title that collides with a different statutory deliverable. Calling that simple compliance would be misleading, and calling it a failure would be false.

How we decide something is missing

This is the part that has to be right, because an absence claim is the easiest thing on a site like this to get wrong.

  1. We enumerate, we do not search. The sf.gov content API matches all terms rather than any, so a zero result for a multi-word phrase proves very little. It only means no document contains every word. Instead we list the entire document store and the entire report page type, then filter every title and description ourselves.
  2. We publish the log. Every row records each place checked, what was checked, the result, the HTTP status and the date. If the log is thin, the claim is weak, and you can see that for yourself.
  3. We pre-answer the rebuttal. Each missing row lists the documents that look like the missing one, with the reason each is not it. If we cannot find a single near miss, the row says so explicitly.
  4. We ask the department where the record would live. California Government Code section 7922.600 requires an agency to help a requester identify responsive records and to say where records of that type are kept, including which systems and which physical locations. That is the ask with teeth, and it is how you learn which venue you failed to search. An earlier version of this page said we ask for a certificate under California Evidence Code section 1284 and that this made the department attest the absence. That was wrong. Section 1284 is a hearsay exception addressed to a court; it creates no duty on any custodian and cannot be compelled by a records request. We still invite such a statement, and we say plainly that nothing obliges anyone to write one.

The language is deliberate. We never write that a department did not produce a report. We write that no published copy was found at these specific places at this specific time.

Three of these claims have already been wrong. Adversarial review caught all three before a reader did. Two failed the same way, with the document sitting in a venue we had not thought to check. The third failed on timing, by about an hour.

An absence claim is the most fragile thing a site like this can publish. It holds only at the instant it was made, and only across the venues actually searched. When it fails it fails quietly. Everything else here is a claim about a document that exists: a filed report nobody can find, a repealed duty, a deadline the enacted text does not let you compute. Those keep. Absence is now the exception on this site.

Traps we had to design around

Corrections

We publish corrections in place, dated, with the original claim still visible. We never edit silently.

2026-08-25, the Shelter Equity Analysis, and what it revealed

This site led with a claim that the Shelter Equity Analysis required by Administrative Code 124.2(a) had never been published, 221 days overdue, against two named departments. That was false. HSH submitted it to the Board of Supervisors in January 2026. The agenda records a receipt window rather than a date, and the deadline falls inside that window, so we cannot say whether it arrived early or late, and do not.

The cause was a hole in the venue list. Departments file to the Board, and every filing is listed in the Petitions and Communications section of a Board meeting agenda. Those agendas are ordinary PDFs at a predictable address. We had reasoned that because the Board's legislative database cannot be searched programmatically, Board filings could not be observed. That does not follow, and the agendas were never in that database to begin with. Three separate absence claims died on this one mistake.

Board agendas are now a checked venue. Every agenda published since July 2025, 43 of them, is searched in full text on every run. The one remaining absence claim on this site has been re-tested against that venue and survived it.

2026-08-25, Civil Grand Jury responses

This site published a row saying the Mayor and the City Attorney had not filed their 60 day responses to the Civil Grand Jury report. That was false. Both had filed: the City Attorney on August 17, a week early, and the Mayor on August 24, the deadline itself. The sweep behind the claim ran on the morning of August 25 and was accurate at that moment. The documents entered the sf.gov catalogue at 11:03 and 11:15 the same morning, about an hour later. Because the evidence log recorded dates and not times, the row could not show that its own check predated the filing.

Three things changed as a result. Every check now records a timestamp, and the data file refuses to publish a new one without it. The page dates itself from the newest check in the evidence rather than from today's clock, and says so plainly when that check is more than two weeks old. And every row claiming a document is missing now states the boundary of its own search, including what it cannot see.

2026-08-25, Administrative Code 124.4

An earlier draft of this project listed the Administrative Code 124.4 semiannual report as missing. That was wrong. Two independent adversarial checks located it in the Board of Supervisors agenda for July 28 2026, and it was then confirmed by hand in the agenda PDF. The row now reads filed, late, and buried. We record the error here on purpose. It is the exact failure this site's method exists to prevent, and the method caught it before a reader did.

If you can show that anything listed as missing does exist, that is the correction we most want. We will publish it as prominently as the claim it corrects.

What this site does not claim

Sources

Every obligation cites the ordinance that creates it, and every deadline shows how it was derived. The primary sources are the San Francisco Municipal Code, ordinance PDFs from the Clerk of the Board, the sf.gov content API, department websites, commission agenda archives, and the California Penal Code for the Civil Grand Jury response clocks. The project repository holds the full research notes, dead ends included.

This site is independent and is not affiliated with the City and County of San Francisco. Source code and data: github.com/ricardodreyes/sf-equity-tracker.