Public scan — anyone with this URL can view this analysis. Sign up to track your own repos privately, run scheduled re-scans, and get AI fix prompts via your dashboard.

Angelcotech/townwatch

https://github.com/Angelcotech/townwatch · scanned 2026-06-17 01:16 UTC (1 month, 2 weeks ago)

88 raw signals (0 security + 88 graph)

UNIFIED Repobility · multi-layer engine · AI coders

Complete repo analysis

Last scanned 1 month, 2 weeks ago · v2 · last Δ +15.6 (diff) · 76 actionable findings from 1 signal source. 12 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.

JSON
Severity distribution — click a segment to filter
Active filters: excluding tests × Reset all

All 1250 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.

LabelLayerStatusPath
go_to_profile software healthy etl/streamlit_app.py:101
go_to_staff_profile software healthy etl/streamlit_app.py:106
go_to_petitioner_profile software healthy etl/streamlit_app.py:111
go_to_roster software dead etl/streamlit_app.py:116
go_to_home software healthy etl/streamlit_app.py:123
load_roster software healthy etl/streamlit_app.py:135
_parse_staff_entry software healthy etl/streamlit_app.py:170
load_staff_roster software healthy etl/streamlit_app.py:188
load_petitioner_roster software healthy etl/streamlit_app.py:238
load_staff_member_record software healthy etl/streamlit_app.py:261
load_petitioner_record software healthy etl/streamlit_app.py:295
load_db_stats software healthy etl/streamlit_app.py:313
load_official_record software healthy etl/streamlit_app.py:328
render_header software healthy etl/streamlit_app.py:413
_load_home_stats software healthy etl/streamlit_app.py:436
_load_jurisdiction_meta software healthy etl/streamlit_app.py:503
_gap_line software healthy etl/streamlit_app.py:513
_render_citizens_tier software healthy etl/streamlit_app.py:521
_render_council_seat software healthy etl/streamlit_app.py:542
_render_mayor_seat_vacant software healthy etl/streamlit_app.py:562
_render_council_row software healthy etl/streamlit_app.py:576
_render_upstream_module software healthy etl/streamlit_app.py:597
_render_bodies_row software healthy etl/streamlit_app.py:615
_render_recent_decisions software healthy etl/streamlit_app.py:640
render_home_ladder software healthy etl/streamlit_app.py:655
_ladder_arrow software healthy etl/streamlit_app.py:695
render_roster software healthy etl/streamlit_app.py:708
_render_elected_roster software healthy etl/streamlit_app.py:750
_render_staff_roster software healthy etl/streamlit_app.py:774
_render_staff_card software healthy etl/streamlit_app.py:788
_render_petitioner_roster software healthy etl/streamlit_app.py:803
_load_quarantined_motions software healthy etl/streamlit_app.py:818
_render_quarantine_panel software healthy etl/streamlit_app.py:841
_render_petitioner_card software healthy etl/streamlit_app.py:874
_load_official_photo software healthy etl/streamlit_app.py:890
_initials software healthy etl/streamlit_app.py:906
_initials_svg software healthy etl/streamlit_app.py:916
_render_official_avatar software healthy etl/streamlit_app.py:934
_render_official_card software healthy etl/streamlit_app.py:951
render_profile software healthy etl/streamlit_app.py:969
_fetch_motion_extras software healthy etl/streamlit_app.py:1121
render_staff_profile software healthy etl/streamlit_app.py:1131
render_petitioner_profile software healthy etl/streamlit_app.py:1179
main software healthy etl/scripts/test_extract_one.py:34
upsert_user software healthy etl/townwatch_etl/accounts.py:20
set_home_jurisdiction software healthy etl/townwatch_etl/accounts.py:48
get_user software dead etl/townwatch_etl/accounts.py:97
_styles software healthy etl/townwatch_etl/records_request_pdf.py:32
_build_header software healthy etl/townwatch_etl/records_request_pdf.py:86
render software healthy etl/townwatch_etl/records_request_pdf.py:112

Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.

LabelLayerStatusPath
railway.toml software healthy railway.toml
railway.intake.toml software healthy railway.intake.toml
CORRECTIONS_INTAKE.md software healthy CORRECTIONS_INTAKE.md
railway.comments.toml software healthy railway.comments.toml
official_profile.sql software healthy api/queries/official_profile.sql
.env.example software healthy etl/.env.example
Procfile software healthy etl/Procfile
README.md software healthy etl/README.md
pyproject.toml software healthy etl/pyproject.toml
streamlit_app.py software healthy etl/streamlit_app.py
Dockerfile software healthy etl/Dockerfile
test_extract_one.py software healthy etl/scripts/test_extract_one.py
accounts.py software healthy etl/townwatch_etl/accounts.py
records_request_pdf.py software healthy etl/townwatch_etl/records_request_pdf.py
activity.py software healthy etl/townwatch_etl/activity.py
identity.py software healthy etl/townwatch_etl/identity.py
llm_client.py software healthy etl/townwatch_etl/llm_client.py
audit.py software healthy etl/townwatch_etl/audit.py
pricing.py software healthy etl/townwatch_etl/pricing.py
migrate.py software healthy etl/townwatch_etl/migrate.py
comments.py software healthy etl/townwatch_etl/comments.py
pipeline_health.py software healthy etl/townwatch_etl/pipeline_health.py
run_lock.py software healthy etl/townwatch_etl/run_lock.py
__init__.py software healthy etl/townwatch_etl/__init__.py
check_db.py software healthy etl/townwatch_etl/check_db.py
config.py software healthy etl/townwatch_etl/config.py
ingest_base.py software healthy etl/townwatch_etl/ingest_base.py
funds.py software healthy etl/townwatch_etl/funds.py
resilience.py software healthy etl/townwatch_etl/resilience.py
email_events.py software healthy etl/townwatch_etl/email_events.py
http_client.py software healthy etl/townwatch_etl/http_client.py
document_text.py software healthy etl/townwatch_etl/document_text.py
timezones.py software healthy etl/townwatch_etl/timezones.py
corrections.py software healthy etl/townwatch_etl/corrections.py
extraction_ledger.py software healthy etl/townwatch_etl/extraction_ledger.py
jurisdiction.py software healthy etl/townwatch_etl/jurisdiction.py
build_phases.py software healthy etl/townwatch_etl/build_phases.py
api.py software healthy etl/townwatch_etl/api.py
email_client.py software healthy etl/townwatch_etl/email_client.py
extraction_cache.py software healthy etl/townwatch_etl/extraction_cache.py
db.py software healthy etl/townwatch_etl/db.py
daily_refresh.py software healthy etl/townwatch_etl/jobs/daily_refresh.py
extract_agendas.py software healthy etl/townwatch_etl/jobs/extract_agendas.py
merge_officials.py software healthy etl/townwatch_etl/jobs/merge_officials.py
reextract_with_vision.py software healthy etl/townwatch_etl/jobs/reextract_with_vision.py
create_historical_staff_stubs.py software healthy etl/townwatch_etl/jobs/create_historical_staff_stubs.py
submit_comments.py software healthy etl/townwatch_etl/jobs/submit_comments.py
refresh_council_roster.py software healthy etl/townwatch_etl/jobs/refresh_council_roster.py
sync_capabilities.py software healthy etl/townwatch_etl/jobs/sync_capabilities.py
cleanup_non_voting_officials.py software healthy etl/townwatch_etl/jobs/cleanup_non_voting_officials.py

Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.

LabelLayerStatusPath
OfficialCandidate software healthy etl/townwatch_etl/identity.py:146
CachedResolver software healthy etl/townwatch_etl/identity.py:373
ModelUsage software healthy etl/townwatch_etl/pricing.py:55
Usage software healthy etl/townwatch_etl/pricing.py:70
IngestJob software healthy etl/townwatch_etl/ingest_base.py:27
Gate software healthy etl/townwatch_etl/funds.py:308
_AdaptiveHostThrottle software healthy etl/townwatch_etl/http_client.py:90
CivicClient software healthy etl/townwatch_etl/http_client.py:349
Resolution software healthy etl/townwatch_etl/timezones.py:172
CorrectionIn software healthy etl/townwatch_etl/api.py:40
UserSyncIn software healthy etl/townwatch_etl/api.py:50
HomeJurisdictionIn software healthy etl/townwatch_etl/api.py:56
CommentIn software healthy etl/townwatch_etl/api.py:61
EmailDeliveryEventIn software healthy etl/townwatch_etl/api.py:70
AgendasExtract software healthy etl/townwatch_etl/jobs/extract_agendas.py:60
MergeCandidate software healthy etl/townwatch_etl/jobs/merge_officials.py:35
CreateHistoricalStaffStubs software healthy etl/townwatch_etl/jobs/create_historical_staff_stubs.py:90
CouncilRosterRefresh software healthy etl/townwatch_etl/jobs/refresh_council_roster.py:67
CivicPlusBoardRosters software healthy etl/townwatch_etl/jobs/civicplus_board_rosters.py:49
BoundaryIngest software healthy etl/townwatch_etl/jobs/ingest_boundary.py:58
CampaignFinanceExtract software healthy etl/townwatch_etl/jobs/extract_campaign_finance.py:51
ElectionIngest software healthy etl/townwatch_etl/jobs/ingest_elections.py:79
MinutesExtract software healthy etl/townwatch_etl/jobs/extract_minutes.py:60
QPublicPropertyRecords software healthy etl/townwatch_etl/jobs/qpublic_property_records.py:29
ObservedFinding software healthy etl/townwatch_etl/jobs/refresh_findings.py:30
ElectionSourceProposal software healthy etl/townwatch_etl/jobs/discover_election_source.py:89
DistrictIngest software healthy etl/townwatch_etl/jobs/ingest_districts.py:55
CampaignFinanceIngest software healthy etl/townwatch_etl/jobs/ingest_campaign_finance.py:69
AcquireOfficialPhotos software healthy etl/townwatch_etl/jobs/acquire_official_photos.py:46
RepairQualityIssues software healthy etl/townwatch_etl/jobs/repair_quality_issues.py:30
CheckResult software healthy etl/townwatch_etl/jobs/scan_document_availability.py:75
CivicEngageOfficials software healthy etl/townwatch_etl/jobs/civicengage_officials.py:33
AcquireStaff software healthy etl/townwatch_etl/jobs/acquire_staff.py:54
_MeetingRecordProto software healthy etl/townwatch_etl/jobs/meetings_inventory.py:50
_PlatformBinding software healthy etl/townwatch_etl/jobs/meetings_inventory.py:63
MeetingsInventory software healthy etl/townwatch_etl/jobs/meetings_inventory.py:192
BodyResult software healthy etl/townwatch_etl/jobs/onboarding_smoke_test.py:64
RunPatterns software healthy etl/townwatch_etl/jobs/run_patterns.py:59
DistrictProposal software healthy etl/townwatch_etl/jobs/discover_gis_districts.py:85
BackfillHistoricalOfficials software healthy etl/townwatch_etl/jobs/backfill_historical_officials.py:37
OfficialRecord software healthy etl/townwatch_etl/scrapers/civicengage_officials_table.py:29
ScrapeResult software healthy etl/townwatch_etl/scrapers/civicengage_officials_table.py:38
MeetingRecord software healthy etl/townwatch_etl/scrapers/civicengage_agendacenter.py:87
MeetingRecord software healthy etl/townwatch_etl/scrapers/civicclerk_meetings.py:84
CalendarMeeting software healthy etl/townwatch_etl/scrapers/civicengage_calendar.py:46
MeetingRecord software healthy etl/townwatch_etl/scrapers/edlio_meetings.py:38
PhotoCandidate software healthy etl/townwatch_etl/scrapers/photos/base.py:16
PhotoScraper software healthy etl/townwatch_etl/scrapers/photos/base.py:43
CivicEngagePhotoScraper software healthy etl/townwatch_etl/scrapers/photos/civicengage.py:37
CCDRContribution software healthy etl/townwatch_etl/campaign_finance/extract.py:32

Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.

LabelLayerStatusPath
026_meeting_scan_timestamps.sql data healthy migrations/026_meeting_scan_timestamps.sql
042_jurisdiction_capability.sql data healthy migrations/042_jurisdiction_capability.sql
031_datum_provenance.sql data healthy migrations/031_datum_provenance.sql
036_comment_digest.sql data healthy migrations/036_comment_digest.sql
005_data_status.sql data healthy migrations/005_data_status.sql
046_records_request_pdf_blob.sql data healthy migrations/046_records_request_pdf_blob.sql
053_data_source_jurisdiction.sql data healthy migrations/053_data_source_jurisdiction.sql
012_meeting_ai_summaries.sql data healthy migrations/012_meeting_ai_summaries.sql
034_accounts_and_comments.sql data healthy migrations/034_accounts_and_comments.sql
023_records_request_tone.sql data healthy migrations/023_records_request_tone.sql
054_pipeline_issue_org_level.sql data healthy migrations/054_pipeline_issue_org_level.sql
030_jurisdiction_directory.sql data healthy migrations/030_jurisdiction_directory.sql
002_seed_data_sources.sql data healthy migrations/002_seed_data_sources.sql
024_records_request_consolidation.sql data healthy migrations/024_records_request_consolidation.sql
056_directory_bundles.sql data healthy migrations/056_directory_bundles.sql
010_official_is_active.sql data healthy migrations/010_official_is_active.sql
043_jurisdiction_capability_detail.sql data healthy migrations/043_jurisdiction_capability_detail.sql
048_government_budget_local_source.sql data healthy migrations/048_government_budget_local_source.sql
011_agenda_item.sql data healthy migrations/011_agenda_item.sql
050_pipeline_health.sql data healthy migrations/050_pipeline_health.sql
019_jurisdiction_office_contact.sql data healthy migrations/019_jurisdiction_office_contact.sql
020_jurisdiction_district.sql data healthy migrations/020_jurisdiction_district.sql
039_jurisdiction_timezone_status.sql data healthy migrations/039_jurisdiction_timezone_status.sql
058_directory_nav_county_set.sql data healthy migrations/058_directory_nav_county_set.sql
032_data_correction.sql data healthy migrations/032_data_correction.sql
021_jurisdiction_boundary.sql data healthy migrations/021_jurisdiction_boundary.sql
044_clerk_contact_health.sql data healthy migrations/044_clerk_contact_health.sql
035_home_jurisdiction_set_at.sql data healthy migrations/035_home_jurisdiction_set_at.sql
028_jurisdiction_funds.sql data healthy migrations/028_jurisdiction_funds.sql
027_extraction_outcome.sql data healthy migrations/027_extraction_outcome.sql
057_directory_nav_fields.sql data healthy migrations/057_directory_nav_fields.sql
055_directory_school_districts.sql data healthy migrations/055_directory_school_districts.sql
014_pipeline_failure.sql data healthy migrations/014_pipeline_failure.sql
047_government_budget.sql data healthy migrations/047_government_budget.sql
004_comprehensive_motion_fields.sql data healthy migrations/004_comprehensive_motion_fields.sql
025_meeting_placeholder_flags.sql data healthy migrations/025_meeting_placeholder_flags.sql
007_drop_unused_geo.sql data healthy migrations/007_drop_unused_geo.sql
013_compliance_finding.sql data healthy migrations/013_compliance_finding.sql
018_photo_source_tier_county.sql data healthy migrations/018_photo_source_tier_county.sql
060_document_text_url_index.sql data healthy migrations/060_document_text_url_index.sql
045_clerk_contact_observed.sql data healthy migrations/045_clerk_contact_observed.sql
037_agenda_packet.sql data healthy migrations/037_agenda_packet.sql
029_extraction_cache.sql data healthy migrations/029_extraction_cache.sql
017_meeting_agenda_posted_at.sql data healthy migrations/017_meeting_agenda_posted_at.sql
003_finding_table.sql data healthy migrations/003_finding_table.sql
052_jurisdiction_slug.sql data healthy migrations/052_jurisdiction_slug.sql
049_document_text.sql data healthy migrations/049_document_text.sql
009_official_is_elected.sql data healthy migrations/009_official_is_elected.sql
008_official_display_title.sql data healthy migrations/008_official_display_title.sql
015_records_request.sql data healthy migrations/015_records_request.sql

Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.

LabelLayerStatusPath
jurisdiction_capability data healthy migrations/042_jurisdiction_capability.sql
comment_digest data healthy migrations/036_comment_digest.sql
app_user data healthy migrations/034_accounts_and_comments.sql
public_comment data healthy migrations/034_accounts_and_comments.sql
jurisdiction_directory data healthy migrations/030_jurisdiction_directory.sql
agenda_item data healthy migrations/011_agenda_item.sql
pipeline_run data healthy migrations/050_pipeline_health.sql
pipeline_issue data healthy migrations/050_pipeline_health.sql
jurisdiction_district data healthy migrations/020_jurisdiction_district.sql
data_correction data healthy migrations/032_data_correction.sql
jurisdiction_fund data healthy migrations/028_jurisdiction_funds.sql
fund_ledger data healthy migrations/028_jurisdiction_funds.sql
fund_reservation data healthy migrations/028_jurisdiction_funds.sql
extraction_outcome data healthy migrations/027_extraction_outcome.sql
pipeline_failure data healthy migrations/014_pipeline_failure.sql
government_budget data healthy migrations/047_government_budget.sql
compliance_finding data healthy migrations/013_compliance_finding.sql
document_text_url data healthy migrations/060_document_text_url_index.sql
extraction_cache data healthy migrations/029_extraction_cache.sql
finding data healthy migrations/003_finding_table.sql
document_text data healthy migrations/049_document_text.sql
records_request data healthy migrations/015_records_request.sql
pipeline_fix data healthy migrations/051_pipeline_fix.sql
official_photo data healthy migrations/006_official_photo.sql
data_source data healthy migrations/001_initial_schema.sql
jurisdiction data healthy migrations/001_initial_schema.sql
governing_body data healthy migrations/001_initial_schema.sql
seat data healthy migrations/001_initial_schema.sql
official data healthy migrations/001_initial_schema.sql
official_alias data healthy migrations/001_initial_schema.sql
term data healthy migrations/001_initial_schema.sql
meeting data healthy migrations/001_initial_schema.sql
motion data healthy migrations/001_initial_schema.sql
vote data healthy migrations/001_initial_schema.sql
campaign_contribution data healthy migrations/001_initial_schema.sql
property_record data healthy migrations/001_initial_schema.sql
activity_log data healthy migrations/041_activity_log.sql
jurisdiction_onboarding_estimate data healthy migrations/040_onboarding_estimate.sql
campaign_filing data healthy migrations/016_campaign_filing.sql
schema_migrations data healthy etl/townwatch_etl/migrate.py

LabelLayerStatusPath
api software healthy api
queries software healthy api/queries
etl software healthy etl
scripts software healthy etl/scripts
townwatch_etl software healthy etl/townwatch_etl
jobs software healthy etl/townwatch_etl/jobs
scrapers software healthy etl/townwatch_etl/scrapers
photos software healthy etl/townwatch_etl/scrapers/photos
campaign_finance software healthy etl/townwatch_etl/campaign_finance
recon software healthy etl/townwatch_etl/recon
patterns software healthy etl/townwatch_etl/patterns
repair software healthy etl/townwatch_etl/repair
handlers software healthy etl/townwatch_etl/repair/handlers
extractors software healthy etl/townwatch_etl/extractors
docs software healthy docs
research software healthy research
state_pipeline software healthy research/state_pipeline
ga_recon software healthy research/ga_recon
orr_drafts software healthy research/ga_recon/orr_drafts
jurisdictions software healthy jurisdictions
_state_defaults software healthy jurisdictions/_state_defaults
migrations software healthy migrations

LabelLayerStatusPath
GET /healthz api healthy etl/townwatch_etl/api.py
POST /corrections api healthy etl/townwatch_etl/api.py
POST /users/sync api healthy etl/townwatch_etl/api.py
POST /users/home-jurisdiction api healthy etl/townwatch_etl/api.py
POST /comments api healthy etl/townwatch_etl/api.py
POST /email/delivery-event api healthy etl/townwatch_etl/api.py

LabelLayerStatusPath
postgres data healthy railway.comments.toml
postgresql data healthy etl/.env.example

LabelLayerStatusPath
vps::droplet hardware healthy research/ga_recon/registry.json
vps::azure hardware healthy research/ga_recon/registry.json

LabelLayerStatusPath
Angelcotech__townwatch software healthy /data/fable5_failed_archive/Angelcotech__townwatch

LabelLayerStatusPath
126.0.0.0 network healthy etl/townwatch_etl/http_client.py

LabelLayerStatusPath
image::etl/Dockerfile hardware healthy etl/Dockerfile
For AI agents: Voting guide (TP/FP) MCP manifest Stdio wrapper SARIF Integrate Findings queue Vote TP/FP on findings to calibrate the engine.
For AI agents + API integrations
Email me when this repo regresses
Free. We re-scan periodically; new criticals → your inbox. No signup required for the scan itself.
API access

This page is publicly accessible at: https://repobility.com/scan/e6c18571-f643-4903-9c4a-1a2242813575/

To check status programmatically (no auth required):

curl -s https://repobility.com/api/v1/public/scan/e6c18571-f643-4903-9c4a-1a2242813575/

Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.