File size: 64,332 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
139
140
141
142
143
144
145
146
147
<!doctype html><html lang=en dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-integrations/localview" data-has-hydrated=false><head><meta charset=UTF-8><meta name=generator content="Docusaurus v3.10.0"><title data-rh=true>📚 LocalView Integration Guide | 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/integrations/localview /><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="📚 LocalView Integration Guide | Open Navigator"/><meta data-rh=true name=description content=Overview /><meta data-rh=true property=og:description content=Overview /><link data-rh=true rel=icon href=/img/favicon.ico /><link data-rh=true rel=canonical href=https://www.communityone.com/docs/integrations/localview /><link data-rh=true rel=alternate href=https://www.communityone.com/docs/integrations/localview hreflang=en /><link data-rh=true rel=alternate href=https://www.communityone.com/docs/integrations/localview 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/integrations/localview","name":"📚 LocalView Integration Guide","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"><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/integrations/mcp-server><span title=Integrations class=categoryLinkLabel_W154>Integrations</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/integrations/mcp-server><span title="Model Context Protocol (MCP) Server" class=linkLabel_WmDU>Model Context Protocol (MCP) Server</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/integrations/grants-gov-api><span title="Grants.gov API Integration" class=linkLabel_WmDU>Grants.gov API Integration</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/integrations/fec-political-contributions><span title="FEC Political Contributions" class=linkLabel_WmDU>FEC Political Contributions</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/integrations/fec-campaign-finance><span title="FEC Campaign Finance Integration" class=linkLabel_WmDU>FEC Campaign Finance Integration</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/integrations/dataverse-summary><span title="🎉 Harvard Dataverse Integration - Complete!" class=linkLabel_WmDU>🎉 Harvard Dataverse Integration - Complete!</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/integrations/dataverse><span title="📚 Dataverse API Integration" class=linkLabel_WmDU>📚 Dataverse API Integration</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/integrations/eboard-automated><span title="Automated eBoard Scraping Solutions" class=linkLabel_WmDU>Automated eBoard Scraping Solutions</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/integrations/eboard-cookies><span title="eBoard Cookie Extraction Guide" class=linkLabel_WmDU>eBoard Cookie Extraction Guide</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/integrations/eboard-manual><span title="eBoard Platform Manual Download Guide" class=linkLabel_WmDU>eBoard Platform Manual Download Guide</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/integrations/fec-integration-summary><span title="FEC Campaign Finance Integration - Implementation Summary" class=linkLabel_WmDU>FEC Campaign Finance Integration - Implementation 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/integrations/frontend><span title="Frontend Integration Guide" class=linkLabel_WmDU>Frontend Integration Guide</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/integrations/localview><span title="📚 LocalView Integration Guide" class=linkLabel_WmDU>📚 LocalView Integration Guide</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/integrations/overview><span title="Integration Guide: Reusing Open-Source Municipal Scraping Logic" class=linkLabel_WmDU>Integration Guide: Reusing Open-Source Municipal Scraping Logic</span></a></ul><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 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/development/database-setup><span title=Development class=categoryLinkLabel_W154>Development</span></a></div></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>Integrations</span><li class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link>📚 LocalView Integration Guide</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>📚 LocalView Integration Guide</h1></header>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=overview>Overview<a href=#overview class=hash-link aria-label="Direct link to Overview" title="Direct link to Overview" translate=no></a></h2>
<p><strong>LocalView</strong> is a Harvard University dataset containing <strong>1,000-10,000 municipality URLs</strong> with meeting videos and transcripts. It's the <strong>largest known database of municipal meeting video archives</strong>.</p>
<p><strong>Challenge</strong>: The Harvard Dataverse requires JavaScript and may have CAPTCHA verification, so we need to download the files manually.</p>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-by-step-download-instructions>Step-by-Step Download Instructions<a href=#step-by-step-download-instructions class=hash-link aria-label="Direct link to Step-by-Step Download Instructions" title="Direct link to Step-by-Step Download Instructions" translate=no></a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=1-visit-the-harvard-dataverse-website>1. Visit the Harvard Dataverse Website<a href=#1-visit-the-harvard-dataverse-website class=hash-link aria-label="Direct link to 1. Visit the Harvard Dataverse Website" title="Direct link to 1. Visit the Harvard Dataverse Website" translate=no></a></h3>
<p><strong>URL</strong>: <a href="https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/NJTBEM" target=_blank rel="noopener noreferrer" class="">https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/NJTBEM</a></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=2-navigate-to-the-files-section>2. Navigate to the Files Section<a href=#2-navigate-to-the-files-section class=hash-link aria-label="Direct link to 2. Navigate to the Files Section" title="Direct link to 2. Navigate to the Files Section" translate=no></a></h3>
<p>Once the page loads:</p>
<ol>
<li class="">Scroll down to the <strong>"Files"</strong> section</li>
<li class="">Look for downloadable CSV/TAB files with names like:<!-- -->
<ul>
<li class=""><code>municipalities.csv</code> or <code>municipalities.tab</code></li>
<li class=""><code>meetings.csv</code> or <code>meetings.tab</code></li>
<li class=""><code>videos.csv</code> or <code>videos.tab</code></li>
<li class="">Or similar naming patterns</li>
</ul>
</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=3-download-the-files>3. Download the Files<a href=#3-download-the-files class=hash-link aria-label="Direct link to 3. Download the Files" title="Direct link to 3. Download the Files" translate=no></a></h3>
<p>Click the <strong>"Download"</strong> button for each file:</p>
<ul>
<li class="">Download all CSV/TAB files related to municipalities, meetings, and videos</li>
<li class="">Save them to: <code>/home/developer/projects/open-navigator/data/cache/localview/</code></li>
</ul>
<p><strong>Expected files</strong> (names may vary):</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-text 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">data/cache/localview/</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">├── municipalities.csv     # List of municipalities with URLs</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">├── meetings.csv           # Meeting metadata</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">├── videos.csv             # Video URLs and metadata</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">└── README.txt             # Dataset documentation (if available)</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=4-expected-data-structure>4. Expected Data Structure<a href=#4-expected-data-structure class=hash-link aria-label="Direct link to 4. Expected Data Structure" title="Direct link to 4. Expected Data Structure" translate=no></a></h3>
<p>The LocalView dataset typically includes:</p>
<p><strong>Municipalities file</strong> (municipalities.csv):</p>
<ul>
<li class=""><code>municipality_name</code> - City/town name</li>
<li class=""><code>state</code> - Two-letter state code</li>
<li class=""><code>county</code> - County name</li>
<li class=""><code>population</code> - Population count</li>
<li class=""><code>website_url</code> - Official government website</li>
<li class=""><code>meeting_page_url</code> - Link to meetings/agendas page</li>
<li class=""><code>video_archive_url</code> - Link to video archive</li>
</ul>
<p><strong>Meetings file</strong> (meetings.csv):</p>
<ul>
<li class=""><code>meeting_id</code> - Unique identifier</li>
<li class=""><code>municipality_name</code> - City/town name</li>
<li class=""><code>meeting_date</code> - Date of meeting</li>
<li class=""><code>meeting_type</code> - Type (Council, Planning, etc.)</li>
<li class=""><code>video_url</code> - Direct link to video</li>
<li class=""><code>transcript_available</code> - Boolean flag</li>
<li class=""><code>transcript_url</code> - Link to transcript (if available)</li>
</ul>
<p><strong>Videos file</strong> (videos.csv):</p>
<ul>
<li class=""><code>video_id</code> - Unique identifier</li>
<li class=""><code>video_url</code> - Direct video link</li>
<li class=""><code>platform</code> - Platform (YouTube, Granicus, etc.)</li>
<li class=""><code>duration_minutes</code> - Video length</li>
<li class=""><code>has_captions</code> - Caption availability</li>
</ul>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=integration-script-usage>Integration Script Usage<a href=#integration-script-usage class=hash-link aria-label="Direct link to Integration Script Usage" title="Direct link to Integration Script Usage" translate=no></a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=after-downloading-files>After Downloading Files<a href=#after-downloading-files class=hash-link aria-label="Direct link to After Downloading Files" title="Direct link to After Downloading Files" translate=no></a></h3>
<p>Once you've downloaded the files to <code>data/cache/localview/</code>, run:</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">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"># Run the ingestion script</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/localview_ingestion.py</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=what-the-script-does>What the Script Does<a href=#what-the-script-does class=hash-link aria-label="Direct link to What the Script Does" title="Direct link to What the Script Does" translate=no></a></h3>
<ol>
<li class=""><strong>Reads downloaded CSV files</strong> from cache directory</li>
<li class=""><strong>Parses municipality data</strong> - Names, states, URLs</li>
<li class=""><strong>Extracts video URLs</strong> - Direct links to meeting videos</li>
<li class=""><strong>Identifies platforms</strong> - YouTube, Granicus, Vimeo, Archive.org</li>
<li class=""><strong>Writes to Bronze layer</strong> - <code>bronze/localview_municipalities</code> and <code>bronze/localview_videos</code></li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=expected-output>Expected Output<a href=#expected-output class=hash-link aria-label="Direct link to Expected Output" title="Direct link to Expected Output" translate=no></a></h3>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-text 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">[INFO] Loading LocalView data from cache...</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">[INFO] Found 1,247 municipalities</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">[INFO] Found 8,453 meeting videos</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">[INFO] Platforms detected:</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">  - YouTube: 3,421 videos</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">  - Granicus: 2,876 videos</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">  - Vimeo: 1,234 videos</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">  - Other: 922 videos</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">[SUCCESS] ✓ Written 1,247 municipalities to bronze/localview_municipalities</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">[SUCCESS] ✓ Written 8,453 videos to bronze/localview_videos</span><br/></div></code></pre></div></div>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=alternative-api-access-if-available>Alternative: API Access (If Available)<a href=#alternative-api-access-if-available class=hash-link aria-label="Direct link to Alternative: API Access (If Available)" title="Direct link to Alternative: API Access (If Available)" translate=no></a></h2>
<p><strong>Check if LocalView provides API access:</strong></p>
<p>Some Harvard Dataverse datasets offer API access. Try:</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"># Check for API availability</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">curl -I "https://dataverse.harvard.edu/api/datasets/:persistentId/?persistentId=doi:10.7910/DVN/NJTBEM"</span><br/></div></code></pre></div></div>
<p>If successful, we can update the script to use the API instead of manual download.</p>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=troubleshooting>Troubleshooting<a href=#troubleshooting class=hash-link aria-label="Direct link to Troubleshooting" title="Direct link to Troubleshooting" translate=no></a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=problem-cant-find-csv-files>Problem: Can't Find CSV Files<a href=#problem-cant-find-csv-files class=hash-link aria-label="Direct link to Problem: Can't Find CSV Files" title="Direct link to Problem: Can't Find CSV Files" translate=no></a></h3>
<p><strong>Solution</strong>: The files might be in TAB format. The ingestion script handles both CSV and TAB files automatically.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=problem-files-have-different-names>Problem: Files Have Different Names<a href=#problem-files-have-different-names class=hash-link aria-label="Direct link to Problem: Files Have Different Names" title="Direct link to Problem: Files Have Different Names" translate=no></a></h3>
<p><strong>Solution</strong>: Edit the <code>EXPECTED_FILES</code> dictionary in <code>discovery/localview_ingestion.py</code> to match the actual filenames.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=problem-data-format-is-different>Problem: Data Format is Different<a href=#problem-data-format-is-different class=hash-link aria-label="Direct link to Problem: Data Format is Different" title="Direct link to Problem: Data Format is Different" translate=no></a></h3>
<p><strong>Solution</strong>: Check the README.txt or dataset documentation on Harvard Dataverse. Update the column mappings in the script to match.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=problem-captcha-blocks-download>Problem: CAPTCHA Blocks Download<a href=#problem-captcha-blocks-download class=hash-link aria-label="Direct link to Problem: CAPTCHA Blocks Download" title="Direct link to Problem: CAPTCHA Blocks Download" translate=no></a></h3>
<p><strong>Solution</strong>:</p>
<ol>
<li class="">Use a web browser (not curl/wget)</li>
<li class="">Complete the CAPTCHA verification</li>
<li class="">Download files manually through the browser</li>
<li class="">Save to <code>data/cache/localview/</code></li>
</ol>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=data-quality--coverage>Data Quality & Coverage<a href=#data-quality--coverage class=hash-link aria-label="Direct link to Data Quality & Coverage" title="Direct link to Data Quality & Coverage" translate=no></a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=expected-coverage>Expected Coverage<a href=#expected-coverage class=hash-link aria-label="Direct link to Expected Coverage" title="Direct link to Expected Coverage" translate=no></a></h3>
<p>Based on the LocalView research paper:</p>
<ul>
<li class=""><strong>1,000-1,500 municipalities</strong> with verified meeting archives</li>
<li class=""><strong>5,000-10,000 meeting videos</strong> with URLs</li>
<li class=""><strong>Coverage</strong>: Major cities + medium-sized municipalities</li>
<li class=""><strong>Time range</strong>: 2015-2024 (approximately)</li>
<li class=""><strong>Focus states</strong>: CA, MA, TX, NY, FL, IL (highest coverage)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=quality-indicators>Quality Indicators<a href=#quality-indicators class=hash-link aria-label="Direct link to Quality Indicators" title="Direct link to Quality Indicators" translate=no></a></h3>
<ul>
<li class=""><strong>Academic validation</strong> - Harvard research project</li>
<li class=""><strong>Human verification</strong> - URLs manually verified</li>
<li class=""><strong>Transcript availability</strong> - Many include automated transcripts</li>
<li class=""><strong>Continuous updates</strong> - Dataset may be updated periodically</li>
</ul>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=next-steps-after-integration>Next Steps After Integration<a href=#next-steps-after-integration class=hash-link aria-label="Direct link to Next Steps After Integration" title="Direct link to Next Steps After Integration" translate=no></a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=1-combine-with-other-sources>1. Combine with Other Sources<a href=#1-combine-with-other-sources class=hash-link aria-label="Direct link to 1. Combine with Other Sources" title="Direct link to 1. Combine with Other Sources" 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"># After running LocalView ingestion</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/meetingbank_ingestion.py      # 1,366 meetings</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/city_scrapers_urls.py         # 100-500 agencies</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/openstates_sources.py         # 50+ legislatures</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"># Total: 7,000-12,000 verified URLs!</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=2-deduplicate-urls>2. Deduplicate URLs<a href=#2-deduplicate-urls class=hash-link aria-label="Direct link to 2. Deduplicate URLs" title="Direct link to 2. Deduplicate URLs" translate=no></a></h3>
<p>Create a deduplication script to merge URLs from all sources:</p>
<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 comment" style=color:#999988;font-style:italic># discovery/url_deduplication.py</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>from</span><span class="token plain"> pyspark</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">sql</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">functions </span><span class="token keyword" style=color:#00009f>import</span><span class="token plain"> col</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> count</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> first</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"></span><span class="token comment" style=color:#999988;font-style:italic># Read all source tables</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">localview </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> spark</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">read</span><span class="token punctuation" style=color:#393A34>.</span><span class="token builtin">format</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"delta"</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">load</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"bronze/localview_videos"</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">meetingbank </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> spark</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">read</span><span class="token punctuation" style=color:#393A34>.</span><span class="token builtin">format</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"delta"</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">load</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"bronze/meetingbank_meetings"</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">city_scrapers </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> spark</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">read</span><span class="token punctuation" style=color:#393A34>.</span><span class="token builtin">format</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"delta"</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">load</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"bronze/city_scrapers_urls"</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" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token comment" style=color:#999988;font-style:italic># Deduplicate by URL</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">unique_urls </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> </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">    localview</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">select</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"url"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>"platform"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>"municipality"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>"state"</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 punctuation" style=color:#393A34>.</span><span class="token plain">union</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">meetingbank</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">select</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"url"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>"platform"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>"municipality"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>"state"</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 punctuation" style=color:#393A34>.</span><span class="token plain">union</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">city_scrapers</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">select</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>"url"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>"platform"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>"municipality"</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>"state"</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 punctuation" style=color:#393A34>.</span><span class="token plain">dropDuplicates</span><span class="token punctuation" style=color:#393A34>(</span><span class="token punctuation" style=color:#393A34>[</span><span class="token string" style=color:#e3116c>"url"</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 punctuation" style=color:#393A34>)</span><span class="token plain"></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"></span><span class="token keyword" style=color:#00009f>print</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string-interpolation string" style=color:#e3116c>f"Total unique URLs: </span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>{</span><span class="token string-interpolation interpolation">unique_urls</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>.</span><span class="token string-interpolation interpolation">count</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>(</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>)</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>}</span><span class="token string-interpolation string" style=color:#e3116c>"</span><span class="token punctuation" style=color:#393A34>)</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=3-priority-scraping>3. Priority Scraping<a href=#3-priority-scraping class=hash-link aria-label="Direct link to 3. Priority Scraping" title="Direct link to 3. Priority Scraping" translate=no></a></h3>
<p>Use LocalView data to prioritize which municipalities to scrape first:</p>
<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token comment" style=color:#999988;font-style:italic>-- Find municipalities with the most videos</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>SELECT</span><span class="token plain"> municipality</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> state</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token function" style=color:#d73a49>COUNT</span><span class="token punctuation" style=color:#393A34>(</span><span class="token operator" style=color:#393A34>*</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"> </span><span class="token keyword" style=color:#00009f>as</span><span class="token plain"> video_count</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>FROM</span><span class="token plain"> bronze</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">localview_videos</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>GROUP</span><span class="token plain"> </span><span class="token keyword" style=color:#00009f>BY</span><span class="token plain"> municipality</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> state</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>ORDER</span><span class="token plain"> </span><span class="token keyword" style=color:#00009f>BY</span><span class="token plain"> video_count </span><span class="token keyword" style=color:#00009f>DESC</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>LIMIT</span><span class="token plain"> </span><span class="token number" style=color:#36acaa>100</span><br/></div></code></pre></div></div>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=documentation-links>Documentation Links<a href=#documentation-links class=hash-link aria-label="Direct link to Documentation Links" title="Direct link to Documentation Links" translate=no></a></h2>
<ul>
<li class=""><strong>Harvard Dataverse</strong>: <a href="https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/NJTBEM" target=_blank rel="noopener noreferrer" class="">https://dataverse.harvard.edu/dataset.xhtml?persistentId=doi:10.7910/DVN/NJTBEM</a></li>
<li class=""><strong>LocalView Research Paper</strong>: Search for "LocalView municipal meetings dataset" on Google Scholar</li>
<li class=""><strong>Harvard Mellon Urbanism Initiative</strong>: <a href=https://www.gsd.harvard.edu/project/localview/ target=_blank rel="noopener noreferrer" class="">https://www.gsd.harvard.edu/project/localview/</a></li>
</ul>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=expected-timeline>Expected Timeline<a href=#expected-timeline class=hash-link aria-label="Direct link to Expected Timeline" title="Direct link to Expected Timeline" translate=no></a></h2>
<table><thead><tr><th>Step<th>Time Required<th>Priority<tbody><tr><td>Download files from Harvard Dataverse<td>5-10 min<td>🔥 HIGH<tr><td>Run ingestion script<td>2-5 min<td>🔥 HIGH<tr><td>Verify data quality<td>5 min<td>🟡 MEDIUM<tr><td>Deduplication with other sources<td>10 min<td>🟡 MEDIUM</table>
<p><strong>Total time</strong>: ~30 minutes for complete integration</p>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=questions>Questions?<a href=#questions class=hash-link aria-label="Direct link to Questions?" title="Direct link to Questions?" translate=no></a></h2>
<p>If you encounter issues:</p>
<ol>
<li class="">Check the dataset documentation on Harvard Dataverse</li>
<li class="">Look at example data in the first few rows</li>
<li class="">Update column mappings in the script accordingly</li>
<li class="">Run with <code>--sample</code> flag first to test: <code>python discovery/localview_ingestion.py --sample</code></li>
</ol></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/integrations/localview.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/integrations/frontend><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>Frontend Integration Guide</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/docs/integrations/overview><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Integration Guide: Reusing Open-Source Municipal Scraping Logic</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=#overview class="table-of-contents__link toc-highlight">Overview</a><li><a href=#step-by-step-download-instructions class="table-of-contents__link toc-highlight">Step-by-Step Download Instructions</a><ul><li><a href=#1-visit-the-harvard-dataverse-website class="table-of-contents__link toc-highlight">1. Visit the Harvard Dataverse Website</a><li><a href=#2-navigate-to-the-files-section class="table-of-contents__link toc-highlight">2. Navigate to the Files Section</a><li><a href=#3-download-the-files class="table-of-contents__link toc-highlight">3. Download the Files</a><li><a href=#4-expected-data-structure class="table-of-contents__link toc-highlight">4. Expected Data Structure</a></ul><li><a href=#integration-script-usage class="table-of-contents__link toc-highlight">Integration Script Usage</a><ul><li><a href=#after-downloading-files class="table-of-contents__link toc-highlight">After Downloading Files</a><li><a href=#what-the-script-does class="table-of-contents__link toc-highlight">What the Script Does</a><li><a href=#expected-output class="table-of-contents__link toc-highlight">Expected Output</a></ul><li><a href=#alternative-api-access-if-available class="table-of-contents__link toc-highlight">Alternative: API Access (If Available)</a><li><a href=#troubleshooting class="table-of-contents__link toc-highlight">Troubleshooting</a><ul><li><a href=#problem-cant-find-csv-files class="table-of-contents__link toc-highlight">Problem: Can't Find CSV Files</a><li><a href=#problem-files-have-different-names class="table-of-contents__link toc-highlight">Problem: Files Have Different Names</a><li><a href=#problem-data-format-is-different class="table-of-contents__link toc-highlight">Problem: Data Format is Different</a><li><a href=#problem-captcha-blocks-download class="table-of-contents__link toc-highlight">Problem: CAPTCHA Blocks Download</a></ul><li><a href=#data-quality--coverage class="table-of-contents__link toc-highlight">Data Quality & Coverage</a><ul><li><a href=#expected-coverage class="table-of-contents__link toc-highlight">Expected Coverage</a><li><a href=#quality-indicators class="table-of-contents__link toc-highlight">Quality Indicators</a></ul><li><a href=#next-steps-after-integration class="table-of-contents__link toc-highlight">Next Steps After Integration</a><ul><li><a href=#1-combine-with-other-sources class="table-of-contents__link toc-highlight">1. Combine with Other Sources</a><li><a href=#2-deduplicate-urls class="table-of-contents__link toc-highlight">2. Deduplicate URLs</a><li><a href=#3-priority-scraping class="table-of-contents__link toc-highlight">3. Priority Scraping</a></ul><li><a href=#documentation-links class="table-of-contents__link toc-highlight">Documentation Links</a><li><a href=#expected-timeline class="table-of-contents__link toc-highlight">Expected Timeline</a><li><a href=#questions class="table-of-contents__link toc-highlight">Questions?</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>