Volunteer hours were never logged as they happened. This record reconstructs them from systems that
recorded a timestamp as a side effect of the work: a calendar invite, a sent email, a saved conversation,
a code commit. The reconstruction is deliberately conservative, and the assumptions are stated below so
anyone can disagree with a specific one rather than the total.
Turning timestamps into hours
Timestamps are points; work is intervals. Events are grouped into work blocks, and blocks are
merged where they overlap rather than added together. A commit pushed during the weekly
meeting is one hour of work, not two. This single rule is what keeps the total honest.
Different work has a different rhythm, so each kind of evidence gets its own idle threshold. A coding
session pauses for twenty minutes and resumes; a text exchange that goes quiet for twenty minutes is over.
One threshold for everything would either inflate the texting or shred the building.
- Building
- 30-minute idle gap, +5 min per block. Covers commits, Claude Code sessions and
claude.ai chats together, because they interleave constantly during the same piece of work.
- Texting
- 5-minute idle gap, +1 min. Deliberately tight: 78% of the gaps between texts are
under five minutes, so a burst is one conversation. A ten-minute threshold would add roughly
80 hours to the total, and was rejected as too generous.
- Writing
- Marc typed 480,168 characters to VME colleagues across 4,892
messages. A burst gap credits a 600-character message the same as “ok”, so each block is
also valued at its writing time — 125 characters a minute, multiplied by 1.8 for the rewriting that
any considered message gets. A block is worth the longer of the two measures, never the sum,
so a fast back-and-forth is never counted twice.
- Email
- 20-minute idle gap, +5 min.
- Event building
- 20-minute idle gap, +5 min.
- Calls, Zoom, calendar, in-person
- Counted at their real start and end. No inference needed —
a 47-minute call is 47 minutes.
For comparison, simply measuring from the first event of the day to the last
would have produced 13.1 hours on a sampled day against 8.8 by this
method — an overstatement of roughly 70%. That approach was rejected.
The allowances
The working estimate adds only four things to the evidenced floor. Each is a stated rule with a
rate, not a blanket multiplier applied to the total.
- +8 min
- Per VME email sent outside a substantial work block, for reading the thread and
drafting a reply. An email sent during an existing block earns nothing extra.
- +4 min
- Per board email received. Reading board mail is a COO's job, but it is not proof he
was at the keyboard, so it never enters the evidenced floor.
- Real drive time
- Round trip from Sylmar to each venue, measured by routing and adjusted for
typical Los Angeles traffic. Between 73 and 96 minutes per event.
- +3 h
- The gap on 26 August between the Disney Veterans Institute and the evening screening,
when Marc stayed out rather than driving home.
- +4 h
- Organising the August script read at Post 43 — catering, decorations and volunteers —
split across the two days before it. Marc's own tabulation, corroborated by the message thread.
Choices that push the number down
- Overlapping work is counted once, never twice. Eleven sources record the same days; the union is
what is reported.
- The texting threshold was deliberately set tight, costing roughly 80 hours against the looser reading.
- Duplicate code repositories were excluded. The project has a second clone and sixteen working
copies that share one history; counting them per folder would have inflated commits roughly tenfold.
- Received email never enters the evidenced floor — only an allowance in the estimate.
- One large general-purpose chat log was dropped despite containing 42 VME references, because
non-VME topics dominated it and no clean split was possible.
- Calls shorter than 30 seconds are dropped as missed calls rather than counted as work.
- A cancelled July event was removed from the record once the cancellation notice was found.
What this record still cannot see
Coverage is uneven, and earlier months are measured less completely than later ones. There is no phone
record before 1 March, no saved AI conversations before 22 March, no code repository before 13 April, and
no session transcripts before 20 June. February and March covered the Investiture and the start of the
restructuring.
Four categories of real work are still missing entirely, because nothing on this
machine timestamps them:
- Event setup and staffing — arriving early, running the check-in table, badges,
breakdown. Counted here only as the event's posted hours.
- Design work — event banners, social templates and flyers built in Canva and
similar tools, outside the code repositories.
- Photo and video editing — event photos, recap videos and the member mosaic banner.
- Calls placed on another line — anything routed through Zoom Phone, WhatsApp or a
second number never reaches the iPhone call history used here.
The figures in this report are therefore a floor, not a ceiling.
Where attribution is imperfect
Two sources deserve a caveat, and both are small. MembershipWorks records no author on an event, so a
handful of the 162 event-building timestamps may belong to another administrator; removing that source
entirely changes the total by about six hours. Zoom attendance for January through August was matched on
display name, because Marc usually joined without signing in; two other people named Marc on the account
were checked and excluded.
Reproducing this
Every figure here is generated from the source systems by script, with no manual entry at any point.
Re-running the extraction regenerates this page. The thresholds above are parameters: change them and
the whole record recalculates.