Skip to content

Releases: open-horizon-labs/northwoods

Release v1.0.3

Choose a tag to compare

@github-actions github-actions released this 29 Mar 15:41
a21fa70

What's Changed

  • fix: support image uploads in document source viewer by @muness in #193
  • feat: add PWA manifest for mobile Add to Home Screen by @muness in #194

Full Changelog: v1.0.2...v1.0.3

Release v1.0.2

Choose a tag to compare

@github-actions github-actions released this 29 Mar 14:53
600fa53

What's Changed

  • fix: auto-reload on stale chunk errors after deploy by @muness in #192

Full Changelog: v1.0.1...v1.0.2

Release v1.0.1

Choose a tag to compare

@github-actions github-actions released this 29 Mar 14:45
1536e4a

What's Changed

  • fix: increase nginx upload limit to 20MB + simplify mobile file input by @muness in #190

Full Changelog: v1.0.0...v1.0.1

Release v1.0.0

Choose a tag to compare

@muness muness released this 29 Mar 14:28
196be8f

Northwoods v1.0.0 — the complete CTO programming exercise submission.

What Northwoods does

Northwoods turns scanned handwritten intake forms into structured, searchable case records. Intake workers upload documents, an AI extraction pipeline (OpenAI Vision) reads them, and reviewers verify the results in a confidence-guided workflow. A 5-signal hybrid RAG system surfaces similar historical cases during review to support decision-making.

Platform

  • .NET 10 API + extraction worker (Minimal APIs, Dapper)
  • React 19 + Vite + Tailwind CSS v4 frontend with PDF.js viewer
  • Postgres 18 with pgvector, pg_trgm, full-text search
  • Multi-tenant with Row-Level Security on all 7 tables
  • Docker multi-stage builds, deployed to Render via ghcr.io

Key capabilities

Intake pipeline

  • Template-guided upload with 4 form types
  • OpenAI Vision extraction with nano → mini model escalation on low confidence
  • Confidence scoring per field with color-coded review UI
  • Downloadable blank PDFs for each template

Review workflow

  • Side-by-side PDF viewer + extracted fields with drag-to-resize panels
  • Confidence-based field highlighting (green/blue/amber/red)
  • Inline correction, reviewer notes, and finalization with audit trail
  • Auto-accept for high-confidence documents

Hybrid RAG retrieval

  • 5-signal Reciprocal Rank Fusion: full-text search + vector cosine + name trigram + address trigram + DOB exact match
  • OpenAI text-embedding-3-small (1536d) with HNSW index
  • Surfaces similar historical cases during review
  • RAG quality report at /rag-report

Search and case management

  • Cross-field search across all intakes
  • Case timeline view aggregating documents per applicant

Multi-tenancy

  • JWT-based auth with tenant claim
  • SET LOCAL app.tenant_id per database session
  • RLS policies on every table, verified by CI (ADR compliance check)
  • Two demo tenants: Sunrise Community Services, Lakewood Family Center

Infrastructure

  • CI: 5 checks per PR — Build, Test, Playwright e2e, ADR Compliance, Secret Scan
  • Code quality: GitHub CodeQL + CodeRabbit AI review on every PR
  • Deploy: Tag-triggered pipeline builds Docker images, pushes to ghcr.io, deploys to Render, runs production smoke test
  • Branch protection: PRs required, all checks must pass

Documentation

Demo

  • Live: https://northwoods.muness.com
  • Click "Reviewing Muness's submission?" on the login page for quick credentials
  • 184 synthetic intake documents across 40 fictional people with designed narrative arcs

Stats

  • 201 commits, 189 PRs
  • 40-person synthetic corpus with longitudinal care patterns
  • 5-signal retrieval completing in 50–200ms

What's Changed

  • fix: remove /#dev smoke test — page was deleted in #187 by @muness in #188
  • release: v1.0.0 — outcomes delivered + handwriting test by @muness in #189

Full Changelog: v0.7.3...v1.0.0

Release v0.7.3

Choose a tag to compare

@github-actions github-actions released this 29 Mar 14:14

What's Changed

  • fix: remove /#dev scaffold page and add RAG Report link to reviewer header by @muness in #187

Full Changelog: v0.7.2...v0.7.3

Release v0.7.2

Choose a tag to compare

@github-actions github-actions released this 29 Mar 14:04

What's Changed

  • fix: handle pointercancel and clean up styles on unmount by @muness in #185

Full Changelog: v0.7.1...v0.7.2

Release v0.7.1

Choose a tag to compare

@github-actions github-actions released this 29 Mar 13:47
e76464c

What's Changed

  • fix: replace ChatGPT sample PDFs with blank v2 template PDFs by @muness in #176
  • fix: remove RAG Report link from login page by @muness in #178
  • fix: reviewer login should route to review queue, not RAG Report by @muness in #180
  • fix: simplify RAG Report to minimal layout by @muness in #182
  • feat: resizable PDF preview and sidebar in reviewer view by @muness in #184

Full Changelog: v0.7.0...v0.7.1

Release v0.7.0

Choose a tag to compare

@github-actions github-actions released this 29 Mar 12:40
04398e6

What's Changed

  • fix: update Docker images from .NET 10 preview to GA by @muness in #164
  • feat: mobile-responsive layout for Worker dashboard by @muness in #171
  • fix: remove RAG Report link from reviewer navigation by @muness in #169
  • feat: improve reviewer credentials dialog with all tenants and users by @muness in #170
  • feat: resizable PDF/form panel split with localStorage persistence by @muness in #172
  • feat: URL deep linking for reviewer dashboard views by @muness in #173
  • chore: upgrade all dependencies to latest stable versions by @muness in #174

Full Changelog: v0.6.1...v0.7.0

Release v0.6.1

Choose a tag to compare

@github-actions github-actions released this 29 Mar 05:40

Full Changelog: v0.6.0...v0.6.1

Release v0.6.0

Choose a tag to compare

@github-actions github-actions released this 29 Mar 05:36
8677e25

What's Changed

  • fix: include Admin role in auth restore + seed blank template PDFs by @muness in #160
  • fix: correct documentation accuracy — threshold, Playwright, API table, model names by @muness in #161
  • feat: add Scalar API docs, search empty state, queue name fallback by @muness in #162
  • refactor: extract ReviewerDashboard components + consolidate duplicate code by @muness in #163

Full Changelog: v0.5.0...v0.6.0