Give voters the context they need to make an informed choice. Add candidate photos and biographical descriptions directly to your election ballot.
When creating an Election question, each candidate has two optional profile fields: a photo and a bio. Both are displayed on the voter ballot alongside the candidate's name.
Photos and bios are optional. You can add them for all candidates, some candidates, or none at all. The ballot layout adapts automatically.
Candidate profiles are only available for Election questions. Motion questions (For/Against/Abstain) do not support photos or bios.
Navigate to your voting session and create or edit an Election question. Each candidate row includes a photo upload area to the left of the name field.
Click the dashed square icon next to the candidate name. A file picker opens where you can select a PNG, JPEG, or WebP image (2 MB maximum).
An in-browser crop modal appears with a circular crop area. Use the zoom slider to adjust the framing, then click "Upload" to confirm. The crop is rendered at 512x512 pixels before uploading.
The cropped image is sent to the server, validated using magic byte inspection (not just the file extension), converted to WebP format, and stored on Cloudflare R2. A circular preview appears in the candidate row.
Click "Save" to persist the question along with all candidate photos and bios. If you navigate away without saving, any uploaded photos that were not saved are automatically cleaned up from storage.
Tip: To replace an existing photo, hover over the circular preview and click the trash icon to remove it, then upload a new one.
Each candidate row in the Question Editor includes a "Bio / Details (Optional)" text area next to the name field. Type or paste the candidate's biographical information, qualifications, or statement directly into this field.
The bio field is free-form text with no character limit. On the voter ballot, long bios are initially truncated with a two-line preview. When a voter selects a candidate, the full bio expands automatically so voters can read the complete text without leaving the ballot.
Tip: Keep bios concise and relevant. Include the candidate's role, qualifications, and a brief statement. Voters are more likely to read shorter bios in full.
On the voter ballot, each candidate is displayed as a selectable row. When a photo has been uploaded, it appears as a circular thumbnail to the left of the candidate's name. The bio text appears below the name in a smaller, muted font.
When you purge PII from an ended or archived session (either manually or through the automated retention countdown), VoteAlly handles candidate data as follows:
Note: Candidate names and bios are considered public record and are essential for meaningful election results. They are not removed during PII purge.
VoteAlly accepts PNG, JPEG, and WebP images. All uploads are validated using magic byte inspection (not just the file extension) and automatically converted to WebP format for optimal performance.
Candidate photos have a 2 MB upload limit. After cropping and server-side optimization, the final image is resized to 512x512 pixels and compressed in WebP format, so the stored file is significantly smaller.
No. Candidate photos are entirely optional. The ballot displays correctly with or without photos. You can add photos for some candidates and leave others without one.
When you purge PII from an ended or archived session, all candidate photos are permanently deleted from Cloudflare R2 storage and the photo URLs are removed from the database. Candidate names and bios are preserved because they are considered public record.
No. Once ballots have been cast on a question, the candidate list (including photos and bios) is locked to protect ballot integrity. You must finalize all candidate profiles before the first vote is recorded.
Uploaded photos that are not saved to a question are treated as abandoned uploads. They are cleaned up automatically when you navigate away from the editor or close the browser tab.