Complete guide for administrators setting up and managing the 360 feedback system.
- Initial Setup
- Organization Settings
- Who Can See What
- Managing Reviewees
- Creating Review Cycles
- Managing Invitations
- Closing Cycles & Generating Reports
- Questionnaire Management
- Access the setup wizard at
/setup/when first deploying - Create admin account - Username and password for system administration
- Configure organization - Name and contact email
- Set email settings - SMTP configuration for notifications
- Optional: Generate test data - Creates sample reviewees and cycles to explore the system
After setup, access the admin dashboard at /dashboard/
Navigate to Dashboard → Settings to configure:
- Organization Name - Displayed in emails and reports
- Contact Email - Primary organization contact
- SMTP Host - Your email server (e.g.,
smtp.gmail.comorhost.docker.internalfor local Mailpit) - SMTP Port - Common ports: 587 (TLS), 465 (SSL), 25 (Plain)
- SMTP Username - Authentication username (usually your email)
- SMTP Password - Authentication password or app-specific password
- Use TLS - Enable for port 587 (recommended)
- From Email - Email address shown as sender in notifications
Important: Settings are stored in the database and persist across container restarts. Changes take effect immediately without restart.
If a setting has a matching environment variable in your .env (or compose
file), the environment owns it: the deployment rewrites that value on every
container start. Those fields are shown read-only on the Settings page, labelled
"Managed by EMAIL_HOST in the environment", so an edit you make in the UI
can't be silently reverted by the next restart.
| Setting | Environment variable |
|---|---|
| Organization Name | ORGANIZATION_NAME |
| Contact Email / From Email | DEFAULT_FROM_EMAIL |
| SMTP Host | EMAIL_HOST |
| SMTP Port | EMAIL_PORT |
| SMTP Username | EMAIL_HOST_USER |
| SMTP Password | EMAIL_HOST_PASSWORD |
| Use TLS | EMAIL_USE_TLS |
To manage a setting from the UI instead, leave its variable unset — or set it to
an empty value (EMAIL_HOST=), which hands the field back to the UI without
removing the line. Settings with no environment variable (anonymity threshold,
registration options) are always editable in the UI.
- Minimum Responses for Anonymity - Minimum number of responses required to display results
- Set to
1for small teams where anonymity is less critical - Set to
3+for larger teams to protect reviewer anonymity - Self-assessments are always shown regardless of this setting
- Set to
Blik has two roles inside an organization:
| Organization Admin | Organization Member | |
|---|---|---|
| Cycles list & detail | All cycles in the organization | Only cycles where they are the reviewee |
| Reports | All reports in the organization | Only their own |
| Organization settings, team, API tokens | Yes | No |
Feedback is anonymous to everyone, admins included: the system stores no link between a reviewer's identity and their answers, and responses below the anonymity threshold are hidden in reports (see Report Settings).
A member's own report reaches them through a private link containing an access token. That link needs no login — treat it as a secret. It is shown to admins on the cycle page and emailed to the reviewee when a cycle closes.
The same rules apply to the REST API (/api/v1/cycles/, /api/v1/reports/):
a token authenticates as the user who created it and sees exactly what that user
would see in the dashboard.
- Navigate to Dashboard → Reviewees → Create New
- Enter:
- Name - Full name of the person being reviewed
- Email - Email for notifications (self-assessment link, report ready)
- Department (optional) - Organizational unit
- Position (optional) - Job title
- Click Create Reviewee
- Navigate to Dashboard → Reviewees
- Click Edit next to the reviewee
- Update information and click Save Changes
- Click Delete next to the reviewee
- Confirm deletion
- Reviewees are marked inactive rather than deleted (preserves historical data)
A review cycle is a 360-degree feedback collection period for a reviewee.
- Navigate to Dashboard → Review Cycles → Create New
- Select Single Reviewee mode
- Choose:
- Reviewee - Person being reviewed
- Questionnaire - Feedback questionnaire to use
- Configure token counts (can be set to 0 for dynamic creation):
- Self Assessment - Usually 1
- Peer Reviews - Number of colleague reviewers
- Manager Reviews - Usually 1
- Direct Report Reviews - Number of team members
- Click Create Review Cycle
- Select Bulk Creation mode
- Choose questionnaire
- Set token counts (applies to all reviewees)
- Click Create Review Cycles
- Creates one cycle for each active reviewee
The reviewee automatically receives two emails:
- Self-Assessment Email - Personal link to complete their self-assessment
- Invitation Links Email - Category links (peer/manager/direct report) to share with others
Dynamic Token Creation:
- You can create a cycle with 0 tokens for any category
- Each invitation link can be shared with multiple people
- Tokens are created automatically when someone clicks the link
- Once a token is claimed, it cannot be reused (prevents duplicate reviews)
- Navigate to Dashboard → Review Cycles → [Cycle Name]
- In the Invitation Links section, copy the relevant links:
- Self Assessment - For the reviewee
- Peer Review - Share with colleagues
- Manager Review - Share with manager(s)
- Direct Report Review - Share with team members
- Share links via email, Slack, or other channels
How it works:
- First person clicks link → Gets Token 1
- Second person clicks link → Gets Token 2 (or creates new token if none available)
- Each person's token is saved in their browser (localStorage) so they can return later
For more control over who receives invitations:
- Click Manage Invitations on the cycle detail page
- Enter email addresses for each category (comma or newline separated)
- Click Assign Emails to Tokens
- Emails are randomly shuffled and assigned to tokens (maintains anonymity)
- Click Send Pending Invitations to email reviewers
- Navigate to the cycle detail page
- Click Send Reminders (shows count of pending reviews)
- Select which tokens to remind (or all)
- Click Send Reminder Emails
Close a cycle when:
- All expected reviews are completed
- You want to generate a report with partial responses
- The review period has ended
- Navigate to Dashboard → Review Cycles → [Cycle Name]
- Click Close Cycle & Generate Report
- System validates at least one review is completed
- Cycle is marked as completed (no further reviews can be submitted)
- Report is automatically generated
- Reviewee receives email notification with secure report link
If you need to regenerate a report:
- Click Regenerate Report on the cycle detail page
- Report is rebuilt with current responses
- New notification email is sent to reviewee
Staff View:
- Click View Report (Staff) - Shows all responses including raw data
Reviewee View:
- Click View Report (Reviewee) - Reviewee's personalized report with insights
- Share this link with the reviewee (or they'll receive it via email)
The system includes a Dreyfus-model based questionnaire covering:
- Technical Expertise & Problem Solving
- Leadership & Initiative
- Collaboration & Communication
- Adaptability & Learning
- Navigate to Dashboard → Questionnaires
- Click Preview to see questions and structure
- Shows sections, questions, and rating scales
Custom questionnaires must be created via Django Admin:
- Navigate to
/admin/questionnaires/questionnaire/ - Click Add Questionnaire
- Create sections and add questions
- Configure question types:
- Rating - 1-5 scale with optional labels
- Text - Open-ended feedback
- Multiple Choice - Predefined options
- Start with 0 tokens - Let the invitation link dynamically create tokens as needed
- Self-assessment: Always create at least 1 token upfront
- Peer reviews: Use dynamic creation (set to 0 and share link)
- Manager/Direct Reports: Set exact count if known, or use dynamic creation
- Test SMTP settings before launching cycles (use setup wizard's test data)
- Check spam folders if reviewees report missing emails
- Use clear from_email (e.g.,
feedback@company.comnotnoreply@localhost)
- Never check individual token responses unless investigating issues
- Set appropriate minimum response threshold in settings
- Remind reviewers their individual responses are not shown to the reviewee
- Self-assessments are always visible in the report (clearly labeled)
- Allow 1-2 weeks for review completion
- Send reminder emails after 3-5 days
- Close cycles promptly after deadline to generate reports
- Bulk creation is efficient for organization-wide review periods
- Explain the process to reviewees before launching cycles
- Provide context on how feedback will be used
- Set expectations on report delivery timing
- Follow up with 1-on-1 discussions after report delivery
- Check Settings → Email (SMTP) Settings
- Verify SMTP credentials are correct
- Test with a single cycle first
- Check email server logs or use Mailpit for development testing
- Invitation links only appear for cycles with invitation tokens
- If missing, the cycle was created before the secure invitation system
- Create a new cycle or regenerate invitation tokens via Django Admin
- Ensure at least one review is completed
- Check that responses have proper data format (
{'value': ...}) - View error message in the admin dashboard
- Check application logs for detailed error trace
- Tokens are claimed when first accessed
- If someone loses their link, they can find it in browser localStorage
- If localStorage is cleared, they'll get a new token (intended behavior)
- For critical situations, use email-based invitations to track specific reviewers
All invitation and report URLs use secure UUIDs (not enumerable IDs):
- Report URLs:
/my-report/<uuid>/ - Invitation URLs:
/feedback/invite/<uuid>/ - Token URLs:
/feedback/<uuid>/
These cannot be guessed or enumerated, protecting privacy and preventing unauthorized access.
- Admin dashboard requires staff user login
- Reviewee reports are accessible via secure token (no login required)
- Feedback forms are accessible via token (anonymous, no login)
- Individual reviewer responses are anonymous to the reviewee
- Aggregated data only shown when minimum response threshold is met
- Self-assessments are clearly labeled in reports