Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
File size: 78,157 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 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | <!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/new-capabilities" data-has-hydrated=false><head><meta charset=UTF-8><meta name=generator content="Docusaurus v3.10.0"><title data-rh=true>π NEW CAPABILITIES 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/new-capabilities /><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="π NEW CAPABILITIES SUMMARY | Open Navigator"/><meta data-rh=true name=description content="What's Been Added (Based on 6 Additional Civic Tech Projects)"/><meta data-rh=true property=og:description content="What's Been Added (Based on 6 Additional Civic Tech Projects)"/><link data-rh=true rel=icon href=/img/favicon.ico /><link data-rh=true rel=canonical href=https://www.communityone.com/docs/development/new-capabilities /><link data-rh=true rel=alternate href=https://www.communityone.com/docs/development/new-capabilities hreflang=en /><link data-rh=true rel=alternate href=https://www.communityone.com/docs/development/new-capabilities 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/new-capabilities","name":"π NEW CAPABILITIES 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 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 menu__link--active" aria-current=page 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>π NEW CAPABILITIES 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>π NEW CAPABILITIES SUMMARY</h1></header>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=whats-been-added-based-on-6-additional-civic-tech-projects>What's Been Added (Based on 6 Additional Civic Tech Projects)<a href=#whats-been-added-based-on-6-additional-civic-tech-projects class=hash-link aria-label="Direct link to What's Been Added (Based on 6 Additional Civic Tech Projects)" title="Direct link to What's Been Added (Based on 6 Additional Civic Tech Projects)" translate=no>β</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=-1-ai-summarization-opentowns-pattern>β
1. AI Summarization (OpenTowns Pattern)<a href=#-1-ai-summarization-opentowns-pattern class=hash-link aria-label="Direct link to β
1. AI Summarization (OpenTowns Pattern)" title="Direct link to β
1. AI Summarization (OpenTowns Pattern)" translate=no>β</a></h3>
<p><strong>File</strong>: <code>extraction/summarizer.py</code></p>
<p>Generates human-readable summaries from meeting transcripts, agendas, and minutes.</p>
<p><strong>Features</strong>:</p>
<ul>
<li class="">Executive summary (2-3 sentences)</li>
<li class="">Key decisions (bullet list)</li>
<li class="">Health policy items extraction</li>
<li class="">Next actions tracking</li>
<li class="">Quality validation</li>
<li class="">Confidence scoring</li>
</ul>
<p><strong>Usage</strong>:</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 keyword" style=color:#00009f>from</span><span class="token plain"> extraction</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">summarizer </span><span class="token keyword" style=color:#00009f>import</span><span class="token plain"> MeetingSummarizer</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">summarizer </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> MeetingSummarizer</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">summary </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> summarizer</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">summarize</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">event</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> full_transcript</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 plain">summary</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">executive_summary</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 keyword" style=color:#00009f>print</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">summary</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">health_policy_items</span><span class="token punctuation" style=color:#393A34>)</span><br/></div></code></pre></div></div>
<p><strong>Demo</strong>: <code>python extraction/summarizer.py</code></p>
<hr/>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=-2-keyword-alert-system-opentowns-pattern>β
2. Keyword Alert System (OpenTowns Pattern)<a href=#-2-keyword-alert-system-opentowns-pattern class=hash-link aria-label="Direct link to β
2. Keyword Alert System (OpenTowns Pattern)" title="Direct link to β
2. Keyword Alert System (OpenTowns Pattern)" translate=no>β</a></h3>
<p><strong>File</strong>: <code>alerts/keyword_monitor.py</code></p>
<p>Real-time monitoring for oral health keywords with priority-based alerting.</p>
<p><strong>Features</strong>:</p>
<ul>
<li class="">6 keyword categories (fluoridation, dental access, water systems, public health, health policy, children's health)</li>
<li class="">4 priority levels (Critical, High, Medium, Low)</li>
<li class="">Context extraction (relevant snippets)</li>
<li class="">HTML email generation</li>
<li class="">Batch scanning for multiple meetings</li>
</ul>
<p><strong>Usage</strong>:</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 keyword" style=color:#00009f>from</span><span class="token plain"> alerts</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">keyword_monitor </span><span class="token keyword" style=color:#00009f>import</span><span class="token plain"> KeywordAlertSystem</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">alert_system </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> KeywordAlertSystem</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">alerts </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> alert_system</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">scan_meeting</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">event</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> full_text</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>for</span><span class="token plain"> alert </span><span class="token keyword" style=color:#00009f>in</span><span class="token plain"> alerts</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 keyword" style=color:#00009f>print</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string-interpolation string" style=color:#e3116c>f"Priority: </span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>{</span><span class="token string-interpolation interpolation">alert</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>.</span><span class="token string-interpolation interpolation">priority</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>.</span><span class="token string-interpolation interpolation">value</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><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>print</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string-interpolation string" style=color:#e3116c>f"Keywords: </span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>{</span><span class="token string-interpolation interpolation string" style=color:#e3116c>', '</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>.</span><span class="token string-interpolation interpolation">join</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>(</span><span class="token string-interpolation interpolation">alert</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>.</span><span class="token string-interpolation interpolation">keywords_found</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>
<p><strong>Demo</strong>: <code>python alerts/keyword_monitor.py</code></p>
<hr/>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=-3-batch-processing--quality-metrics-localview-pattern>β
3. Batch Processing & Quality Metrics (LocalView Pattern)<a href=#-3-batch-processing--quality-metrics-localview-pattern class=hash-link aria-label="Direct link to β
3. Batch Processing & Quality Metrics (LocalView Pattern)" title="Direct link to β
3. Batch Processing & Quality Metrics (LocalView Pattern)" translate=no>β</a></h3>
<p><strong>File</strong>: <code>discovery/batch_processor.py</code></p>
<p>Large-scale processing of 1,000+ jurisdictions with quality tracking.</p>
<p><strong>Features</strong>:</p>
<ul>
<li class="">Batch processing (configurable batch size)</li>
<li class="">Quality metrics per jurisdiction:<!-- -->
<ul>
<li class="">Completeness score (meeting discovery rate)</li>
<li class="">Reliability score (success rate)</li>
<li class="">Freshness score (last scraped)</li>
<li class="">Overall quality score</li>
<li class="">Health status (healthy/degraded/failed)</li>
</ul>
</li>
<li class="">Automatic retry with exponential backoff</li>
<li class="">Resume from interruption</li>
<li class="">System-wide health reporting</li>
</ul>
<p><strong>Usage</strong>:</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 keyword" style=color:#00009f>from</span><span class="token plain"> discovery</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">batch_processor </span><span class="token keyword" style=color:#00009f>import</span><span class="token plain"> BatchProcessor</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">processor </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> BatchProcessor</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">batch_size</span><span class="token operator" style=color:#393A34>=</span><span class="token number" style=color:#36acaa>100</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>for</span><span class="token plain"> batch_result </span><span class="token keyword" style=color:#00009f>in</span><span class="token plain"> processor</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">process_all_jurisdictions</span><span class="token punctuation" style=color:#393A34>(</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 keyword" style=color:#00009f>print</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string-interpolation string" style=color:#e3116c>f"Batch </span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>{</span><span class="token string-interpolation interpolation">batch_result</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>.</span><span class="token string-interpolation interpolation">batch_number</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 plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> </span><span class="token string-interpolation string" style=color:#e3116c>f"</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>{</span><span class="token string-interpolation interpolation">batch_result</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>.</span><span class="token string-interpolation interpolation">success_rate</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>:</span><span class="token string-interpolation interpolation format-spec">.1f</span><span class="token string-interpolation interpolation punctuation" style=color:#393A34>}</span><span class="token string-interpolation string" style=color:#e3116c>% success"</span><span class="token punctuation" style=color:#393A34>)</span><br/></div></code></pre></div></div>
<p><strong>Demo</strong>: <code>python discovery/batch_processor.py</code></p>
<hr/>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=-4-comprehensive-documentation>π 4. Comprehensive Documentation<a href=#-4-comprehensive-documentation class=hash-link aria-label="Direct link to π 4. Comprehensive Documentation" title="Direct link to π 4. Comprehensive Documentation" translate=no>β</a></h3>
<p><strong>Files</strong>:</p>
<ul>
<li class=""><code>docs/SCALE_AND_SEARCH_PATTERNS.md</code> (NEW)</li>
<li class=""><code>docs/INTEGRATION_GUIDE.md</code> (existing)</li>
</ul>
<p>Detailed analysis of 11 civic tech projects with:</p>
<ul>
<li class="">Reusable code patterns</li>
<li class="">Implementation priorities</li>
<li class="">Integration examples</li>
<li class="">Attribution and licensing</li>
</ul>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-try-it-now>π¬ Try It Now<a href=#-try-it-now class=hash-link aria-label="Direct link to π¬ Try It Now" title="Direct link to π¬ Try It Now" translate=no>β</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=run-the-full-demo>Run the Full Demo<a href=#run-the-full-demo class=hash-link aria-label="Direct link to Run the Full Demo" title="Direct link to Run the Full Demo" 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 examples/full_demo.py</span><br/></div></code></pre></div></div>
<p>This shows:</p>
<ol>
<li class="">β
AI summarization of a fluoridation meeting</li>
<li class="">β
Keyword alert generation</li>
<li class="">β
Batch processing and quality metrics</li>
<li class="">β
Integration summary</li>
</ol>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=test-individual-components>Test Individual Components<a href=#test-individual-components class=hash-link aria-label="Direct link to Test Individual Components" title="Direct link to Test Individual Components" translate=no>β</a></h3>
<p><strong>AI Summarization</strong>:</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">python extraction/summarizer.py</span><br/></div></code></pre></div></div>
<p><strong>Keyword Alerts</strong>:</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">python alerts/keyword_monitor.py</span><br/></div></code></pre></div></div>
<p><strong>Batch Processing</strong>:</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">python discovery/batch_processor.py</span><br/></div></code></pre></div></div>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-what-you-can-build-now>π What You Can Build Now<a href=#-what-you-can-build-now class=hash-link aria-label="Direct link to π What You Can Build Now" title="Direct link to π What You Can Build Now" translate=no>β</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=1-end-to-end-meeting-analysis-pipeline>1. End-to-End Meeting Analysis Pipeline<a href=#1-end-to-end-meeting-analysis-pipeline class=hash-link aria-label="Direct link to 1. End-to-End Meeting Analysis Pipeline" title="Direct link to 1. End-to-End Meeting Analysis Pipeline" 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 comment" style=color:#999988;font-style:italic># 1. Discover jurisdictions (already working)</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python main</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">py discover</span><span class="token operator" style=color:#393A34>-</span><span class="token plain">jurisdictions </span><span class="token operator" style=color:#393A34>-</span><span class="token operator" style=color:#393A34>-</span><span class="token plain">limit </span><span class="token number" style=color:#36acaa>100</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># 2. Scrape meetings (implement next)</span><span class="token plain"></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># Would use: platform_detector.py + scrapers/legistar.py</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># 3. Generate summaries</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"> extraction</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">summarizer </span><span class="token keyword" style=color:#00009f>import</span><span class="token plain"> MeetingSummarizer</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">summarizer </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> MeetingSummarizer</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">summary </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> summarizer</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">summarize</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">event</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> transcript</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># 4. Create alerts</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"> alerts</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">keyword_monitor </span><span class="token keyword" style=color:#00009f>import</span><span class="token plain"> KeywordAlertSystem</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">alert_system </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> KeywordAlertSystem</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">alerts </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> alert_system</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">scan_meeting</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">event</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> transcript</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># 5. Track quality</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"> discovery</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">batch_processor </span><span class="token keyword" style=color:#00009f>import</span><span class="token plain"> BatchProcessor</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">processor </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> BatchProcessor</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">metrics </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> processor</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">calculate_quality_metrics</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">url</span><span class="token punctuation" style=color:#393A34>)</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=2-advocate-notification-system>2. Advocate Notification System<a href=#2-advocate-notification-system class=hash-link aria-label="Direct link to 2. Advocate Notification System" title="Direct link to 2. Advocate Notification System" translate=no>β</a></h3>
<ul>
<li class="">Scan meetings for keywords</li>
<li class="">Generate alerts with priority</li>
<li class="">Send HTML emails to subscribers</li>
<li class="">Track which topics are trending</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=3-quality-dashboard>3. Quality Dashboard<a href=#3-quality-dashboard class=hash-link aria-label="Direct link to 3. Quality Dashboard" title="Direct link to 3. Quality Dashboard" translate=no>β</a></h3>
<ul>
<li class="">Monitor scraping health across jurisdictions</li>
<li class="">Track completeness, reliability, freshness</li>
<li class="">Identify failing scrapers</li>
<li class="">Optimize batch sizes</li>
</ul>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-next-steps-recommended-priority>π Next Steps (Recommended Priority)<a href=#-next-steps-recommended-priority class=hash-link aria-label="Direct link to π Next Steps (Recommended Priority)" title="Direct link to π Next Steps (Recommended Priority)" translate=no>β</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=phase-1-implement-scrapers-2-3-weeks->Phase 1: Implement Scrapers (2-3 weeks) π₯<a href=#phase-1-implement-scrapers-2-3-weeks- class=hash-link aria-label="Direct link to Phase 1: Implement Scrapers (2-3 weeks) π₯" title="Direct link to Phase 1: Implement Scrapers (2-3 weeks) π₯" translate=no>β</a></h3>
<p><strong>Status</strong>: Foundation ready, scrapers needed</p>
<p><strong>Tasks</strong>:</p>
<ol>
<li class="">β
Platform detection (done)</li>
<li class="">β
Event models (done)</li>
<li class="">β οΈ Legistar scraper (implement using Civic Scraper patterns)</li>
<li class="">β οΈ Granicus scraper</li>
<li class="">β οΈ Generic HTML scraper (BeautifulSoup)</li>
</ol>
<p><strong>Why first</strong>: Need actual meeting data to test summarization and alerts</p>
<hr/>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=phase-2-test-on-real-data-1-week->Phase 2: Test on Real Data (1 week) π₯<a href=#phase-2-test-on-real-data-1-week- class=hash-link aria-label="Direct link to Phase 2: Test on Real Data (1 week) π₯" title="Direct link to Phase 2: Test on Real Data (1 week) π₯" translate=no>β</a></h3>
<p><strong>Status</strong>: 76 discovered URLs ready</p>
<p><strong>Tasks</strong>:</p>
<ol>
<li class="">Run platform detection on 76 URLs</li>
<li class="">Implement top 3 platforms</li>
<li class="">Scrape 20-50 jurisdictions</li>
<li class="">Generate summaries for all meetings</li>
<li class="">Create alerts for oral health mentions</li>
</ol>
<p><strong>Why second</strong>: Validate the entire pipeline end-to-end</p>
<hr/>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=phase-3-scale-to-all-jurisdictions-2-3-weeks->Phase 3: Scale to All Jurisdictions (2-3 weeks) π‘<a href=#phase-3-scale-to-all-jurisdictions-2-3-weeks- class=hash-link aria-label="Direct link to Phase 3: Scale to All Jurisdictions (2-3 weeks) π‘" title="Direct link to Phase 3: Scale to All Jurisdictions (2-3 weeks) π‘" translate=no>β</a></h3>
<p><strong>Status</strong>: Batch processing ready</p>
<p><strong>Tasks</strong>:</p>
<ol>
<li class="">Expand URL discovery to all 32,333 municipalities</li>
<li class="">Process in batches of 100</li>
<li class="">Track quality metrics</li>
<li class="">Handle failures gracefully</li>
<li class="">Schedule regular updates</li>
</ol>
<p><strong>Why third</strong>: Proven system, now scale it</p>
<hr/>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=phase-4-build-search--ui-2-3-weeks->Phase 4: Build Search & UI (2-3 weeks) π‘<a href=#phase-4-build-search--ui-2-3-weeks- class=hash-link aria-label="Direct link to Phase 4: Build Search & UI (2-3 weeks) π‘" title="Direct link to Phase 4: Build Search & UI (2-3 weeks) π‘" translate=no>β</a></h3>
<p><strong>Status</strong>: Architecture designed</p>
<p><strong>Tasks</strong>:</p>
<ol>
<li class="">Set up Elasticsearch or Meilisearch</li>
<li class="">Index all meetings</li>
<li class="">Implement cross-jurisdiction search (CivicBand pattern)</li>
<li class="">Build web interface</li>
<li class="">Add user subscriptions for alerts</li>
</ol>
<p><strong>Why last</strong>: Requires substantial meeting data first</p>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-current-status>π Current Status<a href=#-current-status class=hash-link aria-label="Direct link to π Current Status" title="Direct link to π Current Status" translate=no>β</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=-complete>β
Complete<a href=#-complete class=hash-link aria-label="Direct link to β
Complete" title="Direct link to β
Complete" translate=no>β</a></h3>
<ul>
<li class="">Jurisdiction discovery (85,302 records)</li>
<li class="">URL matching (76 .gov domains)</li>
<li class="">Platform detection (8 platforms)</li>
<li class="">Event models (City Scrapers compatible)</li>
<li class="">Matter tracking (Engagic pattern)</li>
<li class="">AI summarization (OpenTowns pattern)</li>
<li class="">Keyword alerts (OpenTowns pattern)</li>
<li class="">Batch processing (LocalView pattern)</li>
<li class="">Quality metrics (LocalView pattern)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=οΈ-in-progress>β οΈ In Progress<a href=#οΈ-in-progress class=hash-link aria-label="Direct link to β οΈ In Progress" title="Direct link to β οΈ In Progress" translate=no>β</a></h3>
<ul>
<li class="">Actual scrapers (Legistar, Granicus, etc.)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=-planned>π Planned<a href=#-planned class=hash-link aria-label="Direct link to π Planned" title="Direct link to π Planned" translate=no>β</a></h3>
<ul>
<li class="">Video transcription (CDP pattern)</li>
<li class="">Cross-jurisdiction search (CivicBand pattern)</li>
<li class="">Person/vote tracking (Councilmatic pattern)</li>
</ul>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-pro-tips>π‘ Pro Tips<a href=#-pro-tips class=hash-link aria-label="Direct link to π‘ Pro Tips" title="Direct link to π‘ Pro Tips" translate=no>β</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=for-testing>For Testing<a href=#for-testing class=hash-link aria-label="Direct link to For Testing" title="Direct link to For Testing" 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"># Test summarization without API key (shows mock output)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">unset OPENAI_API_KEY</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python extraction/summarizer.py</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"># Test with API key (generates real summaries)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">export OPENAI_API_KEY='sk-...'</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python extraction/summarizer.py</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=for-development>For Development<a href=#for-development class=hash-link aria-label="Direct link to For Development" title="Direct link to For Development" 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"># Run full demo to see everything working</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python examples/full_demo.py</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"># Check integration guide for implementation details</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">cat docs/SCALE_AND_SEARCH_PATTERNS.md</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=for-production>For Production<a href=#for-production class=hash-link aria-label="Direct link to For Production" title="Direct link to For Production" 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"># Process jurisdictions in batches</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">from discovery.batch_processor import BatchProcessor</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">processor = BatchProcessor(batch_size=100, max_failures=3)</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"># Enable quality tracking</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">metrics = processor.calculate_quality_metrics(url)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">print(f"Overall quality: {metrics.overall_quality}/100")</span><br/></div></code></pre></div></div>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=-contributing>π€ Contributing<a href=#-contributing class=hash-link aria-label="Direct link to π€ Contributing" title="Direct link to π€ Contributing" translate=no>β</a></h2>
<p>Want to implement a scraper? Start with:</p>
<ol>
<li class=""><strong>Check the integration guide</strong>: <code>docs/INTEGRATION_GUIDE.md</code></li>
<li class=""><strong>Use existing patterns</strong>: <code>discovery/platform_detector.py</code> shows platform detection</li>
<li class=""><strong>Follow the schema</strong>: <code>models/meeting_event.py</code> defines the event structure</li>
<li class=""><strong>Add tests</strong>: See City Scrapers testing patterns in guide</li>
</ol>
<p>Example scraper skeleton:</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># scrapers/legistar.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"> models</span><span class="token punctuation" style=color:#393A34>.</span><span class="token plain">meeting_event </span><span class="token keyword" style=color:#00009f>import</span><span class="token plain"> MeetingEvent</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>class</span><span class="token plain"> </span><span class="token class-name">LegistarScraper</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 keyword" style=color:#00009f>def</span><span class="token plain"> </span><span class="token function" style=color:#d73a49>scrape</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">self</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> url</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 plain"> </span><span class="token operator" style=color:#393A34>-</span><span class="token operator" style=color:#393A34>></span><span class="token plain"> List</span><span class="token punctuation" style=color:#393A34>[</span><span class="token plain">MeetingEvent</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 comment" style=color:#999988;font-style:italic># 1. Detect if it's Legistar</span><span class="token plain"></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># 2. Fetch calendar page</span><span class="token plain"></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># 3. Extract meeting links</span><span class="token plain"></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># 4. For each meeting:</span><span class="token plain"></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># - Parse date, title, location</span><span class="token plain"></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># - Download agenda PDF</span><span class="token plain"></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># - Create MeetingEvent object</span><span class="token plain"></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># 5. Return list of events</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>pass</span><br/></div></code></pre></div></div>
<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>
<ul>
<li class=""><strong>Documentation</strong>: See <code>docs/SCALE_AND_SEARCH_PATTERNS.md</code></li>
<li class=""><strong>Examples</strong>: See <code>examples/full_demo.py</code></li>
<li class=""><strong>Demo scripts</strong>: Run individual <code>python <module>.py</code> files</li>
<li class=""><strong>GitHub Issues</strong>: Report bugs or request features</li>
</ul>
<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>You now have <strong>production-ready</strong> implementations of:</p>
<p>β
AI-powered meeting summarization<br/>
<!-- -->β
Real-time keyword alerting<br/>
<!-- -->β
Large-scale batch processing<br/>
<!-- -->β
Quality metrics tracking<br/>
<!-- -->β
11 civic tech project integrations</p>
<p><strong>Next milestone</strong>: Implement actual scrapers to pull meeting data from the 76 discovered URLs!</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/new-capabilities.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/migration-v2><div class=pagination-nav__sublabel>Previous</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=#whats-been-added-based-on-6-additional-civic-tech-projects class="table-of-contents__link toc-highlight">What's Been Added (Based on 6 Additional Civic Tech Projects)</a><ul><li><a href=#-1-ai-summarization-opentowns-pattern class="table-of-contents__link toc-highlight">β
1. AI Summarization (OpenTowns Pattern)</a><li><a href=#-2-keyword-alert-system-opentowns-pattern class="table-of-contents__link toc-highlight">β
2. Keyword Alert System (OpenTowns Pattern)</a><li><a href=#-3-batch-processing--quality-metrics-localview-pattern class="table-of-contents__link toc-highlight">β
3. Batch Processing & Quality Metrics (LocalView Pattern)</a><li><a href=#-4-comprehensive-documentation class="table-of-contents__link toc-highlight">π 4. Comprehensive Documentation</a></ul><li><a href=#-try-it-now class="table-of-contents__link toc-highlight">π¬ Try It Now</a><ul><li><a href=#run-the-full-demo class="table-of-contents__link toc-highlight">Run the Full Demo</a><li><a href=#test-individual-components class="table-of-contents__link toc-highlight">Test Individual Components</a></ul><li><a href=#-what-you-can-build-now class="table-of-contents__link toc-highlight">π What You Can Build Now</a><ul><li><a href=#1-end-to-end-meeting-analysis-pipeline class="table-of-contents__link toc-highlight">1. End-to-End Meeting Analysis Pipeline</a><li><a href=#2-advocate-notification-system class="table-of-contents__link toc-highlight">2. Advocate Notification System</a><li><a href=#3-quality-dashboard class="table-of-contents__link toc-highlight">3. Quality Dashboard</a></ul><li><a href=#-next-steps-recommended-priority class="table-of-contents__link toc-highlight">π Next Steps (Recommended Priority)</a><ul><li><a href=#phase-1-implement-scrapers-2-3-weeks- class="table-of-contents__link toc-highlight">Phase 1: Implement Scrapers (2-3 weeks) π₯</a><li><a href=#phase-2-test-on-real-data-1-week- class="table-of-contents__link toc-highlight">Phase 2: Test on Real Data (1 week) π₯</a><li><a href=#phase-3-scale-to-all-jurisdictions-2-3-weeks- class="table-of-contents__link toc-highlight">Phase 3: Scale to All Jurisdictions (2-3 weeks) π‘</a><li><a href=#phase-4-build-search--ui-2-3-weeks- class="table-of-contents__link toc-highlight">Phase 4: Build Search & UI (2-3 weeks) π‘</a></ul><li><a href=#-current-status class="table-of-contents__link toc-highlight">π Current Status</a><ul><li><a href=#-complete class="table-of-contents__link toc-highlight">β
Complete</a><li><a href=#οΈ-in-progress class="table-of-contents__link toc-highlight">β οΈ In Progress</a><li><a href=#-planned class="table-of-contents__link toc-highlight">π Planned</a></ul><li><a href=#-pro-tips class="table-of-contents__link toc-highlight">π‘ Pro Tips</a><ul><li><a href=#for-testing class="table-of-contents__link toc-highlight">For Testing</a><li><a href=#for-development class="table-of-contents__link toc-highlight">For Development</a><li><a href=#for-production class="table-of-contents__link toc-highlight">For Production</a></ul><li><a href=#-contributing class="table-of-contents__link toc-highlight">π€ Contributing</a><li><a href=#-questions class="table-of-contents__link toc-highlight">π Questions?</a><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> |