C12 Business Forums · Data sweep

What the prototypes claim, and what C12 can actually supply

Every concrete number, name and label shown across the two prototypes, checked against the Rails schema. Three answers: it is in the schema, it is derivable from what is there, or C12 would have to build it.

21 September 2026 · read from db/schema.rb — 81 tables · and the models behind them
Assessment iOS · Presence iOS · The work Android Data sweep
Why this exists. Three times in review, a screen turned out to show data C12 does not hold — a meeting agenda, a widget repeating that agenda, and the CORE presentation drawn as a live session. Each was caught by a person reading carefully. This is the systematic version, so the fourth one does not reach the client.

Twenty of the thirty-two claims are already real. Five more are a query away. Seven are not there, and one of those seven is worth building on its own merits.
◆

Every claim, checked

32 claims · 20 real · 5 derivable · 7 missing

“In the schema” means the column exists today. “Derivable” means the inputs exist and a query does not. “Not in C12” means the data would have to be created.

ClaimWhere it appearsVerdictSource
Forum name — “CEO Forum · San Diego”every sceneIn the schemaforums.name, forums.location
Venue and addresswidgets, Wallet, notificationIn the schemaforums.venue, meetings.location
Meeting date and start timewidgets, pass, Live ActivityIn the schemameetings.date, forums.time, meeting_day, meeting_week
“11 of 12 attending”Live Activity, widgetIn the schemameeting_members.attended
Who presents their CORE at a meetingavailable, not yet usedIn the schemameetings.core_business_presenter
Post-meeting take-aways and a ratingavailable, not yet usedIn the schemameeting_members.take_aways, rating, notes
Chair namedashboardIn the schemaforum_chairs → chairs
Member count and avatarsdashboardIn the schemamemberships, members
“12 replies”discussion, dashboardIn the schematopics.responses_count
Unread counts and tab badgestab bar, notificationsIn the schemanoticed_notifications.read_at / seen_at
CORE completion — 7 of 12concept 13, widgetIn the schemacompletion_percentage, components.marked_complete
Key questions carried forward, with category and timelineconcept 13In the schemaprevious_key_questions, KeyQuestion::CATEGORIES, TIMELINES
Five Economic Value Add figuresscan sceneIn the schemaCBPComponents::FinancialManagement → economic_value_add
Attaching the scanned statementsscan sceneIn the schemahas_many_attached :company_financials
“Every section is encrypted”concept 13In the schemaencrypts :encrypted_data, and Todo encrypts :title
Balance Wheel, 12 dimensions, monthlyboard referenceIn the schemasnapshots — walk_with_god, marriage, fitness…
A spouse by name — “Laura”key question, voice noteIn the schemamembers.spouse
Push deliverynotificationsIn the schemanotification_tokens, Firebase, urlStack routing
Monthly curriculumcurriculum scenesIn the schemacurriculums.month, resource_attachments
“Try again” on a todoavailable, not yet usedIn the schemaTodo#defer! — duplicates it into next month
“Presenting Thu 14 May”concept 13DerivableJoin meetings.core_business_presenter to meetings.date. No query exists yet, but the columns do.
“24 min from your office”widget, passDerivablemembers.address + meetings.location, distance from MapKit. C12 stores both ends.
“Completed 2 Feb” on a sectionconcept 13Derivablemarked_complete is a boolean; the date would come from updated_at, which is approximate.
“2 due before the meeting”widgetDerivabletodos.due_month for the current month. True as a month count — see below.
“1 still open”Live Activity, widgetDerivabletodos.completed_at is null. Straightforward.
A session-by-session running orderLive Activity, widget — both fixedNot in C12No agenda, sessions or timings table. meetings has one presenter string and that is all. The single biggest gap.
Todo due dates — “Due Mon 5 Oct”todos, Reminders sceneNot in C12todos.due_month is month granularity, defaulting to next month. A day-level due date does not exist.
Curriculum read or listen progress — “36%”curriculum scenes, dashboardNot in C12The schema has exactly one read_at, on notifications. Nothing tracks progress through a curriculum.
Curriculum audio and duration — “11 min left”curriculum, CarPlayNot in C12resources has title, description and kind. No audio attachment, no duration, no resume point.
A per-discussion read position“Catch me up”Not in C12Notifications are read/unread; a thread has no last-read marker, so “since you last read” cannot be computed.
Meeting end time — “ends 3:00 PM”Live ActivityNot in C12meetings has a date and forums a start time. No duration or end.
“Doors 7:45”widgetNot in C12No arrive-by field. It would be a convention, not data.
+

Three things C12 already stores and nothing uses

Found during the sweep

The CORE presenter

  • meetings.core_business_presenter records who presents at each meeting. That is most of an agenda already — one named slot per meeting — and it is the one session anybody plans around.
  • It makes the Live Activity honest without building anything: “CORE presentation — Dave Whitfield” is a column, not an invention.

Take-aways and a rating

  • meeting_members has take_aways, rating and notes per attendee per meeting.
  • That is the destination the voice-note concept was looking for. Two minutes of speech after a meeting already has a field to land in.

“Try again”

  • Todo#defer! duplicates a todo into next month. It is the button in the App Store screenshot, and it is a C12-specific idea worth showing.
  • Because due_month is monthly, deferring is the native verb — not snoozing to a date.
→

What to do about the seven

Fix, build, or drop
MissingDecision
Session-by-session agendaBuild it, and pitch it. It unlocks the flagship Live Activity and it is the Chair’s job today done on paper. In the meantime the prototypes show the presenter, attendance and time, which are real.
Todo due datesFix the prototypes. Say “due in March”, not “due Monday 16 March”. If day-level dates are wanted, that is a schema change worth its own conversation.
Curriculum progressBuild it — it is small. One table, member plus resource plus position. Without it there is no resume point, which is most of the value of carrying the reading into the car.
Curriculum audio and durationDepends on the answer to “read it to me”. If that lives outside this app, the media session wraps whatever it already produces. Worth one question to the team.
Per-discussion read positionFix the framing. “Catch me up” can summarise the whole thread rather than “since you last read”. Same feature, no new data.
Meeting end timeFix the prototypes. Show elapsed rather than remaining, or add a duration column — a one-line migration.
“Doors 7:45”Drop it. A nice touch with nothing behind it.
Read from /Users/dallas/Development/c12/c12_core — db/schema.rb and the models in app/models. Every verdict cites a column or a method that was opened, not inferred.

Companion to the assessment and the three design boards.