Pre-Go-Live Setup Checklist
Complete every item below before running acceptance tests. Your progress is saved automatically in this browser.
Airtable
Cal.com
OpenSign
Granola
Critical Mentions
Slack
Airtable Tables
| Table | What it's for | Filled by |
|---|---|---|
| Storytellers | Master record for every storyteller — bio, demographics, district, vetting and release status, contact info | Automation + staff |
| Sourcing Pipeline | Incoming leads before they become storytellers — Cal.com bookings, Critical Mentions hits, manual referrals | Automation + staff |
| Vetting Log | Record of every vetting check — LexisNexis, social media review, findings, outcome | Staff |
| Partner Requests | Inbound requests from partner orgs for storyteller matches — issue area, district, media tier, deadline | Staff |
| Press Pipeline | Active press pitches — outlet, reporter, pitch status, interview date, media prep links | Staff |
| Products & Lands | Completed placements — publication, date, URL, content type, audience reach | Staff |
| Retention Check-ins | Scheduled check-ins to keep storytellers engaged — due date, status, updated issue areas | Automation + staff |
| PII Review Queue | Demographic suggestions (and any flagged content) queued for staff to approve, redact, or discard before saving | Automation; resolved by staff |
| Config | System-level settings — used by automations, not for day-to-day editing | Tech |
| Goals Tracker | Per-district sourcing targets vs. live actuals — storytellers, issues, and press lands, refreshed nightly | Automation + staff |
| Donor KPIs | Program KPI snapshot for funders — reach, activation, unique storytellers used | Staff |
| Associates | Team directory — email, Slack, Cal.com link — powers routing and Herald @-mentions | Staff |
| Distribution Projects | Op-eds, LTEs, and other owned content tied to a storyteller | Staff |
| Photo Submissions | Storyteller photo uploads from the form, matched back to records | Automation + staff |
| Partner Tracker | Partner organizations and their engagement history | Staff |
| Feedback | POC acceptance-testing submissions from this dashboard | Staff |
Slack Channels
- New Cal.com intake booking
- Release form sent / signed
- Release form follow-up reminders sent
- ⚠️ PII review required
- New Critical Mentions leads added
- Inbound SMS from a storyteller
- Lambda errors
- Cron job failures
- API error rate alerts
Automations at a Glance
Key Status Values
unsigned — not yet sent
sent — awaiting signature
signed — complete
expired — lapsed, resend needed
pending — not yet vetted
approved — cleared
flagged — issue found
hold — paused, check back
new — just arrived
in_outreach — contacted
no_response — no reply yet
converted — became storyteller
declined — passed
pending — awaiting staff review
approved — ok to use
redacted — used with edits
discarded — do not use
Tools & What They Do
Goals & KPIs
Sourcing goals by district (Sage's target: 2 storytellers per priority issue per district) measured against the current storyteller bank, plus the donor KPI set. Snapshot as of July 15, 2026 — regenerated on demand.
Sourcing goals by district
cell = # storytellers · target 2 · met 1 0| District | # storytellers | Medicaid | SNAP | ePTC | Tariffs | Utilities |
|---|---|---|---|---|---|---|
| AZ-01 | 8 | 4 | 0 | 2 | 0 | 1 |
| AZ-02 | 3 | 1 | 0 | 0 | 1 | 3 |
| AZ-06 | 8 | 6 | 4 | 2 | 0 | 2 |
| CO-03 | 1 | 1 | 0 | 0 | 0 | 0 |
| CO-05 | 2 | 0 | 0 | 0 | 0 | 1 |
| CO-08 | 11 | 9 | 1 | 2 | 0 | 2 |
| IA-01 | 10 | 6 | 3 | 3 | 2 | 3 |
| IA-02 | 1 | 0 | 0 | 1 | 1 | 1 |
| IA-03 | 14 | 8 | 5 | 5 | 6 | 3 |
| MI-04 | 6 | 0 | 0 | 0 | 1 | 4 |
| MI-07 | 10 | 3 | 2 | 2 | 0 | 3 |
| MI-10 | 9 | 5 | 0 | 2 | 0 | 3 |
| NC-11 | 8 | 2 | 0 | 0 | 0 | 0 |
| OH-07 | 3 | 0 | 0 | 1 | 3 | 3 |
| OH-10 | 2 | 2 | 0 | 0 | 2 | 2 |
| OH-15 | 2 | 0 | 0 | 0 | 0 | 2 |
| PA-01 | 6 | 3 | 2 | 0 | 2 | 2 |
| PA-07 | 12 | 6 | 2 | 4 | 3 | 6 |
| PA-08 | 13 | 4 | 4 | 7 | 2 | 9 |
| PA-10 | 11 | 4 | 0 | 1 | 1 | 1 |
| TX-15 | 0 | 0 | 0 | 0 | 0 | 0 |
| TX-23 | 0 | 0 | 0 | 0 | 0 | 0 |
| TX-35 | 0 | 0 | 0 | 0 | 0 | 0 |
| WI-01 | 5 | 3 | 4 | 1 | 1 | 2 |
| WI-03 | 17 | 6 | 6 | 4 | 6 | 3 |
Donor KPIs
| Metric | Value |
|---|---|
| Reach — traditional media lands | ≈ 34.7M 2026 YTD · press lands with a reach value (partial) |
| Reach — new/digital media | ≈ 5.2M 2026 YTD (partial) |
| $ behind earned media lands | — — only 8 lands have ad spend; source too sparse to total |
| Unique storytellers landed with press | 20 2026 YTD |
| Unique storytellers used by digital | 20 2026 YTD |
| Unique storytellers used by partners | — — needs Sage's org-classification rule |
| Unique storytellers used by political entities (candidates, PACs, American Bridge, Porchlight) | — — needs Sage's org rule |
| Storytellers activated | 38 2026 YTD |
| Storytellers with multiple product types | 12 2026 YTD |
Reading it: each cell is the count of storytellers in that district tagged with that issue; green = target of 2 met, amber = 1, red = 0. TX-15/23/35 have no storytellers yet — a real sourcing gap. Donor KPIs (reach, $ behind lands, unique storytellers landed) stay "pending" until storyteller ↔ product/land links exist and Sage confirms the counting rule; then they compute here too.
System Overview
The technology platform behind the CAP/CAPAF Storytelling Program — automating the storyteller lifecycle from sourcing through vetting, onboarding, distribution, and impact tracking, plus a partner-access layer. A one-page map of what's inside and what it does. 141 commits since June 5, 2026.
Architecture
All secrets in one AWS Secrets Manager entry · env-gated poc/prod (SMS + email dry-run until go-live).
What it does
Sourcing & Intake
Cal.com bookings create sourcing leads and self-assign an associate; converted leads become storyteller records; media leads flow in from hourly Critical Mentions scanning + Claude classification.
calcom_intake · lead_conversion_sync · critical_mentions_pollVetting
AI surfaces reputational concerns from associate-gathered findings as advisory notes — human-in-loop, never auto-deciding. Re-vetting alerts and Comprehend PII scanning included.
vetting_analysis · revetting_alerts · comprehend_scannerOnboarding
Welcome email with the onboarding-form link; Google-Form responses sync photos, demographics, and interests onto records; OpenSign release-form events update signing status.
onboarding_email · onboarding_form_sync · opensign_webhookDistribution — Herald
A conversational Slack bot: @-mention it to log a press pitch, a result, a land, or request a partner match. It reads the thread, plans the turn, writes the record, and pings the owning associate.
slack_events · slack_worker · claude_clientPartner Access
AI-ranked storyteller matching for partner requests (eligibility + geography filtered, issues ranked semantically) and pasted-request → outreach-draft generation.
storyteller_match · partner_outreach_draftReporting & Impact
Impact scoring per storyteller; nightly per-district goal actuals (storytellers, issues, press lands) behind the Goals & KPIs dashboard; donor KPI snapshots; retention check-ins.
impact_scoring · goals_actuals · retention_checkinsStack
How to read this. Counts are live from the repository (7,930 Python LOC across app + tests; 126 tests green). Environment is poc — SMS and email stay in dry-run until the production cutover. For per-feature status and ownership, see the Feature Status tab.
Operational Cost
What it costs to run the platform, by seat and by service. Modeled for 3 users (the two current associates + one planned hire). Slack and the EC2 host are provided through the shared IT CORE / DIGITAL CORE offerings, so they carry no marginal cost here; AWS is a usage estimate.
Per-seat licenses — scale with team size
| Platform | Annual / user | 3 users |
|---|---|---|
| Airtable | $500 | $1,500 |
| Critical Mentions | $800 | $2,400 |
| Cal.com | $150 | $450 |
| Granola | $150 | $450 |
| Per-user subtotal | $1,600 | $4,800 |
Platform & account costs — flat, regardless of team size
| Item | Annual | Notes |
|---|---|---|
| AWS platform | ~$720 | est. ~$60/mo — Bedrock (Claude Sonnet 4.5), SMS, Secrets, SES, API Gateway |
| OpenSign | $150 | flat account |
| Slack | $0 | baked in IT CORE offering |
| EC2 host | $0 | baked in DIGITAL CORE offering |
| Fixed subtotal | $870 |
Total by team size
| Team size | Per year | Per month |
|---|---|---|
| 3 users (today) | $5,670 | $473 |
| 4 users | $7,270 | $606 |
| 5 users | $8,870 | $739 |
| 6 users | $10,470 | $873 |
Efficiency & efficacy gained
Baseline today: Google Alerts arriving by email, and everything else done by hand — reading and triaging alerts, typing leads, tracking forms, logging pitches, counting KPIs. The platform runs that flow end to end. Estimated reclaimed staff time below.
Where the time goes — manual today vs. reclaimed
| Flow | Manual now (hr/wk) | Reclaimed (hr/wk) |
|---|---|---|
| Media monitoring & lead triage (Google Alerts → read, judge, enter) | 6.0 | 5.0 |
| Interview notes → fields + demographics | 3.0 | 2.0 |
| Partner matching + outreach drafts | 3.0 | 2.0 |
| Press pipeline logging (pitch / result / land) | 2.5 | 1.7 |
| Reporting · KPIs · goals counting | 2.5 | 2.0 |
| Vetting logging + re-vet flags (AI assist; staff still decide) | 2.5 | 1.0 |
| Onboarding email + form sync + photos | 2.0 | 1.6 |
| Intake booking → record + assignment | 1.5 | 1.3 |
| Release-form tracking + reminders | 1.5 | 1.2 |
| Lead → storyteller conversion (re-typing) | 1.0 | 0.9 |
| Retention check-in tracking | 1.0 | 0.7 |
| Total | ~28.5 | ~19.4 |
Efficacy — better outcomes, not just faster
- Coverage. Scans ~90 news items every hour, around the clock, AI-scoring each — vs. a person skimming Google Alerts a few times a day. Leads that used to slip through are now caught.
- Speed. Article → scored lead in the pipeline in ~5 minutes, any hour — vs. hours-to-next-day by hand.
- Nothing dropped. Every booking, signature, pitch, and land is logged the moment it happens; unsigned forms and overdue re-vets flag themselves.
- Better matches. Ranks 800+ storytellers by issue and geography instantly, surfacing people a manual search would miss.
- Judgment preserved. AI suggests (concerns, demographics, matches); staff always decide — speed without losing the human call.
Assumptions. Seat prices are the annual list rates you provided (Airtable $500, Critical Mentions $800, Cal.com $150, Granola $150 per user/yr; OpenSign $150/yr flat). AWS is an estimate — most of it is Bedrock for Critical Mentions, which batches 50 items per call (~1,440 calls/mo, roughly constant regardless of team size). Per-storyteller figure uses the current 824 storytellers. Slack and EC2 excluded as shared-CORE services. Efficiency figures are estimates of team-wide manual hours at current volume, valued at an assumed ~$40/hr loaded labor rate over 50 working weeks — adjust the rate or hours and the value scales linearly.