Skip to content

feat: duplicate detection (#154), eligibility criteria (#157), moderation queue (#159) - #170

Open
ZacLou wants to merge 1 commit into
Core-Foundry:mainfrom
ZacLou:feat/duplicate-eligibility-moderation
Open

feat: duplicate detection (#154), eligibility criteria (#157), moderation queue (#159)#170
ZacLou wants to merge 1 commit into
Core-Foundry:mainfrom
ZacLou:feat/duplicate-eligibility-moderation

Conversation

@ZacLou

@ZacLou ZacLou commented Aug 28, 2026

Copy link
Copy Markdown

Summary

This PR implements three Third Campaign bounty issues:

Issue #154: Duplicate Grant Detection

  • Created duplicate-detection.ts with Levenshtein distance-based title similarity comparison
  • Detects duplicates by comparing: title similarity (threshold 80%), organization match, description overlap (50%+)
  • Returns sorted DuplicateMatch[] with confidence scores

Issue #157: Grant Eligibility Criteria Fields

  • Created eligibility.ts with EligibilityCriteria interface (locations, applicantType, projectStage, teamSize, customRequirements)
  • validateEligibility() returns field-level errors
  • normalizeEligibility() applies defaults and trims
  • formatEligibilityForDisplay() for UI rendering

Issue #159: Admin Moderation Queue

  • Created moderation-queue.ts with in-memory Map store (matches existing task-workflow.ts pattern)
  • Operations: enqueue, list (with filter), approve, reject, dismiss
  • Items sorted: pending first → severity desc → date desc
  • Integrated into createTask(): new tasks auto-enqueued for review + duplicate detection runs against all existing tasks

Integration

  • task-workflow.ts modified: createTask() now calls detectDuplicates() and enqueues moderation items
  • resetTaskWorkflowStore() now also resets moderation store
  • New API routes: GET /api/moderation, GET/POST /api/moderation/[itemId]

Tests

  • 7 tests for duplicate detection
  • 10 tests for eligibility validation
  • 10 tests for moderation queue

Closes #154
Closes #157
Closes #159

Core-Foundry#157), moderation queue (Core-Foundry#159)

- Core-Foundry#154: Levenshtein-based title similarity + org/description overlap detection
  Flags potential duplicates for admin review without blocking creation
- Core-Foundry#157: Structured eligibility fields (location, applicant type, project stage,
  team size, custom requirements) with validation and display formatting
- Core-Foundry#159: Admin moderation queue with enqueue/list/approve/reject/dismiss
  Auto-enqueues new tasks and duplicate flags for review
- Integrated into createTask: duplicate detection + auto-moderation on creation
- Added API routes: GET /api/moderation, GET/POST /api/moderation/:itemId
- 30+ unit tests covering all three features
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add an Admin Moderation Queue Implement Grant Eligibility Criteria Fields Add Duplicate Grant Detection

1 participant