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.
“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.
| Claim | Where it appears | Verdict | Source |
|---|---|---|---|
| Forum name — “CEO Forum · San Diego” | every scene | In the schema | forums.name, forums.location |
| Venue and address | widgets, Wallet, notification | In the schema | forums.venue, meetings.location |
| Meeting date and start time | widgets, pass, Live Activity | In the schema | meetings.date, forums.time, meeting_day, meeting_week |
| “11 of 12 attending” | Live Activity, widget | In the schema | meeting_members.attended |
| Who presents their CORE at a meeting | available, not yet used | In the schema | meetings.core_business_presenter |
| Post-meeting take-aways and a rating | available, not yet used | In the schema | meeting_members.take_aways, rating, notes |
| Chair name | dashboard | In the schema | forum_chairs → chairs |
| Member count and avatars | dashboard | In the schema | memberships, members |
| “12 replies” | discussion, dashboard | In the schema | topics.responses_count |
| Unread counts and tab badges | tab bar, notifications | In the schema | noticed_notifications.read_at / seen_at |
| CORE completion — 7 of 12 | concept 13, widget | In the schema | completion_percentage, components.marked_complete |
| Key questions carried forward, with category and timeline | concept 13 | In the schema | previous_key_questions, KeyQuestion::CATEGORIES, TIMELINES |
| Five Economic Value Add figures | scan scene | In the schema | CBPComponents::FinancialManagement → economic_value_add |
| Attaching the scanned statements | scan scene | In the schema | has_many_attached :company_financials |
| “Every section is encrypted” | concept 13 | In the schema | encrypts :encrypted_data, and Todo encrypts :title |
| Balance Wheel, 12 dimensions, monthly | board reference | In the schema | snapshots — walk_with_god, marriage, fitness… |
| A spouse by name — “Laura” | key question, voice note | In the schema | members.spouse |
| Push delivery | notifications | In the schema | notification_tokens, Firebase, urlStack routing |
| Monthly curriculum | curriculum scenes | In the schema | curriculums.month, resource_attachments |
| “Try again” on a todo | available, not yet used | In the schema | Todo#defer! — duplicates it into next month |
| “Presenting Thu 14 May” | concept 13 | Derivable | Join meetings.core_business_presenter to meetings.date. No query exists yet, but the columns do. |
| “24 min from your office” | widget, pass | Derivable | members.address + meetings.location, distance from MapKit. C12 stores both ends. |
| “Completed 2 Feb” on a section | concept 13 | Derivable | marked_complete is a boolean; the date would come from updated_at, which is approximate. |
| “2 due before the meeting” | widget | Derivable | todos.due_month for the current month. True as a month count — see below. |
| “1 still open” | Live Activity, widget | Derivable | todos.completed_at is null. Straightforward. |
| A session-by-session running order | Not in C12 | No 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 scene | Not in C12 | todos.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, dashboard | Not in C12 | The schema has exactly one read_at, on notifications. Nothing tracks progress through a curriculum. |
| Curriculum audio and duration — “11 min left” | curriculum, CarPlay | Not in C12 | resources has title, description and kind. No audio attachment, no duration, no resume point. |
| A per-discussion read position | “Catch me up” | Not in C12 | Notifications 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 Activity | Not in C12 | meetings has a date and forums a start time. No duration or end. |
| “Doors 7:45” | widget | Not in C12 | No arrive-by field. It would be a convention, not data. |
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.meeting_members has take_aways, rating and notes per attendee per meeting.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.due_month is monthly, deferring is the native verb — not snoozing to a date.| Missing | Decision |
|---|---|
| Session-by-session agenda | Build 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 dates | Fix 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 progress | Build 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 duration | Depends 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 position | Fix the framing. “Catch me up” can summarise the whole thread rather than “since you last read”. Same feature, no new data. |
| Meeting end time | Fix 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. |
/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.