LIVE
IDLEAwaiting updates…
LexConsumer

CheckGres

Municipal government efficiency scoring for journalists — public city pages, exports, historical trends, Stripe billing, embeds, and API v1 are shipped; next milestone is automating Census, FBI, and GFOA data pipelines plus maps and alerts

Competes with Socrata

Data ScaleLexConsumer
Key metrics
  • City pages published
    Measured
    Not measured

    Distinct municipal city pages live in the public directory.

  • Weekly unique visitors
    Needs instrumentation
    Not measured

    Distinct visitors landing on city or comparison pages each week.

  • MRR
    Needs instrumentation
    Not measured

    Monthly recurring revenue from journalist and newsroom subscriptions.

Roadmap

76 items
Planned44
Alert preferences are configurable from user settings
All embeds include CheckGres branding and link back to the city page
All phase tests pass
All phase tests pass
API documentation page exists at `/docs/api`
API is rate-limited (free: 100 req/day, Pro: 1K/day, Institutional: 10K/day)
API keys can be generated from user settings
Census Bureau data pipeline imports revenue/expenditure data for 1,000+ municipalities
Census Bureau data pipeline imports revenue/expenditure data for 1,000+ municipalities *(blocked: no CENSUS_API_KEY configured)*
Data pipelines run on schedule and log results to `dataImport` table
Data pipelines run on schedule and log results to `dataImport` table *(blocked: no DATABASE_URL configured)*
Embed code generator produces working iframe and script tags
Embeddable score card renders correctly when embedded via iframe on external sites
FBI UCR pipeline imports crime data for municipalities with matching records
FBI UCR pipeline imports crime data for municipalities with matching records *(blocked: no FBI_API_KEY configured)*
GFOA award data imported for all award recipients
GFOA award data imported for all award recipients *(blocked: no GFOA Excel file available)*
Map supports zoom/pan and geographic filtering
Map view on landing page shows color-coded municipalities
No regressions in previous tests (123 Phase 1-3 tests still pass)
No regressions in previous tests (85 Phase 1+2 tests still pass)
Pro features (export, trends, embeds) are gated behind active subscription
Public API returns JSON for `/api/v1/municipalities`, `/api/v1/scores`, `/api/v1/compare`
Scores are automatically recalculated after new data imports
Scores are automatically recalculated after new data imports *(blocked: no DATABASE_URL configured)*
Step 3.14: Run all tests, verify Phase 3 features
Step 4.1: Write failing tests for pipeline data transformation and validation
Step 4.10: Map visualization — library and landing page map
Step 4.11: Map dashboard view and geographic filtering
Step 4.12: Email infrastructure and score change detection
Step 4.13: Alert preferences UI and scheduled alert delivery
Step 4.14: Run all tests, verify Phase 4 features
Step 4.2: Pipeline infrastructure — scoring trigger, audit logging, pipeline runner
Step 4.3: Census Bureau data pipeline — fetcher and parser
Step 4.4: Census pipeline — municipality matching and data insertion
Step 4.5: FBI Crime Data API pipeline — fetcher and ORI mapper
Step 4.6: FBI pipeline — data insertion and matching verification
Step 4.7: GFOA Award pipeline — Excel parser and data insertion
Step 4.8: Pipeline orchestrator and scheduled execution
Step 4.9: Auto-scoring after pipeline runs + data freshness tracking
Stripe checkout flow works for Pro and Institutional tiers
Subscription management (upgrade, downgrade, cancel) works from user settings
Users receive email alerts when a followed city's score changes significantly
Users receive email alerts when a followed city's score changes significantly *(blocked: no RESEND_API_KEY configured)*
Done32
Alert preferences are configurable from user settings
All phase tests pass *(177/177 — 2026-04-11)*
Map supports zoom/pan and geographic filtering *(Leaflet-based, verified in code)*
Map view on landing page shows color-coded municipalities *(code verified: municipality-map.tsx + dashboard-map-view.tsx)*
No regressions in previous tests (123 Phase 1-3 tests still pass) *(verified 2026-04-11)*
Step 3.1: Write failing tests for Phase 3 utility functions
Step 3.10: API key management — generate, revoke, list
Step 3.11: Embeddable score card widget
Step 3.12: Embed code generator
Step 3.13: API documentation page
Step 3.2: Database schema — add subscription and API key tables
Step 3.3: Billing and API key utility functions
Step 3.4: Subscription tier middleware for tRPC
Step 3.5: Stripe integration — checkout, webhook handler, billing tRPC router
Step 3.6: Pricing page and checkout flow
Step 3.7: Account billing page (subscription management)
Step 3.8: Gate pro features (export, bulk export) behind subscription
Step 3.9: Public REST API v1 — municipalities, scores, compare
Step 4.1: Write failing tests for pipeline data transformation and validation
Step 4.10: Map visualization — library and landing page map
Step 4.11: Map dashboard view and geographic filtering
Step 4.12: Email infrastructure and score change detection
Step 4.13: Alert preferences UI and scheduled alert delivery
Step 4.14: Run all tests, verify Phase 4 features
Step 4.2: Pipeline infrastructure — scoring trigger, audit logging, pipeline runner
Step 4.3: Census Bureau data pipeline — fetcher and parser
Step 4.4: Census pipeline — municipality matching and data insertion
Step 4.5: FBI Crime Data API pipeline — fetcher and ORI mapper
Step 4.6: FBI pipeline — data insertion and matching verification
Step 4.7: GFOA Award pipeline — Excel parser and data insertion
Step 4.8: Pipeline orchestrator and scheduled execution
Step 4.9: Auto-scoring after pipeline runs + data freshness tracking

Timeline

20 events
April 2026
docs
docs: add generated roadmap json
Apr 15static-
docs
docs: reconcile Phase 7 billing documentation
Apr 14static-
chore
chore(deps): regenerate package-lock.json
Apr 13static-
feature
feat(billing): add annual billing intervals with monthly/yearly toggle
Apr 13static-
fix
fix(types): widen ErrorFallbackProps.error to unknown for react-error-boundary compat
Apr 13static-
chore
chore(deps): add vitest as devDependency
Apr 13static-
feature
feat(billing): migrate to namespaced Stripe lookup keys + metadata contract
Apr 13static-
docs
docs(tasks): add Phase 7 Stripe setup tasks
Apr 13static-
docs
docs(tasks): log Step 4.14 session history
Apr 11static-
fix
fix(alerts): add dotenv loading to send-alerts script; complete Phase 4 verification
Apr 11static-
docs
docs(tasks): plan Step 4.14 — final Phase 4 verification
Apr 11static-
docs
docs(tasks): mark Step 4.13 complete, log session history
Apr 11static-
fix
fix(lint): replace arguments with rest params in email test mock
Apr 11static-
feature
feat(alerts): add alert preferences UI and scheduled delivery script
Apr 11static-
docs
docs(tasks): plan Step 4.13 — alert preferences UI and scheduled delivery
Apr 11static-
docs
docs(tasks): mark Step 4.12 complete, log session history
Apr 11static-
feature
feat(alerts): add email infrastructure and score change detection
Apr 11static-
docs
docs(tasks): mark Step 4.11 complete, plan Step 4.12, log session history
Apr 11static-
docs
docs(tasks): mark Step 4.11 complete, log session history
Apr 11static-
feature
feat(dashboard): add map/list toggle view with geographic filtering
Apr 11static-

Dev Docs

3 files

Docs

  • Comprehensive ICP Analysis: CheckGres
    May 15, 20263.2 KB
  • GTM Strategy: CheckGres
    May 15, 20266.9 KB

Specs

  • MVP Gap Analysis
    May 15, 20267.4 KB