File size: 61,814 Bytes
3d16fe6
896453f
 
1f7780e
896453f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fcf298e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<!doctype html><html lang=en dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-development/integration-status" data-has-hydrated=false><head><meta charset=UTF-8><meta name=generator content="Docusaurus v3.10.0"><title data-rh=true>βœ… Integration Status Summary | Open Navigator</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"/><meta data-rh=true property=og:image content=https://www.communityone.com/img/docusaurus-social-card.jpg /><meta data-rh=true name=twitter:image content=https://www.communityone.com/img/docusaurus-social-card.jpg /><meta data-rh=true property=og:url content=https://www.communityone.com/docs/development/integration-status /><meta data-rh=true property=og:locale content=en /><meta data-rh=true name=docusaurus_locale content=en /><meta data-rh=true name=docsearch:language content=en /><meta data-rh=true name=keywords content="civic engagement, policy tracking, meeting minutes, nonprofit tracking, municipal government, advocacy, open data, local government"/><meta data-rh=true property=og:type content=website /><meta data-rh=true property=og:site_name content="Open Navigator"/><meta data-rh=true name=twitter:card content=summary_large_image /><meta data-rh=true name=docusaurus_version content=current /><meta data-rh=true name=docusaurus_tag content=docs-default-current /><meta data-rh=true name=docsearch:version content=current /><meta data-rh=true name=docsearch:docusaurus_tag content=docs-default-current /><meta data-rh=true property=og:title content="βœ… Integration Status Summary | Open Navigator"/><meta data-rh=true name=description content="Quick Answer to Your Question"/><meta data-rh=true property=og:description content="Quick Answer to Your Question"/><link data-rh=true rel=icon href=/img/favicon.ico /><link data-rh=true rel=canonical href=https://www.communityone.com/docs/development/integration-status /><link data-rh=true rel=alternate href=https://www.communityone.com/docs/development/integration-status hreflang=en /><link data-rh=true rel=alternate href=https://www.communityone.com/docs/development/integration-status hreflang=x-default /><script data-rh=true type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","item":"https://www.communityone.com/docs/for-developers","name":"Developers & Technical Users","position":1},{"@type":"ListItem","item":"https://www.communityone.com/docs/development/integration-status","name":"βœ… Integration Status Summary","position":2}]}</script><link rel=alternate type=application/rss+xml href=/blog/rss.xml title="Open Navigator RSS Feed"><link rel=alternate type=application/atom+xml href=/blog/atom.xml title="Open Navigator Atom Feed"><link rel=preconnect href=https://www.google-analytics.com><link rel=preconnect href=https://www.googletagmanager.com><script async src="https://www.googletagmanager.com/gtag/js?id=G-5EQV815915"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-5EQV815915",{anonymize_ip:!0})</script><link rel=stylesheet href=/assets/css/styles.c89d6b2d.css /><script src=/assets/js/runtime~main.c8fa085e.js defer></script><script src=/assets/js/main.6e24e536.js defer></script></head><body><svg style="display: none;"><defs>
<symbol id=theme-svg-external-link viewBox="0 0 24 24"><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme-7e9")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><link rel=preload as=image href=/img/communityone_logo.svg /><script type=application/ld+json>{"@context":"https://schema.org","@type":"Organization","address":{"@type":"PostalAddress","addressCountry":"US","addressLocality":"Tuscaloosa","addressRegion":"AL","postalCode":"35406","streetAddress":"5617 Lakeridge Court"},"contactPoint":{"@type":"ContactPoint","availableLanguage":["English"],"contactType":"Customer Service","email":"johnbowyer@communityone.com"},"description":"Track 90,000+ jurisdictions, 1.8M nonprofits, and analyze meeting minutes with AI. The open path to everything local.","email":"johnbowyer@communityone.com","legalName":"CommunityOne","logo":"https://www.communityone.com/img/communityone_logo.svg","name":"CommunityOne","sameAs":["https://www.facebook.com/communityone","https://www.instagram.com/communityone","https://twitter.com/communityone","https://www.linkedin.com/company/communityone","https://www.youtube.com/@communityone","https://discord.gg/communityone","https://github.com/getcommunityone/open-navigator"],"url":"https://www.communityone.com"}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"WebSite","alternateName":"CommunityOne Open Navigator","description":"AI-powered civic engagement platform tracking jurisdictions, nonprofits, and government meetings","name":"Open Navigator","potentialAction":{"@type":"SearchAction","query-input":"required name=search_term_string","target":{"@type":"EntryPoint","urlTemplate":"https://www.communityone.com/search?q={search_term_string}"}},"url":"https://www.communityone.com"}</script><script type=application/ld+json>{"@context":"https://schema.org","@type":"SoftwareApplication","aggregateRating":{"@type":"AggregateRating","ratingCount":"1","ratingValue":"5"},"applicationCategory":"BusinessApplication","description":"Track 90,000+ jurisdictions, 1.8M nonprofits, and analyze meeting minutes with AI","featureList":["Track 90,000+ jurisdictions","Monitor 1.8M nonprofits","Analyze meeting minutes","Legislative bill tracking","Campaign finance data"],"name":"Open Navigator","offers":{"@type":"Offer","price":"0","priceCurrency":"USD"},"operatingSystem":"Web","screenshot":"https://www.communityone.com/img/docusaurus-social-card.jpg","softwareVersion":"1.0.0"}</script><div role=region aria-label="Skip to main content"><a class=skipToContent_fXgn href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="theme-layout-navbar navbar navbar--fixed-top"><div class=navbar__inner><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a href=https://www.communityone.com target=_self rel="noopener noreferrer" class=navbar__brand><div class=navbar__logo><img src=/img/communityone_logo.svg alt="CommunityOne Logo" class="themedComponent_mlkZ themedComponent--light_NVdE"/><img src=/img/communityone_logo.svg alt="CommunityOne Logo" class="themedComponent_mlkZ themedComponent--dark_xIcU"/></div><b class="navbar__title text--truncate">Open Navigator Home</b></a><a class="navbar__item navbar__link" href=/docs/intro>Getting Started</a><a class="navbar__item navbar__link" href=/docs/for-families>Families & Individuals</a><a class="navbar__item navbar__link" href=/docs/for-advocates>Policy Makers</a><a class="navbar__item navbar__link" href=/docs/for-developers>Developers</a><a class="navbar__item navbar__link" href=/docs/data-sources/citations>Data and Terms</a><a class="navbar__item navbar__link" href=/blog>Blog</a></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href=https://github.com/getcommunityone/open-navigator-for-engagement target=_blank rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type=button disabled title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill=currentColor d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill=currentColor d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill=currentColor d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"/></svg></button></div><div class=navbarSearchContainer_Bca1></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class=docsWrapper_hBAB><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type=button></button><div class=docRoot_UBD9><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class=sidebarViewport_aRkj><div class=sidebar_njMd><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=true href=/docs/intro><span title="Getting Started" class=categoryLinkLabel_W154>Getting Started</span></a></div><ul class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/docs/intro><span title=Introduction class=linkLabel_WmDU>Introduction</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/docs/open-navigator><span title="Open Navigator" class=linkLabel_WmDU>Open Navigator</span></a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist" href=/docs/for-families><span title="Families & Individuals" class=categoryLinkLabel_W154>Families & Individuals</span></a><button aria-label="Collapse sidebar category 'Families & Individuals'" aria-expanded=true type=button class="clean-btn menu__caret"></button></div><ul class=menu__list><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/families/community-events><span title="Resources for Families" class=categoryLinkLabel_W154>Resources for Families</span></a></div><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/docs/open-navigator><span title="Getting Started with Open Navigator" class=linkLabel_WmDU>Getting Started with Open Navigator</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/docs/data-sources/citations><span title="Data and Citations" class=linkLabel_WmDU>Data and Citations</span></a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist" href=/docs/for-advocates><span title="Policy Makers & Advocates" class=categoryLinkLabel_W154>Policy Makers & Advocates</span></a><button aria-label="Collapse sidebar category 'Policy Makers & Advocates'" aria-expanded=true type=button class="clean-btn menu__caret"></button></div><ul class=menu__list><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/data-sources/overview><span title="Understanding the Data" class=categoryLinkLabel_W154>Understanding the Data</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/guides/political-economy><span title="Analysis & Strategy" class=categoryLinkLabel_W154>Analysis & Strategy</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/case-studies/tuscaloosa-complete><span title="Real-World Examples" class=categoryLinkLabel_W154>Real-World Examples</span></a></div></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--active" href=/docs/for-developers><span title="Developers & Technical Users" class=categoryLinkLabel_W154>Developers & Technical Users</span></a><button aria-label="Collapse sidebar category 'Developers & Technical Users'" aria-expanded=true type=button class="clean-btn menu__caret"></button></div><ul class=menu__list><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/quickstart><span title="Setup & Installation" class=categoryLinkLabel_W154>Setup & Installation</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/data-sources/citations><span title="Data Sources (Technical)" class=categoryLinkLabel_W154>Data Sources (Technical)</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/guides/jurisdiction-setup><span title="How-To Guides" class=categoryLinkLabel_W154>How-To Guides</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/integrations/mcp-server><span title=Integrations class=categoryLinkLabel_W154>Integrations</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false tabindex=0 href=/docs/deployment/databricks-apps><span title=Deployment class=categoryLinkLabel_W154>Deployment</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role=button aria-expanded=true tabindex=0 href=/docs/development/database-setup><span title=Development class=categoryLinkLabel_W154>Development</span></a></div><ul class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/database-setup><span title="Database Setup & Stats Verification" class=linkLabel_WmDU>Database Setup & Stats Verification</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/events-naming-migration><span title="File Migration to Events Naming Convention" class=linkLabel_WmDU>File Migration to Events Naming Convention</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/adding-data-sources><span title="Adding New Data Sources" class=linkLabel_WmDU>Adding New Data Sources</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/api-logging-errors><span title="API Logging & Error Handling Implementation" class=linkLabel_WmDU>API Logging & Error Handling Implementation</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/openstates-integration><span title="OpenStates Integration & Contribution Opportunities" class=linkLabel_WmDU>OpenStates Integration & Contribution Opportunities</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/real-time-statistics><span title="Real-Time Statistics with Geographic Filtering" class=linkLabel_WmDU>Real-Time Statistics with Geographic Filtering</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/schema-migration-summary><span title="Schema Migration Summary" class=linkLabel_WmDU>Schema Migration Summary</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/terminal-corruption-prevention><span title="Terminal Corruption Prevention" class=linkLabel_WmDU>Terminal Corruption Prevention</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/county-data-status><span title="County Search and Aggregation - Status Summary" class=linkLabel_WmDU>County Search and Aggregation - Status Summary</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/intel-optimization><span title="DuckDB + Intel Arc Optimization" class=linkLabel_WmDU>DuckDB + Intel Arc Optimization</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/dashboard-redesign><span title="React Dashboard Redesign Summary" class=linkLabel_WmDU>React Dashboard Redesign Summary</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/docs-migration><span title="Documentation Migration Summary" class=linkLabel_WmDU>Documentation Migration Summary</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/port-guide><span title="🚨 CRITICAL: Which Port to Use?" class=linkLabel_WmDU>🚨 CRITICAL: Which Port to Use?</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/react-refactoring><span title="React + FastAPI Databricks App Refactoring" class=linkLabel_WmDU>React + FastAPI Databricks App Refactoring</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/readme-migration><span title="README Migration Summary" class=linkLabel_WmDU>README Migration Summary</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/refactoring-summary><span title="✨ React + FastAPI Databricks App - Complete Refactoring Summary" class=linkLabel_WmDU>✨ React + FastAPI Databricks App - Complete Refactoring Summary</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/changelog><span title="Changelog - Jurisdiction Discovery System" class=linkLabel_WmDU>Changelog - Jurisdiction Discovery System</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/enhancements><span title="βœ… Enhancement Complete: Official Data Sources Integration" class=linkLabel_WmDU>βœ… Enhancement Complete: Official Data Sources Integration</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current=page tabindex=0 href=/docs/development/integration-status><span title="βœ… Integration Status Summary" class=linkLabel_WmDU>βœ… Integration Status Summary</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/migration-v2><span title="βœ… Migration Complete: Pattern-Based Discovery v2.0" class=linkLabel_WmDU>βœ… Migration Complete: Pattern-Based Discovery v2.0</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class=menu__link tabindex=0 href=/docs/development/new-capabilities><span title="πŸŽ‰ NEW CAPABILITIES SUMMARY" class=linkLabel_WmDU>πŸŽ‰ NEW CAPABILITIES SUMMARY</span></a></ul></ul></ul></nav></div></div></aside><main class=docMainContainer_TBSr><div class="container padding-top--md padding-bottom--lg"><div class=row><div class="col docItemCol_VOVn"><div class=docItemContainer_Djhp><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label=Breadcrumbs><ul class=breadcrumbs><li class=breadcrumbs__item><a aria-label="Home page" class=breadcrumbs__link href=/><svg viewBox="0 0 24 24" class=breadcrumbHomeIcon_YNFT><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill=currentColor /></svg></a><li class=breadcrumbs__item><a class=breadcrumbs__link href=/docs/for-developers><span>Developers & Technical Users</span></a><li class=breadcrumbs__item><span class=breadcrumbs__link>Development</span><li class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link>βœ… Integration Status Summary</span></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type=button class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>βœ… Integration Status Summary</h1></header>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=quick-answer-to-your-question>Quick Answer to Your Question<a href=#quick-answer-to-your-question class=hash-link aria-label="Direct link to Quick Answer to Your Question" title="Direct link to Quick Answer to Your Question" translate=no>​</a></h2>
<table><thead><tr><th>Source<th>Status<th>Video URLs?<th>Files Created<tbody><tr><td><strong>MeetingBank</strong><td>βœ… <strong>NOW INTEGRATED</strong><td>βœ… <strong>YES - YouTube/Vimeo/Archive.org</strong><td>Updated: <code>discovery/meetingbank_ingestion.py</code><tr><td><strong>City Scrapers / Documenters.org</strong><td>βœ… <strong>NOW INTEGRATED</strong><td>βœ… <strong>YES - Granicus β†’ YouTube</strong><td>Created: <code>discovery/city_scrapers_urls.py</code><tr><td><strong>Open States</strong><td>βœ… <strong>NOW INTEGRATED</strong><td>βœ… <strong>YES - YouTube channels</strong><td>Created: <code>discovery/openstates_sources.py</code></table>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=1-meetingbank---updated->1. MeetingBank - UPDATED βœ…<a href=#1-meetingbank---updated- class=hash-link aria-label="Direct link to 1. MeetingBank - UPDATED βœ…" title="Direct link to 1. MeetingBank - UPDATED βœ…" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=what-changed>What Changed:<a href=#what-changed class=hash-link aria-label="Direct link to What Changed:" title="Direct link to What Changed:" translate=no>​</a></h3>
<p><strong>Before</strong>: We had MeetingBank transcripts but weren't extracting video URLs<br/>
<strong>Now</strong>: Full video URL extraction from the <code>urls</code> dictionary</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=new-function>New Function:<a href=#new-function class=hash-link aria-label="Direct link to New Function:" title="Direct link to New Function:" translate=no>​</a></h3>
<div class="language-python codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-python codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token keyword" style=color:#00009f>def</span><span class="token plain"> </span><span class="token function" style=color:#d73a49>extract_video_urls_from_instance</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">instance</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"> </span><span class="token builtin">dict</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"> </span><span class="token operator" style=color:#393A34>-</span><span class="token operator" style=color:#393A34>></span><span class="token plain"> Dict</span><span class="token punctuation" style=color:#393A34>[</span><span class="token builtin">str</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token builtin">str</span><span class="token punctuation" style=color:#393A34>]</span><span class="token punctuation" style=color:#393A34>:</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">    </span><span class="token triple-quoted-string string" style=color:#e3116c>"""</span><br/></div><div class=token-line style=color:#393A34><span class="token triple-quoted-string string" style=color:#e3116c>    Extract YouTube/Vimeo URLs from MeetingBank's 'urls' dictionary.</span><br/></div><div class=token-line style=color:#393A34><span class="token triple-quoted-string string" style=color:#e3116c>    </span><br/></div><div class=token-line style=color:#393A34><span class="token triple-quoted-string string" style=color:#e3116c>    Extracts:</span><br/></div><div class=token-line style=color:#393A34><span class="token triple-quoted-string string" style=color:#e3116c>    - urls['youtube_id'] -> https://www.youtube.com/watch?v=ID</span><br/></div><div class=token-line style=color:#393A34><span class="token triple-quoted-string string" style=color:#e3116c>    - urls['vimeo_id'] -> https://vimeo.com/ID</span><br/></div><div class=token-line style=color:#393A34><span class="token triple-quoted-string string" style=color:#e3116c>    - urls['archive_url'] -> https://archive.org/details/...</span><br/></div><div class=token-line style=color:#393A34><span class="token triple-quoted-string string" style=color:#e3116c>    """</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=what-you-get>What You Get:<a href=#what-you-get class=hash-link aria-label="Direct link to What You Get:" title="Direct link to What You Get:" translate=no>​</a></h3>
<ul>
<li class=""><strong>1,366 meetings</strong> with video URLs</li>
<li class=""><strong>YouTube videos</strong> (most meetings)</li>
<li class=""><strong>Vimeo videos</strong> (some meetings)</li>
<li class=""><strong>Archive.org videos</strong> (all meetings have backup)</li>
<li class=""><strong>Bronze table</strong>: <code>bronze/meetingbank_meetings</code> (updated with video URL columns)</li>
<li class=""><strong>Bronze table</strong>: <code>bronze/meetingbank_urls</code> (all URLs extracted by type)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=to-run>To Run:<a href=#to-run class=hash-link aria-label="Direct link to To Run:" title="Direct link to To Run:" translate=no>​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">cd /home/developer/projects/open-navigator</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">source venv/bin/activate</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">pip install datasets  # HuggingFace datasets library</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/meetingbank_ingestion.py</span><br/></div></code></pre></div></div>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=2-city-scrapers--documentersorg---new->2. City Scrapers / Documenters.org - NEW βœ…<a href=#2-city-scrapers--documentersorg---new- class=hash-link aria-label="Direct link to 2. City Scrapers / Documenters.org - NEW βœ…" title="Direct link to 2. City Scrapers / Documenters.org - NEW βœ…" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=what-we-built>What We Built:<a href=#what-we-built class=hash-link aria-label="Direct link to What We Built:" title="Direct link to What We Built:" translate=no>​</a></h3>
<p>Complete integration that clones City Scrapers repos and extracts URLs from spider files.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=file-discoverycity_scrapers_urlspy>File: <code>discovery/city_scrapers_urls.py</code><a href=#file-discoverycity_scrapers_urlspy class=hash-link aria-label="Direct link to file-discoverycity_scrapers_urlspy" title="Direct link to file-discoverycity_scrapers_urlspy" translate=no>​</a></h3>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=repos-covered>Repos Covered:<a href=#repos-covered class=hash-link aria-label="Direct link to Repos Covered:" title="Direct link to Repos Covered:" translate=no>​</a></h3>
<ol>
<li class=""><strong>Chicago</strong> (~100 agencies) - <a href=https://github.com/city-scrapers/city-scrapers target=_blank rel="noopener noreferrer" class="">https://github.com/city-scrapers/city-scrapers</a></li>
<li class=""><strong>Pittsburgh</strong> (~30 agencies) - <a href=https://github.com/city-scrapers/city-scrapers-pitt target=_blank rel="noopener noreferrer" class="">https://github.com/city-scrapers/city-scrapers-pitt</a></li>
<li class=""><strong>Detroit</strong> (~40 agencies) - <a href=https://github.com/city-scrapers/city-scrapers-detroit target=_blank rel="noopener noreferrer" class="">https://github.com/city-scrapers/city-scrapers-detroit</a></li>
<li class=""><strong>Cleveland</strong> (~30 agencies) - <a href=https://github.com/city-scrapers/city-scrapers-cle target=_blank rel="noopener noreferrer" class="">https://github.com/city-scrapers/city-scrapers-cle</a></li>
<li class=""><strong>Los Angeles</strong> (~50 agencies) - <a href=https://github.com/city-scrapers/city-scrapers-la target=_blank rel="noopener noreferrer" class="">https://github.com/city-scrapers/city-scrapers-la</a></li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=what-you-get-1>What You Get:<a href=#what-you-get-1 class=hash-link aria-label="Direct link to What You Get:" title="Direct link to What You Get:" translate=no>​</a></h3>
<ul>
<li class=""><strong>100-500 validated agency URLs</strong></li>
<li class=""><strong>Granicus video pages</strong> (many contain YouTube embeds)</li>
<li class=""><strong>Legistar URLs</strong> (with API access)</li>
<li class=""><strong>PDF agendas/minutes</strong> links</li>
<li class=""><strong>Bronze table</strong>: <code>bronze/city_scrapers_urls</code></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=key-functions>Key Functions:<a href=#key-functions class=hash-link aria-label="Direct link to Key Functions:" title="Direct link to Key Functions:" translate=no>​</a></h3>
<ul>
<li class=""><code>extract_start_urls_from_spider_file()</code> - Parses Python spider files for URLs</li>
<li class=""><code>extract_agency_name_from_spider()</code> - Gets agency name from spider class</li>
<li class=""><code>clone_and_extract_city_scrapers_urls()</code> - Main extraction logic</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=to-run-1>To Run:<a href=#to-run-1 class=hash-link aria-label="Direct link to To Run:" title="Direct link to To Run:" translate=no>​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">cd /home/developer/projects/open-navigator</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">source venv/bin/activate</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/city_scrapers_urls.py</span><br/></div></code></pre></div></div>
<p><strong>Note</strong>: Requires <code>git</code> command available (for cloning repos)</p>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=3-open-states---new->3. Open States - NEW βœ…<a href=#3-open-states---new- class=hash-link aria-label="Direct link to 3. Open States - NEW βœ…" title="Direct link to 3. Open States - NEW βœ…" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=what-we-built-1>What We Built:<a href=#what-we-built-1 class=hash-link aria-label="Direct link to What We Built:" title="Direct link to What We Built:" translate=no>​</a></h3>
<p>API integration that fetches jurisdiction video sources.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=file-discoveryopenstates_sourcespy>File: <code>discovery/openstates_sources.py</code><a href=#file-discoveryopenstates_sourcespy class=hash-link aria-label="Direct link to file-discoveryopenstates_sourcespy" title="Direct link to file-discoveryopenstates_sourcespy" translate=no>​</a></h3>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=api-details>API Details:<a href=#api-details class=hash-link aria-label="Direct link to API Details:" title="Direct link to API Details:" translate=no>​</a></h3>
<ul>
<li class=""><strong>Endpoint</strong>: <a href=https://v3.openstates.org/jurisdictions target=_blank rel="noopener noreferrer" class="">https://v3.openstates.org/jurisdictions</a></li>
<li class=""><strong>Free tier</strong>: 50,000 requests/month (plenty!)</li>
<li class=""><strong>Sign up</strong>: <a href=https://openstates.org/accounts/signup/ target=_blank rel="noopener noreferrer" class="">https://openstates.org/accounts/signup/</a></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=what-you-get-2>What You Get:<a href=#what-you-get-2 class=hash-link aria-label="Direct link to What You Get:" title="Direct link to What You Get:" translate=no>​</a></h3>
<ul>
<li class=""><strong>50+ state legislature YouTube channels</strong> (e.g., @CALegislature, @NYSenate)</li>
<li class=""><strong>Local council channels</strong> (expanding coverage)</li>
<li class=""><strong>Vimeo profiles</strong></li>
<li class=""><strong>Granicus portals</strong></li>
<li class=""><strong>Bronze table</strong>: <code>bronze/openstates_sources</code></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=key-functions-1>Key Functions:<a href=#key-functions-1 class=hash-link aria-label="Direct link to Key Functions:" title="Direct link to Key Functions:" translate=no>​</a></h3>
<ul>
<li class=""><code>get_jurisdictions_with_video_sources()</code> - Fetches all jurisdictions via API</li>
<li class=""><code>extract_platform_from_url()</code> - Identifies YouTube/Vimeo/Granicus</li>
<li class=""><code>get_legislative_sessions_with_videos()</code> - Session-level video URLs</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=configuration>Configuration:<a href=#configuration class=hash-link aria-label="Direct link to Configuration:" title="Direct link to Configuration:" translate=no>​</a></h3>
<p>Add to <code>.env</code>:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">OPENSTATES_API_KEY=your-key-here</span><br/></div></code></pre></div></div>
<p>Get your key free at: <a href=https://openstates.org/accounts/signup/ target=_blank rel="noopener noreferrer" class="">https://openstates.org/accounts/signup/</a></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=to-run-2>To Run:<a href=#to-run-2 class=hash-link aria-label="Direct link to To Run:" title="Direct link to To Run:" translate=no>​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">cd /home/developer/projects/open-navigator</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">source venv/bin/activate</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">export OPENSTATES_API_KEY=your-key  # or add to .env</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/openstates_sources.py</span><br/></div></code></pre></div></div>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-expected-results-after-running-all-three>πŸ“Š Expected Results (After Running All Three)<a href=#-expected-results-after-running-all-three class=hash-link aria-label="Direct link to πŸ“Š Expected Results (After Running All Three)" title="Direct link to πŸ“Š Expected Results (After Running All Three)" translate=no>​</a></h2>
<table><thead><tr><th>Source<th>URLs<th>Video Links<th>Quality<th>Bronze Table<tbody><tr><td><strong>MeetingBank</strong><td>1,366<td>βœ… YouTube/Vimeo/Archive<td>Excellent<td><code>bronze/meetingbank_urls</code><tr><td><strong>City Scrapers</strong><td>100-500<td>βœ… Granicus β†’ YouTube<td>Good<td><code>bronze/city_scrapers_urls</code><tr><td><strong>Open States</strong><td>50-100<td>βœ… YouTube channels<td>Excellent<td><code>bronze/openstates_sources</code><tr><td><strong>TOTAL</strong><td><strong>1,500-2,000</strong><td><strong>βœ… All have videos</strong><td><strong>High</strong><td>3 tables</table>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-why-video-urls-matter>🎯 Why Video URLs Matter<a href=#-why-video-urls-matter class=hash-link aria-label="Direct link to 🎯 Why Video URLs Matter" title="Direct link to 🎯 Why Video URLs Matter" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=1-transcription-ready>1. Transcription Ready<a href=#1-transcription-ready class=hash-link aria-label="Direct link to 1. Transcription Ready" title="Direct link to 1. Transcription Ready" translate=no>​</a></h3>
<ul>
<li class="">YouTube has <strong>auto-captions API</strong> (free)</li>
<li class="">Can use <strong>Whisper</strong> for high-quality transcription</li>
<li class="">Archive.org has <strong>downloadable videos</strong></li>
<li class="">Vimeo often has captions</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=2-validated-sources>2. Validated Sources<a href=#2-validated-sources class=hash-link aria-label="Direct link to 2. Validated Sources" title="Direct link to 2. Validated Sources" translate=no>​</a></h3>
<ul>
<li class="">All URLs already scraped/validated by other projects</li>
<li class="">High success rate (80-100%)</li>
<li class="">Active maintenance by civic tech community</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=3-cost--0>3. Cost = $0<a href=#3-cost--0 class=hash-link aria-label="Direct link to 3. Cost = $0" title="Direct link to 3. Cost = $0" translate=no>​</a></h3>
<ul>
<li class="">YouTube captions: FREE</li>
<li class="">Whisper (open-source): FREE</li>
<li class="">Open States API: FREE (50k requests/month)</li>
<li class="">City Scrapers: FREE (open-source)</li>
<li class="">MeetingBank: FREE (open dataset)</li>
</ul>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-run-all-three-integrations>πŸ“‹ Run All Three Integrations<a href=#-run-all-three-integrations class=hash-link aria-label="Direct link to πŸ“‹ Run All Three Integrations" title="Direct link to πŸ“‹ Run All Three Integrations" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-1-install-dependencies>Step 1: Install Dependencies<a href=#step-1-install-dependencies class=hash-link aria-label="Direct link to Step 1: Install Dependencies" title="Direct link to Step 1: Install Dependencies" translate=no>​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">cd /home/developer/projects/open-navigator</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">source venv/bin/activate</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># Install HuggingFace datasets library and requests (if not already installed)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">pip install datasets requests</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># Optional: Install loguru if you get import errors</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">pip install loguru</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-2-get-open-states-api-key-optional>Step 2: Get Open States API Key (Optional)<a href=#step-2-get-open-states-api-key-optional class=hash-link aria-label="Direct link to Step 2: Get Open States API Key (Optional)" title="Direct link to Step 2: Get Open States API Key (Optional)" translate=no>​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain"># Sign up at: https://openstates.org/accounts/signup/</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># Add to .env (create if doesn't exist):</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">echo "OPENSTATES_API_KEY=your-key-here" >> .env</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># Or edit .env manually and add:</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># OPENSTATES_API_KEY=your-actual-key</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-3-run-meetingbank-integration>Step 3: Run MeetingBank Integration<a href=#step-3-run-meetingbank-integration class=hash-link aria-label="Direct link to Step 3: Run MeetingBank Integration" title="Direct link to Step 3: Run MeetingBank Integration" translate=no>​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">cd /home/developer/projects/open-navigator</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">source venv/bin/activate</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/meetingbank_ingestion.py</span><br/></div></code></pre></div></div>
<p><strong>Expected</strong>: 1,366 meetings with video URLs loaded to Bronze layer (5 minutes)</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-4-run-city-scrapers-integration>Step 4: Run City Scrapers Integration<a href=#step-4-run-city-scrapers-integration class=hash-link aria-label="Direct link to Step 4: Run City Scrapers Integration" title="Direct link to Step 4: Run City Scrapers Integration" translate=no>​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">cd /home/developer/projects/open-navigator</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">source venv/bin/activate</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/city_scrapers_urls.py</span><br/></div></code></pre></div></div>
<p><strong>Expected</strong>: 100-500 agency URLs loaded to Bronze layer (2-5 minutes, depends on git clone speed)</p>
<p><strong>Note</strong>: Requires <code>git</code> command to be available in your PATH for cloning repos</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-5-run-open-states-integration>Step 5: Run Open States Integration<a href=#step-5-run-open-states-integration class=hash-link aria-label="Direct link to Step 5: Run Open States Integration" title="Direct link to Step 5: Run Open States Integration" translate=no>​</a></h3>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">cd /home/developer/projects/open-navigator</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">source venv/bin/activate</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/openstates_sources.py</span><br/></div></code></pre></div></div>
<p><strong>Expected</strong>: 50-100 video sources loaded to Bronze layer (1 minute)</p>
<p><strong>Note</strong>: If you don't have an Open States API key, the script will warn you but won't crash</p>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-summary>βœ… Summary<a href=#-summary class=hash-link aria-label="Direct link to βœ… Summary" title="Direct link to βœ… Summary" translate=no>​</a></h2>
<p><strong>YES</strong>, we now have <strong>all three integrations</strong>:</p>
<ol>
<li class="">βœ… <strong>MeetingBank</strong> - Updated to extract YouTube/Vimeo/Archive.org URLs from urls dictionary</li>
<li class="">βœ… <strong>City Scrapers</strong> - New integration clones repos and extracts spider start_urls</li>
<li class="">βœ… <strong>Open States</strong> - New integration uses API to fetch video sources</li>
</ol>
<p><strong>Total</strong>: 1,500-2,000 verified video URLs ready for transcription and analysis! πŸŽ‰</p>
<p>See <a class="" href=/docs/development/VIDEO_URL_SOURCES.md><code>docs/VIDEO_URL_SOURCES.md</code></a> for detailed analysis.</div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_WFHX"><a href=https://github.com/getcommunityone/open-navigator-for-engagement/tree/main/website/docs/development/integration-status.md target=_blank rel="noopener noreferrer" class=theme-edit-this-page><svg fill=currentColor height=20 width=20 viewBox="0 0 40 40" class=iconEdit_Z9Sw aria-hidden=true><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"/></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href=/docs/development/enhancements><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>βœ… Enhancement Complete: Official Data Sources Integration</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/docs/development/migration-v2><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>βœ… Migration Complete: Pattern-Based Discovery v2.0</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href=#quick-answer-to-your-question class="table-of-contents__link toc-highlight">Quick Answer to Your Question</a><li><a href=#1-meetingbank---updated- class="table-of-contents__link toc-highlight">1. MeetingBank - UPDATED βœ…</a><ul><li><a href=#what-changed class="table-of-contents__link toc-highlight">What Changed:</a><li><a href=#new-function class="table-of-contents__link toc-highlight">New Function:</a><li><a href=#what-you-get class="table-of-contents__link toc-highlight">What You Get:</a><li><a href=#to-run class="table-of-contents__link toc-highlight">To Run:</a></ul><li><a href=#2-city-scrapers--documentersorg---new- class="table-of-contents__link toc-highlight">2. City Scrapers / Documenters.org - NEW βœ…</a><ul><li><a href=#what-we-built class="table-of-contents__link toc-highlight">What We Built:</a><li><a href=#file-discoverycity_scrapers_urlspy class="table-of-contents__link toc-highlight">File: <code>discovery/city_scrapers_urls.py</code></a><li><a href=#repos-covered class="table-of-contents__link toc-highlight">Repos Covered:</a><li><a href=#what-you-get-1 class="table-of-contents__link toc-highlight">What You Get:</a><li><a href=#key-functions class="table-of-contents__link toc-highlight">Key Functions:</a><li><a href=#to-run-1 class="table-of-contents__link toc-highlight">To Run:</a></ul><li><a href=#3-open-states---new- class="table-of-contents__link toc-highlight">3. Open States - NEW βœ…</a><ul><li><a href=#what-we-built-1 class="table-of-contents__link toc-highlight">What We Built:</a><li><a href=#file-discoveryopenstates_sourcespy class="table-of-contents__link toc-highlight">File: <code>discovery/openstates_sources.py</code></a><li><a href=#api-details class="table-of-contents__link toc-highlight">API Details:</a><li><a href=#what-you-get-2 class="table-of-contents__link toc-highlight">What You Get:</a><li><a href=#key-functions-1 class="table-of-contents__link toc-highlight">Key Functions:</a><li><a href=#configuration class="table-of-contents__link toc-highlight">Configuration:</a><li><a href=#to-run-2 class="table-of-contents__link toc-highlight">To Run:</a></ul><li><a href=#-expected-results-after-running-all-three class="table-of-contents__link toc-highlight">πŸ“Š Expected Results (After Running All Three)</a><li><a href=#-why-video-urls-matter class="table-of-contents__link toc-highlight">🎯 Why Video URLs Matter</a><ul><li><a href=#1-transcription-ready class="table-of-contents__link toc-highlight">1. Transcription Ready</a><li><a href=#2-validated-sources class="table-of-contents__link toc-highlight">2. Validated Sources</a><li><a href=#3-cost--0 class="table-of-contents__link toc-highlight">3. Cost = $0</a></ul><li><a href=#-run-all-three-integrations class="table-of-contents__link toc-highlight">πŸ“‹ Run All Three Integrations</a><ul><li><a href=#step-1-install-dependencies class="table-of-contents__link toc-highlight">Step 1: Install Dependencies</a><li><a href=#step-2-get-open-states-api-key-optional class="table-of-contents__link toc-highlight">Step 2: Get Open States API Key (Optional)</a><li><a href=#step-3-run-meetingbank-integration class="table-of-contents__link toc-highlight">Step 3: Run MeetingBank Integration</a><li><a href=#step-4-run-city-scrapers-integration class="table-of-contents__link toc-highlight">Step 4: Run City Scrapers Integration</a><li><a href=#step-5-run-open-states-integration class="table-of-contents__link toc-highlight">Step 5: Run Open States Integration</a></ul><li><a href=#-summary class="table-of-contents__link toc-highlight">βœ… Summary</a></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Documentation</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/docs/intro>Getting Started</a><li class=footer__item><a class=footer__link-item href=/docs/data-sources/citations>Citations & Data Sources</a><li class=footer__item><a class=footer__link-item href=/docs/data-sources/overview>Data Sources</a><li class=footer__item><a class=footer__link-item href=/docs/for-developers>For Developers</a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Resources</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://www.communityone.com target=_blank rel="noopener noreferrer" class=footer__link-item>Launch Open Navigator<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://github.com/getcommunityone/open-navigator-for-engagement target=_blank rel="noopener noreferrer" class=footer__link-item>GitHub<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://www.groundvue.org/ target=_blank rel="noopener noreferrer" class=footer__link-item>GroundVue (Partner)<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Community</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://www.instagram.com/getcommunityone/ target=_blank rel="noopener noreferrer" class=footer__link-item>Instagram<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://www.facebook.com/getcommunityone target=_blank rel="noopener noreferrer" class=footer__link-item>Facebook<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://x.com/getcommunityone/ target=_blank rel="noopener noreferrer" class=footer__link-item>X (Twitter)<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://www.linkedin.com/company/getcommunityone target=_blank rel="noopener noreferrer" class=footer__link-item>LinkedIn<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://www.youtube.com/@getcommunityone target=_blank rel="noopener noreferrer" class=footer__link-item>YouTube<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><li class=footer__item><a href=https://discord.gg/uH6Dytek target=_blank rel="noopener noreferrer" class=footer__link-item>Discord<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Legal</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/docs/legal/privacy-policy>Privacy Policy</a><li class=footer__item><a class=footer__link-item href=/docs/legal/terms-of-service>Terms of Service</a><li class=footer__item><a class=footer__link-item href=/docs/legal/data-provider-terms>Data Provider Terms</a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>More</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/blog>Blog</a><li class=footer__item><a href=https://github.com/getcommunityone/open-navigator-for-engagement/blob/main/LICENSE target=_blank rel="noopener noreferrer" class=footer__link-item>License (MIT)<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a></ul></div></div><div class="footer__bottom text--center"><div class=footer__copyright>Copyright Β© 2026 Community One. Built with Docusaurus.</div></div></div></footer></div></body>