A Phoenix LiveView application for managing secure, AI-assisted evaluation workflows. Kriterion provides a domain-neutral "spec vs submissions" platform, starting with recruitment use cases.
Kriterion is designed to manage multiple parallel Assignments, where each assignment is a reusable evaluation workspace containing:
- Specification/Demand: Job descriptions, project briefs, target profiles
- Stable Context: Team style, evaluation philosophy, domain notes
- Candidate Artifacts: Resumes, proposals, bids, and supporting documents
The system securely stores artifacts, extracts content, runs AI-assisted analysis, generates assessments, and maintains explainable rankings with full audit trails.
- Bootstrap Setup: First-run master password creation with strength validation
- Unlock Screen: Application-level unlock with encrypted session management
- Lock Controls: Quick lock functionality accessible from any screen
- Visual Security Indicators: Clear locked/unlocked status at all times
- Professional UI: Enterprise-grade interface with Tailwind CSS
- Responsive Navigation: Sticky header with primary navigation
- Assignment List: Empty state with onboarding guidance
- Status Indicators: Real-time security and system status badges
- Reusable app header with navigation
- Status badges and indicators
- Form components with validation
- Empty state patterns
- Password strength indicators
- Phoenix Framework (v1.8.5)
- Phoenix LiveView (v1.1.26)
- Elixir (v1.18.4)
- PostgreSQL (via Ecto)
- Tailwind CSS v4
- Oban (background jobs - planned)
lib/
βββ kriterion/ # Core business logic
β βββ security.ex # Security context (bootstrap, unlock)
βββ kriterion_web/ # Web interface
β βββ components/
β β βββ core_components.ex # Reusable UI components
β β βββ layouts.ex # App layouts
β βββ live/
β β βββ bootstrap_live.ex # Initial setup screen
β β βββ unlock_live.ex # Unlock screen
β β βββ assignment_live/
β β β βββ index.ex # Assignment list
β β β βββ show.ex # Assignment detail (placeholder)
β β βββ ranking_live/
β β β βββ index.ex # Rankings view (placeholder)
β β βββ audit_live/
β β βββ index.ex # Audit log (placeholder)
β βββ router.ex # Route definitions
plans/
βββ plan-0.1.0.md # Original architecture plan
βββ ui_ux_design.md # Comprehensive UI/UX design spec
βββ ui_implementation_summary.md # Phase 1 implementation summary
- Elixir 1.18.4 or higher
- Erlang/OTP 28
- PostgreSQL 14+
- Node.js (for asset compilation)
-
Clone the repository
git clone <repository-url> cd kriterion
-
Install dependencies
mix setup
-
Start the Phoenix server
mix phx.server
Or inside IEx:
iex -S mix phx.server
-
Visit the application
Navigate to
http://localhost:4000
On first visit, you'll be guided through the bootstrap process:
- Visit
http://localhost:4000/bootstrap - Create a strong master password (12+ characters recommended)
- Complete setup to access the main application
| Route | Description | Status |
|---|---|---|
/ |
Assignment list (home) | β Implemented |
/bootstrap |
Initial setup | β Implemented |
/unlock |
Unlock application | β Implemented |
/assignments/:id |
Assignment detail | π§ Placeholder |
/rankings |
Rankings dashboard | π§ Placeholder |
/audit |
Audit log | π§ Placeholder |
- Create/edit/archive/clone assignments
- Spec/context artifact upload
- Encrypted artifact storage
- Artifact metadata display
- Text extraction from PDF, DOCX, etc.
- Extraction status display
- Real-time progress updates
- Candidate CRUD operations
- Resume/artifact attachment
- Candidate detail views
- LLM provider abstraction
- Provider configuration
- Candidate assessment generation
- Structured score visualization
- Weighted scoring system
- Ranking snapshots
- Comparative dashboard
- Movement tracking
- Session timeout
- Enhanced audit logging
- Export/reporting
- Production optimizations
- Professional & Clean: Enterprise-grade UI with subtle shadows and borders
- Information-Dense: Efficient use of space without overwhelming users
- Status-Aware: Clear visual indicators for security and system state
- Accessible: WCAG AA compliant color contrast and semantic HTML
- Primary: Blue-600 (actions, links, active states)
- Success: Emerald-600 (unlocked, completed)
- Warning: Amber-600 (attention needed)
- Danger: Red-600 (locked, errors)
- Neutral: Slate scale (backgrounds, text, borders)
- Real-time Updates: LiveView for seamless UI updates
- Smooth Transitions: CSS transitions on all interactive elements
- Visual Feedback: Hover states, loading indicators, success confirmations
- Keyboard Support: Full keyboard navigation support
- App-Level Unlock: Single master password protects all data
- Session Management: Server-side session tracking
- Visual Indicators: Clear locked/unlocked status
- Secure by Default: All security screens implemented first
- Encrypted Artifact Storage: Per-artifact encryption with AEAD
- Key Derivation: Strong KDF for password-based encryption
- Audit Trail: Immutable log of all significant actions
- Session Timeout: Configurable auto-lock on inactivity
mix testmix precommit- Architecture Plan: Original system design
- UI/UX Design: Comprehensive design specification
- Implementation Summary: Phase 1 completion report
This project follows Phoenix and Elixir best practices:
- Code Style: Follow Elixir style guide
- LiveView Patterns: Use LiveView best practices
- Testing: Write tests for all new features
- Documentation: Document public functions and modules
- Security: Never commit secrets or sensitive data
[License information to be added]
Built with:
Current Version: 0.1.0
Status: Phase 1 Complete β
Next Phase: Assignment Management