jcbowyer's picture
Deploy: Consolidated gold tables, fixed nginx docs routing
3d16fe6 verified
<!doctype html><html lang=en dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-for-developers" data-has-hydrated=false><head><meta charset=UTF-8><meta name=generator content="Docusaurus v3.10.0"><title data-rh=true>For Developers & Technical Users | 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/for-developers /><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="For Developers & Technical Users | Open Navigator"/><meta data-rh=true name=description content="Welcome! This section contains technical documentation for developers, data scientists, and system administrators working with Open Navigator."/><meta data-rh=true property=og:description content="Welcome! This section contains technical documentation for developers, data scientists, and system administrators working with Open Navigator."/><link data-rh=true rel=icon href=/img/favicon.ico /><link data-rh=true rel=canonical href=https://www.communityone.com/docs/for-developers /><link data-rh=true rel=alternate href=https://www.communityone.com/docs/for-developers hreflang=en /><link data-rh=true rel=alternate href=https://www.communityone.com/docs/for-developers 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":"For Developers & Technical Users","position":1}]}</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 aria-current=page class="navbar__item navbar__link navbar__link--active" 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 menu__link--active" role=button aria-expanded=true href=/docs/for-developers><span title="Developers & Technical Users" class=categoryLinkLabel_W154>Developers & Technical Users</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 menu__link--active" aria-current=page tabindex=0 href=/docs/for-developers><span title="For Developers & Technical Users" class=linkLabel_WmDU>For Developers & Technical Users</span></a><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 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><span class=breadcrumbs__link>Developers & Technical Users</span><li class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link>For Developers & Technical Users</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>For Developers & Technical Users</h1></header>
<p>Welcome! This section contains <strong>technical documentation</strong> for developers, data scientists, and system administrators working with Open Navigator.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=platform-scale--data-volume>Platform Scale & Data Volume<a href=#platform-scale--data-volume class=hash-link aria-label="Direct link to Platform Scale & Data Volume" title="Direct link to Platform Scale & Data Volume" translate=no>​</a></h2>
<p>Open Navigator processes data at scale across the United States:</p>
<table><thead><tr><th>Category<th>Count<th>Source<tbody><tr><td><strong>Total Jurisdictions</strong><td>90,000+<td>Census Bureau Gazetteer 2024<tr><td><strong>Counties</strong><td>3,144<td>All U.S. counties (FIPS coded)<tr><td><strong>Municipalities</strong><td>19,500+<td>Cities, towns, villages, boroughs<tr><td><strong>Townships</strong><td>36,000+<td>County subdivisions, census divisions<tr><td><strong>School Districts</strong><td>13,000+<td>NCES Common Core of Data<tr><td><strong>Nonprofit Organizations</strong><td>3,000,000+<td>IRS TEOS + ProPublica Nonprofit Explorer<tr><td><strong>State Legislatures</strong><td>50<td>All U.S. states<tr><td><strong>Video Channels</strong><td>50+<td>YouTube state legislature channels<tr><td><strong>Meeting Datasets</strong><td>1,000+<td>MeetingBank, LocalView, City Scrapers<tr><td><strong>.gov Domains</strong><td>15,000+<td>CISA validated government websites</table>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=storage--processing-requirements>Storage & Processing Requirements<a href=#storage--processing-requirements class=hash-link aria-label="Direct link to Storage & Processing Requirements" title="Direct link to Storage & Processing Requirements" translate=no>​</a></h3>
<p><strong>Estimated Data Volumes:</strong></p>
<ul>
<li class=""><strong>Meeting Minutes</strong>: 10-100 MB per municipality Γ— 1,000+ cities = 10-100 GB</li>
<li class=""><strong>Financial Documents</strong>: 5-50 MB per jurisdiction Γ— 90,000 = 450 GB - 4.5 TB</li>
<li class=""><strong>Nonprofit 990s</strong>: 1-5 MB per org Γ— 3M = 3-15 TB</li>
<li class=""><strong>Video Content</strong>: Variable (streaming recommended over storage)</li>
</ul>
<p><strong>Medallion Architecture (Delta Lake):</strong></p>
<ul>
<li class=""><strong>Bronze Layer</strong>: Raw scraped data (largest storage footprint)</li>
<li class=""><strong>Silver Layer</strong>: Cleaned/standardized (50-70% compression)</li>
<li class=""><strong>Gold Layer</strong>: Analyzed/aggregated (90%+ compression)</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=api-rate-limits--quotas>API Rate Limits & Quotas<a href=#api-rate-limits--quotas class=hash-link aria-label="Direct link to API Rate Limits & Quotas" title="Direct link to API Rate Limits & Quotas" translate=no>​</a></h3>
<p><strong>Free Tier (No Cost):</strong></p>
<ul>
<li class="">Census Bureau: Unlimited downloads</li>
<li class="">NCES: Unlimited bulk downloads</li>
<li class="">ProPublica API: Respectful use (~1 req/sec suggested)</li>
<li class="">IRS TEOS: Bulk data downloads (monthly updates)</li>
<li class="">CISA .gov Domains: GitHub dataset (updated daily)</li>
</ul>
<p><strong>Paid/Limited:</strong></p>
<ul>
<li class="">OpenAI API: Pay per token (required for LLM features)</li>
<li class="">Harvard Dataverse: API key recommended (free registration)</li>
</ul>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class=admonitionHeading_Gvgb><span class=admonitionIcon_Rf37><svg viewBox="0 0 14 16"><path fill-rule=evenodd d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg></span>Complete Technical Citations & Standards</div><div class=admonitionContent_BuS1><p>For full citations, licenses, API documentation, and technical specifications:<p><strong><a class="" href=/docs/data-sources/citations>Citations & Data Sources</a></strong><p>Includes:<ul>
<li class=""><strong>Academic Research</strong>: MeetingBank (ACL 2023), LocalView (Harvard), Council Data Project, City Scrapers</li>
<li class=""><strong>Government APIs</strong>: U.S. Census, NCES, IRS, Open States</li>
<li class=""><strong>Standards</strong>: OCD-ID (OCDEP 2), Popolo Project, Schema.org, CEDS, OMOP CDM (OHDSI), IATI v2.03</li>
<li class=""><strong>Data Models</strong>: Microsoft CDM for Nonprofits, OMOP vocabulary system</li>
<li class=""><strong>Fact-Checking</strong>: N/A (not currently integrated)</li>
<li class=""><strong>Nonprofit Data</strong>: IRS BMF (43,726 orgs from 5 states)</li>
<li class=""><strong>Churches & Faith-Based</strong>: 4,372 congregations from IRS data</li>
<li class=""><strong>Enterprise Tech</strong>: Microsoft (Nonprofit CDM), Google (Data Commons), AWS (Open Data), Databricks (Unity Catalog, MLflow), Snowflake, Salesforce (NPSP)</li>
<li class=""><strong>BibTeX citations</strong> for academic papers and research use</li>
</ul></div></div>
<hr/>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=what-youll-find-here>What You'll Find Here<a href=#what-youll-find-here class=hash-link aria-label="Direct link to What You'll Find Here" title="Direct link to What You'll Find Here" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=-setup--installation>πŸš€ Setup & Installation<a href=#-setup--installation class=hash-link aria-label="Direct link to πŸš€ Setup & Installation" title="Direct link to πŸš€ Setup & Installation" translate=no>​</a></h3>
<p>Get the platform running:</p>
<ul>
<li class=""><strong><a class="" href=/docs/quickstart>Quick Start</a></strong> - Detailed installation instructions</li>
<li class=""><strong><a class="" href=/docs/quick-reference>Quick Reference</a></strong> - CLI commands cheat sheet</li>
<li class=""><strong><a class="" href=/docs/architecture>Architecture</a></strong> - System design and components</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=-data-sources-technical>πŸ“Š Data Sources (Technical)<a href=#-data-sources-technical class=hash-link aria-label="Direct link to πŸ“Š Data Sources (Technical)" title="Direct link to πŸ“Š Data Sources (Technical)" translate=no>​</a></h3>
<p>Technical details on data ingestion:</p>
<ul>
<li class=""><strong><a class="" href=/docs/data-sources/jurisdiction-discovery>Jurisdiction Discovery</a></strong> - Finding 90,000+ government websites</li>
<li class=""><strong><a class="" href=/docs/data-sources/census-data>Census Data</a></strong> - Ingesting Census Bureau datasets</li>
<li class=""><strong><a class="" href=/docs/data-sources/huggingface-datasets>HuggingFace Datasets</a></strong> - Pre-built meeting collections</li>
<li class=""><strong><a class="" href=/docs/data-sources/youtube-discovery>YouTube Discovery</a></strong> - Video channel scraping</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=️-how-to-guides>πŸ› οΈ How-To Guides<a href=#️-how-to-guides class=hash-link aria-label="Direct link to πŸ› οΈ How-To Guides" title="Direct link to πŸ› οΈ How-To Guides" translate=no>​</a></h3>
<p>Step-by-step technical guides:</p>
<ul>
<li class=""><strong><a class="" href=/docs/guides/jurisdiction-setup>Jurisdiction Setup</a></strong> - Configure discovery for your area</li>
<li class=""><strong><a class="" href=/docs/guides/huggingface-publishing>HuggingFace Publishing</a></strong> - Publish datasets to HuggingFace Hub</li>
<li class=""><strong><a class="" href=/docs/guides/handling-formats>Handling Formats</a></strong> - Process different document types</li>
<li class=""><strong><a class="" href=/docs/guides/scraper-improvements>Scraper Improvements</a></strong> - Enhance scraping capabilities</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=-integrations>πŸ”Œ Integrations<a href=#-integrations class=hash-link aria-label="Direct link to πŸ”Œ Integrations" title="Direct link to πŸ”Œ Integrations" translate=no>​</a></h3>
<p>Connect external services:</p>
<ul>
<li class=""><strong><a class="" href=/docs/integrations/dataverse>Dataverse Integration</a></strong> - Harvard Dataverse API</li>
<li class=""><strong><a class="" href=/docs/integrations/frontend>Frontend Integration</a></strong> - React application setup</li>
<li class=""><strong><a class="" href=/docs/integrations/localview>LocalView</a></strong> - LocalView dataset ingestion</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=-deployment>πŸš€ Deployment<a href=#-deployment class=hash-link aria-label="Direct link to πŸš€ Deployment" title="Direct link to πŸš€ Deployment" translate=no>​</a></h3>
<p>Production deployment:</p>
<ul>
<li class=""><strong><a class="" href=/docs/deployment/databricks-apps>Databricks Apps</a></strong> - Deploy to Databricks</li>
<li class=""><strong><a class="" href=/docs/deployment/scale>Scale Deployment</a></strong> - Handle large datasets</li>
<li class=""><strong><a class="" href=/docs/deployment/costs>Cost Management</a></strong> - Optimize expenses</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=-development>πŸ’» Development<a href=#-development class=hash-link aria-label="Direct link to πŸ’» Development" title="Direct link to πŸ’» Development" translate=no>​</a></h3>
<p>Contributing and development:</p>
<ul>
<li class=""><strong><a class="" href=/docs/development/changelog>Changelog</a></strong> - Version history</li>
<li class=""><strong><a class="" href=/docs/development/migration-v2>Migration Guides</a></strong> - Upgrading between versions</li>
<li class=""><strong><a class="" href=/docs/development/refactoring-summary>Refactoring Summary</a></strong> - Recent changes</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=quick-start-tldr>Quick Start (TL;DR)<a href=#quick-start-tldr class=hash-link aria-label="Direct link to Quick Start (TL;DR)" title="Direct link to Quick Start (TL;DR)" translate=no>​</a></h2>
<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"># Clone and install</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">git clone https://github.com/getcommunityone/open-navigator-for-engagement.git</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">cd oral-health-policy-pulse</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">./install.sh</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># Install frontend and docs</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">cd frontend && npm install && cd ..</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">cd website && npm install && cd ..</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"># Start all services</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">./start-all.sh</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"># Visit:</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># - Main App: http://localhost:5173</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># - API Docs: http://localhost:8000/docs</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># - This Site: http://localhost:3000</span><br/></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=architecture-overview>Architecture Overview<a href=#architecture-overview class=hash-link aria-label="Direct link to Architecture Overview" title="Direct link to Architecture Overview" translate=no>​</a></h2>
<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">β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ Open Navigator Platform β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β”‚ React App β”‚ β”‚ FastAPI β”‚ β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β”‚ (Frontend) │──▢│ (Backend) β”‚ β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β”‚ Port 5173 β”‚ β”‚ Port 8000 β”‚ β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β”‚ β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β” β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β”‚ Delta Lake (Data Storage) β”‚ β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β”‚ β€’ Bronze: Raw data β”‚ β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β”‚ β€’ Silver: Cleaned data β”‚ β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β”‚ β€’ Gold: Analyzed data β”‚ β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜</span><br/></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=common-tasks>Common Tasks<a href=#common-tasks class=hash-link aria-label="Direct link to Common Tasks" title="Direct link to Common Tasks" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=run-jurisdiction-discovery>Run Jurisdiction Discovery<a href=#run-jurisdiction-discovery class=hash-link aria-label="Direct link to Run Jurisdiction Discovery" title="Direct link to Run Jurisdiction Discovery" 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">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"># Test run (100 jurisdictions)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python main.py discover-jurisdictions --limit 100</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"># Single state</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python main.py discover-jurisdictions --state CA</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"># Full discovery (~30k jurisdictions)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python main.py discover-jurisdictions</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=ingest-reference-data>Ingest Reference Data<a href=#ingest-reference-data class=hash-link aria-label="Direct link to Ingest Reference Data" title="Direct link to Ingest Reference Data" 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"># Census jurisdictions (90,000+ entities)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python -m discovery.census_ingestion</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"># NCES school districts (13,000+)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python -m discovery.nces_ingestion</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"># Pre-built datasets</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/meetingbank_ingestion.py</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/city_scrapers_urls.py</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python discovery/openstates_sources.py</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=scrape-meeting-minutes>Scrape Meeting Minutes<a href=#scrape-meeting-minutes class=hash-link aria-label="Direct link to Scrape Meeting Minutes" title="Direct link to Scrape Meeting Minutes" 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"># Batch scraping from discovered sites</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python main.py scrape-batch --source discovered --limit 50</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"># Single jurisdiction</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python main.py scrape --url "https://chicago.legistar.com" \</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> --state "IL" \</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> --municipality "Chicago"</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=publish-to-huggingface>Publish to HuggingFace<a href=#publish-to-huggingface class=hash-link aria-label="Direct link to Publish to HuggingFace" title="Direct link to Publish to HuggingFace" 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"># Requires HUGGINGFACE_TOKEN in .env</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python main.py publish-to-hf --dataset all</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python main.py publish-to-hf --dataset discovered-urls</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python main.py publish-to-hf --dataset census --sample</span><br/></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=technology-stack>Technology Stack<a href=#technology-stack class=hash-link aria-label="Direct link to Technology Stack" title="Direct link to Technology Stack" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=backend>Backend<a href=#backend class=hash-link aria-label="Direct link to Backend" title="Direct link to Backend" translate=no>​</a></h3>
<ul>
<li class=""><strong>Python 3.11+</strong> - Core language</li>
<li class=""><strong>FastAPI</strong> - REST API framework</li>
<li class=""><strong>Delta Lake</strong> - Data lakehouse storage</li>
<li class=""><strong>Databricks</strong> - Production data platform</li>
<li class=""><strong>OpenAI API</strong> - LLM capabilities</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=frontend>Frontend<a href=#frontend class=hash-link aria-label="Direct link to Frontend" title="Direct link to Frontend" translate=no>​</a></h3>
<ul>
<li class=""><strong>React 18</strong> - UI framework</li>
<li class=""><strong>Vite</strong> - Build tool</li>
<li class=""><strong>TypeScript</strong> - Type safety</li>
<li class=""><strong>Leaflet</strong> - Interactive maps</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=data-processing>Data Processing<a href=#data-processing class=hash-link aria-label="Direct link to Data Processing" title="Direct link to Data Processing" translate=no>​</a></h3>
<ul>
<li class=""><strong>Pandas</strong> - Data manipulation</li>
<li class=""><strong>BeautifulSoup</strong> - HTML parsing</li>
<li class=""><strong>PyPDF2</strong> - PDF extraction</li>
<li class=""><strong>Tesseract OCR</strong> - Image to text</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=deployment>Deployment<a href=#deployment class=hash-link aria-label="Direct link to Deployment" title="Direct link to Deployment" translate=no>​</a></h3>
<ul>
<li class=""><strong>Docker</strong> - Containerization</li>
<li class=""><strong>tmux</strong> - Session management</li>
<li class=""><strong>Databricks Apps</strong> - Production hosting</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=api-reference>API Reference<a href=#api-reference class=hash-link aria-label="Direct link to API Reference" title="Direct link to API Reference" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=start-api-server>Start API Server<a href=#start-api-server class=hash-link aria-label="Direct link to Start API Server" title="Direct link to Start API Server" 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">python main.py serve --host 0.0.0.0 --port 8000</span><br/></div></code></pre></div></div>
<p>Visit <a href=http://localhost:8000/docs target=_blank rel="noopener noreferrer" class="">http://localhost:8000/docs</a> for interactive API documentation.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=example-start-workflow>Example: Start Workflow<a href=#example-start-workflow class=hash-link aria-label="Direct link to Example: Start Workflow" title="Direct link to Example: Start Workflow" 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">curl -X POST "http://localhost:8000/workflow/start" \</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> -H "Content-Type: application/json" \</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> -d '{</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "scrape_targets": [</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> {</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "url": "https://chicago.legistar.com",</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "municipality": "Chicago",</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "state": "IL",</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> "platform": "legistar"</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> }</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> ]</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"> }'</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=example-query-opportunities>Example: Query Opportunities<a href=#example-query-opportunities class=hash-link aria-label="Direct link to Example: Query Opportunities" title="Direct link to Example: Query Opportunities" 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">curl "http://localhost:8000/opportunities?state=CA&urgency=critical"</span><br/></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=development-workflow>Development Workflow<a href=#development-workflow class=hash-link aria-label="Direct link to Development Workflow" title="Direct link to Development Workflow" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=1-local-development>1. Local Development<a href=#1-local-development class=hash-link aria-label="Direct link to 1. Local Development" title="Direct link to 1. Local 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"># Terminal 1: API (with hot reload)</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 main.py serve --reload</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"># Terminal 2: Frontend (with hot reload)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">cd frontend</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">npm run dev</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"># Terminal 3: Documentation</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">cd website</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">npm start</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=2-testing>2. Testing<a href=#2-testing class=hash-link aria-label="Direct link to 2. Testing" title="Direct link to 2. 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"># Run all tests</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">pytest</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"># With coverage</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">pytest --cov=agents --cov=pipeline --cov=visualization</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"># Specific test file</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">pytest tests/test_agents.py</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=3-deployment>3. Deployment<a href=#3-deployment class=hash-link aria-label="Direct link to 3. Deployment" title="Direct link to 3. Deployment" 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"># Deploy to Databricks</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">export DATABRICKS_HOST=https://your-workspace.cloud.databricks.com</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">export DATABRICKS_TOKEN=dapi...</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">./scripts/deploy-databricks-app.sh</span><br/></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=data-pipeline>Data Pipeline<a href=#data-pipeline class=hash-link aria-label="Direct link to Data Pipeline" title="Direct link to Data Pipeline" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=medallion-architecture>Medallion Architecture<a href=#medallion-architecture class=hash-link aria-label="Direct link to Medallion Architecture" title="Direct link to Medallion Architecture" 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">Bronze (Raw) Silver (Cleaned) Gold (Analyzed)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">────────────────────────────────────────────────────────────</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">Scraped PDFs β†’ Extracted text β†’ Classifications</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">Meeting videos β†’ Transcripts β†’ Sentiment scores</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">Budget docs β†’ Line items β†’ Budget analysis</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">Form 990s β†’ Financial data β†’ Spending patterns</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=file-locations>File Locations<a href=#file-locations class=hash-link aria-label="Direct link to File Locations" title="Direct link to File Locations" translate=no>​</a></h3>
<ul>
<li class=""><strong>Bronze</strong>: <code>data/bronze/</code> - Raw downloaded files</li>
<li class=""><strong>Silver</strong>: <code>data/silver/</code> - Cleaned and standardized</li>
<li class=""><strong>Gold</strong>: <code>data/gold/</code> - Enriched with analysis</li>
<li class=""><strong>Cache</strong>: <code>cache/</code> - Temporary processing files</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=configuration>Configuration<a href=#configuration class=hash-link aria-label="Direct link to Configuration" title="Direct link to Configuration" translate=no>​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=environment-variables>Environment Variables<a href=#environment-variables class=hash-link aria-label="Direct link to Environment Variables" title="Direct link to Environment Variables" translate=no>​</a></h3>
<p>Create <code>.env</code> file:</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"># Required</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">OPENAI_API_KEY=sk-...</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># Optional (for production)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">DATABRICKS_HOST=https://your-workspace.cloud.databricks.com</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">DATABRICKS_TOKEN=dapi...</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># Optional (for publishing)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">HUGGINGFACE_TOKEN=hf_...</span><br/></div><div class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># Optional (for Harvard Dataverse)</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">DATAVERSE_API_KEY=...</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=settings-file>Settings File<a href=#settings-file class=hash-link aria-label="Direct link to Settings File" title="Direct link to Settings File" translate=no>​</a></h3>
<p>Edit <code>config/settings.py</code> for:</p>
<ul>
<li class="">Delta Lake paths</li>
<li class="">Scraping rate limits</li>
<li class="">Batch sizes</li>
<li class="">Model configurations</li>
</ul>
<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>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=1-fork--clone>1. Fork & Clone<a href=#1-fork--clone class=hash-link aria-label="Direct link to 1. Fork & Clone" title="Direct link to 1. Fork & Clone" 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">git clone https://github.com/YOUR-USERNAME/oral-health-policy-pulse.git</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">cd oral-health-policy-pulse</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">git remote add upstream https://github.com/getcommunityone/open-navigator-for-engagement.git</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=2-create-branch>2. Create Branch<a href=#2-create-branch class=hash-link aria-label="Direct link to 2. Create Branch" title="Direct link to 2. Create Branch" 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">git checkout -b feature/your-feature-name</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=3-make-changes>3. Make Changes<a href=#3-make-changes class=hash-link aria-label="Direct link to 3. Make Changes" title="Direct link to 3. Make Changes" translate=no>​</a></h3>
<ul>
<li class="">Add tests for new features</li>
<li class="">Update documentation</li>
<li class="">Follow existing code style</li>
<li class="">Keep commits focused and atomic</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=4-submit-pr>4. Submit PR<a href=#4-submit-pr class=hash-link aria-label="Direct link to 4. Submit PR" title="Direct link to 4. Submit PR" 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">git push origin feature/your-feature-name</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"># Then create PR on GitHub</span><br/></div></code></pre></div></div>
<p>See <a href=https://github.com/getcommunityone/open-navigator-for-engagement/blob/main/CONTRIBUTING.md target=_blank rel="noopener noreferrer" class="">CONTRIBUTING.md</a> for details.</p>
<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=port-already-in-use>Port Already in Use<a href=#port-already-in-use class=hash-link aria-label="Direct link to Port Already in Use" title="Direct link to Port Already in Use" 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"># Find process using port</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">lsof -i :8000</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">lsof -i :5173</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">lsof -i :3000</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"># Kill process</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">kill -9 &lt;PID></span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=dependencies-not-installing>Dependencies Not Installing<a href=#dependencies-not-installing class=hash-link aria-label="Direct link to Dependencies Not Installing" title="Direct link to Dependencies Not Installing" 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"># Clear cache and reinstall</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">rm -rf .venv</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">python3 -m venv .venv</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">source .venv/bin/activate</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">pip install --upgrade pip</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">pip install -r requirements.txt</span><br/></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id=scraping-failures>Scraping Failures<a href=#scraping-failures class=hash-link aria-label="Direct link to Scraping Failures" title="Direct link to Scraping Failures" translate=no>​</a></h3>
<p>Check logs:</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">tail -f logs/scraper.log</span><br/></div></code></pre></div></div>
<p>Adjust rate limits in <code>config/settings.py</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=next-steps>Next Steps<a href=#next-steps class=hash-link aria-label="Direct link to Next Steps" title="Direct link to Next Steps" translate=no>​</a></h2>
<ol>
<li class=""><strong>Read Architecture</strong> β†’ <a class="" href=/docs/architecture>System Design</a></li>
<li class=""><strong>Set Up Environment</strong> β†’ <a class="" href=/docs/quickstart>Quick Start</a></li>
<li class=""><strong>Run Discovery</strong> β†’ <a class="" href=/docs/guides/jurisdiction-setup>Jurisdiction Setup</a></li>
<li class=""><strong>Deploy to Production</strong> β†’ <a class="" href=/docs/deployment/databricks-apps>Databricks Apps</a></li>
<li class=""><strong>Contribute</strong> β†’ <a href=https://github.com/getcommunityone/open-navigator-for-engagement/issues target=_blank rel="noopener noreferrer" class="">GitHub Issues</a></li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=support>Support<a href=#support class=hash-link aria-label="Direct link to Support" title="Direct link to Support" translate=no>​</a></h2>
<ul>
<li class=""><strong>GitHub Issues</strong>: <a href=https://github.com/getcommunityone/open-navigator-for-engagement/issues target=_blank rel="noopener noreferrer" class="">Report bugs or request features</a></li>
<li class=""><strong>Documentation</strong>: Browse the sidebar</li>
<li class=""><strong>API Docs</strong>: <a href=http://localhost:8000/docs target=_blank rel="noopener noreferrer" class="">http://localhost:8000/docs</a></li>
<li class=""><strong>Email</strong>: <a href=mailto:johnbowyer@communityone.com target=_blank rel="noopener noreferrer" class="">johnbowyer@communityone.com</a></li>
</ul></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/for-developers.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--next" href=/docs/quickstart><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Quick Start Guide</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=#platform-scale--data-volume class="table-of-contents__link toc-highlight">Platform Scale & Data Volume</a><ul><li><a href=#storage--processing-requirements class="table-of-contents__link toc-highlight">Storage & Processing Requirements</a><li><a href=#api-rate-limits--quotas class="table-of-contents__link toc-highlight">API Rate Limits & Quotas</a></ul><li><a href=#what-youll-find-here class="table-of-contents__link toc-highlight">What You'll Find Here</a><ul><li><a href=#-setup--installation class="table-of-contents__link toc-highlight">πŸš€ Setup & Installation</a><li><a href=#-data-sources-technical class="table-of-contents__link toc-highlight">πŸ“Š Data Sources (Technical)</a><li><a href=#️-how-to-guides class="table-of-contents__link toc-highlight">πŸ› οΈ How-To Guides</a><li><a href=#-integrations class="table-of-contents__link toc-highlight">πŸ”Œ Integrations</a><li><a href=#-deployment class="table-of-contents__link toc-highlight">πŸš€ Deployment</a><li><a href=#-development class="table-of-contents__link toc-highlight">πŸ’» Development</a></ul><li><a href=#quick-start-tldr class="table-of-contents__link toc-highlight">Quick Start (TL;DR)</a><li><a href=#architecture-overview class="table-of-contents__link toc-highlight">Architecture Overview</a><li><a href=#common-tasks class="table-of-contents__link toc-highlight">Common Tasks</a><ul><li><a href=#run-jurisdiction-discovery class="table-of-contents__link toc-highlight">Run Jurisdiction Discovery</a><li><a href=#ingest-reference-data class="table-of-contents__link toc-highlight">Ingest Reference Data</a><li><a href=#scrape-meeting-minutes class="table-of-contents__link toc-highlight">Scrape Meeting Minutes</a><li><a href=#publish-to-huggingface class="table-of-contents__link toc-highlight">Publish to HuggingFace</a></ul><li><a href=#technology-stack class="table-of-contents__link toc-highlight">Technology Stack</a><ul><li><a href=#backend class="table-of-contents__link toc-highlight">Backend</a><li><a href=#frontend class="table-of-contents__link toc-highlight">Frontend</a><li><a href=#data-processing class="table-of-contents__link toc-highlight">Data Processing</a><li><a href=#deployment class="table-of-contents__link toc-highlight">Deployment</a></ul><li><a href=#api-reference class="table-of-contents__link toc-highlight">API Reference</a><ul><li><a href=#start-api-server class="table-of-contents__link toc-highlight">Start API Server</a><li><a href=#example-start-workflow class="table-of-contents__link toc-highlight">Example: Start Workflow</a><li><a href=#example-query-opportunities class="table-of-contents__link toc-highlight">Example: Query Opportunities</a></ul><li><a href=#development-workflow class="table-of-contents__link toc-highlight">Development Workflow</a><ul><li><a href=#1-local-development class="table-of-contents__link toc-highlight">1. Local Development</a><li><a href=#2-testing class="table-of-contents__link toc-highlight">2. Testing</a><li><a href=#3-deployment class="table-of-contents__link toc-highlight">3. Deployment</a></ul><li><a href=#data-pipeline class="table-of-contents__link toc-highlight">Data Pipeline</a><ul><li><a href=#medallion-architecture class="table-of-contents__link toc-highlight">Medallion Architecture</a><li><a href=#file-locations class="table-of-contents__link toc-highlight">File Locations</a></ul><li><a href=#configuration class="table-of-contents__link toc-highlight">Configuration</a><ul><li><a href=#environment-variables class="table-of-contents__link toc-highlight">Environment Variables</a><li><a href=#settings-file class="table-of-contents__link toc-highlight">Settings File</a></ul><li><a href=#contributing class="table-of-contents__link toc-highlight">Contributing</a><ul><li><a href=#1-fork--clone class="table-of-contents__link toc-highlight">1. Fork & Clone</a><li><a href=#2-create-branch class="table-of-contents__link toc-highlight">2. Create Branch</a><li><a href=#3-make-changes class="table-of-contents__link toc-highlight">3. Make Changes</a><li><a href=#4-submit-pr class="table-of-contents__link toc-highlight">4. Submit PR</a></ul><li><a href=#troubleshooting class="table-of-contents__link toc-highlight">Troubleshooting</a><ul><li><a href=#port-already-in-use class="table-of-contents__link toc-highlight">Port Already in Use</a><li><a href=#dependencies-not-installing class="table-of-contents__link toc-highlight">Dependencies Not Installing</a><li><a href=#scraping-failures class="table-of-contents__link toc-highlight">Scraping Failures</a></ul><li><a href=#next-steps class="table-of-contents__link toc-highlight">Next Steps</a><li><a href=#support class="table-of-contents__link toc-highlight">Support</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>