Agent-usable town operations triage and service coordination for NANDA Town.
TownOps Skill gives autonomous agents a clean, structured way to report, prioritize, assign, and resolve municipal issues through live API endpoints and a comprehensive SKILL.md.
- Usefulness: Solves real municipal operations challenges
- Creativity: Agent-first design, not human-first UI
- Easy Setup:
npm install && npm run dev— works immediately - Agent Usability: SKILL.md alone is sufficient for any agent to operate the service
Report → Triage → Assign → Update → Resolve
- Report: Agent creates a structured issue
- Triage: AI classifies type, severity, urgency
- Prioritize: Deterministic scoring with weighted factors
- Assign: Route to correct department with SLA
- Update: Track status transitions with audit log
- Resolve: Generate resident-facing updates
The SKILL.md is the product interface. Any agent that reads it can:
- Create issues with structured data
- Classify issues using AI
- Assign to departments
- Update status through workflow
- Generate resident updates
- Query zone priorities
No human guidance needed. No UI required.
- Enhanced issue detail component
- Status badges, priority meters, agent actions
- Branch:
hackathon/townops-skill-enhanced-issue-view
- 8 live API endpoints
- SKILL.md for agent usability
- AI-powered classification and updates
- Deterministic workflow engine
- Node.js 18+
- NVIDIA NIM API key
npm install# .env.local
NIM_API_KEY=nvapi-your-key-herenpm run dev
# Open http://localhost:3000npx vercel
# Set NIM_API_KEY in Vercel dashboard| Method | Path | Description |
|---|---|---|
| POST | /api/issues | Create issue |
| GET | /api/issues | List issues |
| GET | /api/issues?id={id} | Get issue summary |
| POST | /api/issues/{id}/classify | Classify with AI |
| POST | /api/issues/{id}/assign | Assign department |
| POST | /api/issues/{id}/status | Update status |
| GET | /api/zone-priorities | Zone priority summary |
| POST | /api/issues/{id}/resident-update | Generate update |
- Open http://localhost:3000
- Click "Try Demo"
- See 10 seeded issues across NANDA Town zones
- Click "Report Issue" to create a new one
- Click into any issue to see details, timeline, and actions
- Use "Move to..." buttons to advance workflow
- Generate resident-facing updates with AI
- Visit SKILL.md viewer to see the agent interface
- Test endpoints in the API Inspector
- Next.js 15 (App Router)
- TypeScript
- Tailwind CSS v4
- Zod (validation)
- SQLite (storage)
- NVIDIA NIM (AI inference)
- Lucide React (icons)
/
├── app/
│ ├── api/
│ │ ├── issues/
│ │ │ ├── route.ts # POST/GET issues
│ │ │ ├── [id]/
│ │ │ │ ├── route.ts # GET issue summary
│ │ │ │ ├── classify/ # POST classify
│ │ │ │ ├── assign/ # POST assign
│ │ │ │ ├── status/ # POST update status
│ │ │ │ └── resident-update/ # POST generate update
│ │ │ └── list/route.ts # GET list with filters
│ │ ├── zone-priorities/route.ts # GET zone priorities
│ │ └── summary/route.ts # GET zone summary
│ ├── demo/
│ │ ├── page.tsx # Issue board
│ │ └── [id]/page.tsx # Issue detail
│ ├── api-inspector/page.tsx # API tester
│ ├── skill-viewer/page.tsx # SKILL.md viewer
│ ├── architecture/page.tsx # Judge-facing docs
│ ├── page.tsx # Landing page
│ ├── layout.tsx # Root layout
│ └── globals.css # Styles
├── lib/
│ ├── schemas/index.ts # Zod schemas
│ ├── db/index.ts # SQLite database
│ ├── ai/
│ │ ├── nim.ts # NVIDIA NIM client
│ │ ├── classify.ts # Issue classification
│ │ ├── resident-update.ts # Update generator
│ │ └── summary.ts # Zone summaries
│ ├── issues/index.ts # Issue service
│ ├── priority/index.ts # Priority engine
│ ├── assignment/index.ts # Assignment engine
│ └── utils.ts # Utilities
├── docs/
│ ├── skill-design.md
│ ├── phase1-pr.md
│ ├── architecture.md
│ ├── demo-script.md
│ ├── setup.md
│ ├── judging-hook.md
│ ├── prompts-used.md
│ ├── ai-build-log.md
│ └── credits.md
├── SKILL.md # Agent interface
├── README.md
└── package.json
- SQLite for development; PostgreSQL recommended for production
- AI classification has fallback rules if NIM is unavailable
- No authentication in demo mode
- Single-server deployment (no clustering)
- PostgreSQL with migrations
- Authentication and API keys
- Real-time websockets for live updates
- Mobile-responsive agent dashboard
- Batch issue processing
- Integration with NANDA Town existing systems
- Multi-agent coordination
- SLA tracking and escalation automation
MIT