HomeHelp › Candidate guide

2. Candidate guide

This is the complete reference for everything a candidate (job-seeker, freelancer, mentor, learner) can do on Ditto Up. Everything in this section assumes you are signed in unless stated otherwise.

In this section


2.1 Building your candidate profile

Your candidate profile is your public-facing identity on Ditto Up. It is what employers see when you apply for a job, what comes up in search results, and what is linked from any post or message you send.

A complete profile contains:

  1. Identity — name, headline, profile photo, location.
  2. About me — short biography (a paragraph or two).
  3. Terms — the skills, licenses, certifications, credentials and degrees you claim. Each one links to the marketplace term page and acts as a search keyword.
  4. Documents — résumé, LinkedIn profile copy, certificates and any supporting PDFs.
  5. Videos — intro video, VBQ skill demonstrations, "what I'm looking for" and "what I can help with" (see section 2.6).
  6. Pay & availability — minimum acceptable pay, willingness to relocate, working hours.
  7. Contact preferences — whether your phone/email is visible on the public profile, and how strangers can message you.
  8. Visibility setting — Public / Unlisted / Private (see section 2.7).

You can edit your profile at any time at /profile.


2.2 Profile setup wizard

Right after the one-time signup payment, you land on the wizard at /accounts/setup-profile/. It walks you through the minimum required to be visible to employers:

  1. Step 1 — Basic info: confirm your name and add a headline (one line, e.g. "Industrial electrician — IBEW Local 11").
  2. Step 2 — Location: type your city/zip in the autocomplete field. The platform uses our internal locality database first (instant), falling back to Google if needed (see 5.4 Radius & location autocomplete).
  3. Step 3 — Add at least one term: search for a skill or credential (e.g. plasma arc welding, journeyman electrician license) and click Add. You need at least one term for any employer to find you.
  4. Step 4 — Record an intro video (optional but strongly recommended): a 30–90 second self-introduction. See 4.2 Recording an intro video.
  5. Step 5 — Pick a visibility level: defaults to Unlisted until you finish; flip to Public to enter the directory.

You can skip the wizard, but unfinished profiles stay Unlisted by design.


2.3 Adding skills, credentials, licenses and certifications (terms)

A term in Ditto Up is anything in the platform's marketplace dictionary. Terms come in several types:

Type Examples
occupational_skill Python programming, MIG welding, patient triage
license California Class C driver's license, RN nursing license
certification AWS Certified Solutions Architect, PMP, OSHA 30
credential (W3C Verifiable Credentials) Open Badge — Forklift Operator, signed industry credentials
education_degree Bachelor's in Mechanical Engineering
equipment Caterpillar 320 excavator, Bridgeport milling machine
title Senior Site Reliability Engineer, Charge Nurse

To add terms to your profile:

  1. Open /candidate-settings (or use the Skills section on /profile).
  2. Type in the Add term search box. As you type, an autocomplete shows matches from the marketplace — first from internal data, then from external sources (Credential Engine, O*NET).
  3. Click a result to add it. It appears as a chip with the term's name and type.
  4. To remove a term, click the × on the chip.

The list is saved automatically (AJAX to /update-Users-Terms). To pull the current list programmatically, call /get-Users-Terms.

Why terms matter Every term you add becomes a discovery channel:

  • Employers searching for that skill/license will see you.
  • You can record a VBQ video against the term (a 30–120 second answer to a term-specific question) and have it AI-graded.
  • The term's marketplace page (/<term_type>/<term_name>/<term_ctid>/) lists you as one of the candidates posting it.

2.3.1 Term tooltips and definitions

Hover the small i icon next to any term anywhere on the site to see the definition, hierarchy and marketplace stats served from /tooltip.

If a term has no definition, the platform attempts to auto-generate one via LLM (/get-llm-term-definition) — the result is cached and shown next time. If you spot a wrong definition, use the Report link on the term detail page.

2.3.2 "Date last used" and automatic years of experience

When you add or edit a skill term you can set Date last used with simple month and year dropdowns. From the year you pick, Ditto Up calculates your years of experience for that skill automatically (current year minus the year you select) — you don't type a number by hand. This recency signal helps employers see how current a skill is and feeds into matching and recommendations.


2.4 Uploading documents and parsing your résumé

You can attach any number of supporting documents to your profile. Supported formats: PDF, DOCX, DOC, TXT.

2.4.1 Resume upload (with auto-parsing)

  1. Go to /candidate-settingsDocumentsUpload résumé, or use the dedicated /resume-upload endpoint.
  2. Drag-and-drop or browse to your résumé file (max 10 MB; nginx upload cap is 55 MB but we recommend keeping résumés under 5 MB).
  3. The file is uploaded to S3 and the text is extracted server-side.
  4. Recognised skills, licenses and degrees are auto-added to your terms list. You can always remove the ones you didn't want.
  5. The parsed text is stored so search engines can match your profile against it.

You can re-upload at any time — the new résumé replaces the old one. To remove your résumé entirely use Remove résumé on the same page (POST to /remove-candidate-resume).

2.4.2 Generic document upload

For non-résumé files (certificates, transcripts, LinkedIn export, work samples):

  1. Open /document-upload.
  2. Choose a document type (resume, linkedin, certificate, other).
  3. Optionally add a label like "OSHA 30 — issued 2024-08-12".
  4. Upload.
  5. The file appears under /document-list and is shown on your profile (subject to your visibility settings).
  6. To remove a document, open /document-list and click Delete, or POST to /document-delete.

2.4.3 Parsing résumé text without uploading

The endpoint /resume-parser/ (template resume_parser.html) lets you paste résumé text into a form and see what terms the parser would extract — useful for previewing before you upload.

To programmatically retrieve the parsed result of an already-uploaded résumé, call /get-resume.

2.4.4 Viewing documents and download notifications

On a profile, documents are grouped by category (résumé, LinkedIn, certificates, other). Clicking a category opens a wide preview modal — read the document in place, close it with the ×, or hit Download to save a copy.

You'll know when someone opens your documents. Whenever anyone downloads a document from your profile — résumé, LinkedIn export, skills, certificates or any other file — both of you are notified:

  • You (the owner) see "<Name> downloaded your document."
  • The viewer sees "You downloaded <document> from <Name>'s profile."

Notifications arrive in-app, as a pop-up toast (see 9.3.1) and by email. This keeps document access transparent on both sides.


2.5 Profile photo and basic details

On /profile you can edit:

Field Notes
First / Last name Used everywhere.
Headline One line summary, ~80 chars.
Profile photo Square image, JPG/PNG/GIF, ~512×512 recommended; the platform crops to circle.
About me Free text, no length cap but ~3 paragraphs is the sweet spot.
Location City + state + zip; powered by autocomplete.
Email visibility Tick to show your email on the public profile.
Phone visibility Tick to show your phone number on the public profile.
Willing to relocate Tick if yes; influences which jobs match you.

These are all saved on the same form and reflect immediately.


2.6 The four candidate videos

Ditto Up supports four distinct video slots on each candidate profile. They all use the same recorder (powered by getUserMedia) and all four route through the same MNV / AWS Transcribe pipeline that performs speech-to-text and stores the file on S3. Full details are in Section 4 — Videos & VBQ; the candidate-side summary is:

Slot Length Purpose Endpoints
Intro video 30–90 s Personal introduction shown at the top of your profile. upload /intro-video-upload/, view /intro-video-url/, delete /intro-video-delete/
VBQ video (one per term) 30–120 s Term-specific spoken answer that the platform grades with AI on a 5-dimension rubric. start /start-video-qa/, fetch /get-video-qa/, status /video-qa-status/, result /video-qa-result/, publish /video-qa-publish/, toggle publish /VBQ/toggle-publish/, refresh URL /VBQ/fresh-url/, edit /edit-video-qa/, delete /delete-video-qa/
What I'm looking for 30–90 s What roles, industries or types of work you want. upload /looking-for-video-upload/, delete /looking-for-video-delete/
What I can help with 30–90 s What you can offer to others (mentoring, advice, collaboration). upload /can-help-with-video-upload/, delete /can-help-with-video-delete/

Recording tips

  • Use a quiet environment with a well-lit face.
  • Speak — recordings with no audible voice fail the AWS Transcribe step and the system reports "Failed to transcribe". The recorder warns you in advance if your microphone level is near silent.
  • 60 seconds is the sweet spot for VBQ; longer doesn't improve scoring.
  • All videos are stored privately in S3 by default. They become publicly accessible only when you click Publish (for VBQ) or when your profile visibility allows it (for intro / looking-for / can-help-with).

2.7 Profile visibility (public / unlisted / private)

Your profile has three visibility states. Set this on /candidate-settingsVisibility.

State Who can see your profile Where you appear
Public Anyone, signed in or not. Search results, /all_candidates directory, term marketplace pages.
Unlisted (default for new accounts) Only people who have a direct link, or who you have messaged. Not in search; not in the directory.
Private Only people you follow back, or who you have approved. Not in search; messages from strangers go through extra screening (see 6.13 AI screening).

Even on Public, individual fields obey their own toggles (e.g. you can be Public but hide your email). Switching to Private also hides your published VBQ videos from non-connections.

You start on Unlisted until you (a) verify your email and (b) complete a minimum profile (name + at least one term + intro video or about-me). Run backfill_profile_visibility --apply is an admin command — it doesn't affect end users.


2.8 Searching and applying for jobs

Job search is fully covered in Section 5 — Search & discovery. The candidate-side highlights:

  • Browse all jobs at /all_jobs (paginated, sortable by date, salary, remote/hybrid/onsite).
  • Search at /search?q=<keyword>&location=<city-or-zip>&radius=<miles>&work_type=<remote|hybrid|onsite>.
  • Click any result to open the job detail page at /job/<job_title>/<id>.
  • Each detail page has a green Apply button that opens the application form.

2.9 Applying for a job (the unified apply page)

The primary button on a job detail page opens the unified apply page at /job/<job_title>/<id>/apply. What that button says depends on where the job lives:

Job source Button What happens
Posted on Ditto Up Apply You apply directly through Ditto Up; the employer is notified in their dashboard and by email.
Imported / external (scraped from an employer's own careers site) Verify Your Resume You confirm and verify your skills against the role and prepare your materials, then finish on the employer's own site. The original listing is always one click away via the Original Job Posting button.

The match table. The apply page shows a borderless, per-term comparison that lines your profile up against the job, row by row (qualifications, skills, education, certifications, preferences). A Match column tells you, term by term, where you already line up and where you have a gap — and whether the employer marked each term Required, Preferred or Will train (see 3.3.4). On desktop this is a wide table; on mobile it collapses to stacked cards.

The form itself has these sections (employers can show or hide each):

Section Fields
Compensation Expected total pay (low/high), currency, whether you'll consider equity.
Availability Start date, hours per week, full-time / part-time / contract.
Résumé Upload a fresh PDF/DOCX, pick one of your already-uploaded documents, or attach your auto-generated Ditto Up résumé (see 2.9.2 below).
Cover message Free text, 0–2000 characters.
Job-specific questions Structured questions (yes/no, multiple choice, scale 1–5) and open-ended questions configured by the employer.
VBQ video answers If the employer requires a video answer for a term, a Record button opens the VBQ recorder (Section 4). Your existing public VBQ videos for the same term are auto-attached if available.

For a Ditto Up job, click Submit application — either publicly or privately (see below). You're redirected to /job/<job_title>/<id>/marketplace_report with similar jobs, the salary band and in-demand skills. For an external job there is no submit on Ditto Up — finish on the employer's site via Apply on Employer Site / Original Job Posting; your verification videos and Ditto Up résumé are reusable across every application.

Public vs private application. A public application adds your name and a link to your profile to the job/content page and to the similar-job emails we send other employers (more visibility for you). A private application sends your details only to the person who posted the job.

The employer is notified immediately by email and in their dashboard. They can review your videos in-line and reply through messaging; their reply lands in your /messages/ inbox.

2.9.1 What employers see when you apply

  • Your profile (subject to visibility settings).
  • The fields above.
  • Your published VBQ videos for any term that overlaps with the job's required skills.
  • Your testimonials / feedback (only the ones marked Public).

They cannot see your unpublished VBQ videos, your private documents or your saved jobs.

2.9.2 Your Ditto Up résumé (auto-generated, job-tailored)

Ditto Up can build a clean, job-tailored résumé from your profile — no formatting work on your side. It is scoped to a specific job, so you reach it from that job's apply page, not as a standalone page.

  1. Open a job → click Apply (or Verify Your Resume on external jobs) to reach /job/<job_title>/<id>/apply.
  2. On the apply page, find the Your DittoUp Resume card and click Download DittoUp Resume (PDF) (web page: /job/<job_title>/<id>/dittoup-resume; PDF: the same path with .pdf).
  3. The résumé is headed "How <Your name> is Qualified for <Job> from <Company>" with the date, followed by a qualification chart: each term the job asks for that you already have, marked ✓ Yes, with your years of experience and a Video link wherever you've published a VBQ video for that term. Below the chart is a list of your verification videos to attach to the application.

The chart only lists terms relevant to that job — not your whole profile — and always reflects your current profile, so updating a term or recording a new video is included automatically on your next download.


2.10 Saved jobs and email alerts

To save a job for later or to subscribe to alerts for similar postings:

  1. On any job detail page, click the ⭐ Save button. Internally this hits /subs.
  2. The job appears under the Saved jobs section of your dashboard.
  3. The platform sends you an email whenever a new job is posted with overlapping skills/location.

To stop alerts for a saved job:

  1. Either click ⭐ Saved again on the job page, or
  2. Use the Unsubscribe link at the bottom of any alert email — it leads to /unsubscribe/ and removes the saved entry.

2.10.1 Receive Updates (job-change and expiry alerts)

Save (⭐) bookmarks a job and subscribes you to alerts for similar postings. Receive Updates is different — it tracks one specific job and tells you when that job changes or is about to close.

  1. On any job detail page, click Receive Updates (POST to /job/<job_title>/<id>/receive-updates). The button confirms with "Updates on ✓".
  2. When the employer edits the role (title, pay, location, requirements) you get a "Job updated" notification — in-app and by email.
  3. When the job nears its closing date you get a "Job expiring" notification so you can apply before it's gone.

Each alert email has an Unsubscribe link, and clicking Receive Updates again turns tracking off. Tracking continues even after you've applied, so you stay informed about a role you're already in the running for.


2.11 Job recommendations

If you have automated recommendations consent enabled (set during signup or in /candidate-settings), Ditto Up sends you a periodic email called JobRecommend with a hand-picked list of jobs that match your profile.

  • The matching engine uses your terms, your "what I'm looking for" video transcript, your minimum pay, your location and your relocation preference.
  • Each link is wrapped in tracking pixels (/JobRecommend-email-open, /JobRecommend-email-click) so we can measure relevance — no personally-identifying info leaves the platform.
  • The unsubscribe link in every email leads to /JobRecommend-email-response and turns off recommendations.

You can also receive mail-style replies through /JobRecommend-email-response — replying "more like this" / "not interested" is parsed by the system and feeds back into the recommendation model.


2.12 Candidate settings (everything in /candidate-settings)

The single most important page on the candidate side is /candidate-settings. It exposes:

Section What you control
Profile basics Same fields as /profile (name, photo, location, headline, about me).
Terms Add / remove terms.
Documents Upload / delete résumé and supporting files.
Videos Open the recorder for the four video slots.
Visibility Public / Unlisted / Private.
Contact privacy Show email? Show phone? Show LinkedIn URL?
Minimum pay Sets a floor for job recommendations. Endpoint: /minimum-pay-candidate.
What I'm looking for Free-text version of the same idea — used by the recommender if no video is provided.
What I can help with Same idea for mentorship/help offers.
Messaging privacy Choose whether strangers can DM you, only people you follow, or nobody. See 6.13.
Email notifications Toggle every category — new messages, job recommendations, post reactions, follows, mentions, candidate alerts.
Activity notifications Per-user override (/toggle-activity-notifications/) — turn off notifications for a specific noisy user without unfollowing.
Featured profile (premium) Boost your profile in the directory; toggle at /feature-candidate-settings.

There are dedicated sub-endpoints for each section, so deep-links and AJAX updates work without reloading the whole page (e.g. /about-candidate for just the bio).


2.13 Receiving feedback / testimonials

Employers, mentors or peers who've worked with you can leave feedback at /candidate_feedback/<your_name>/<their_business>/<id>/. Feedback fields are:

  • Star rating (1–5)
  • Free-text testimonial
  • Job title / role context
  • Employment dates
  • Public or Private flag

When the feedback is marked Public it appears on your profile under Testimonials. Private feedback is visible only to you. You can request the writer to flip a private testimonial to public via /publish-feedback.


2.14 Removing your candidate profile

If you want to delete your candidate side without closing your whole account:

  1. Go to /candidate-settings → bottom of page → Remove candidate profile.
  2. Confirm.
  3. The system POSTs to /remove-candidate-profile and:
    • Deletes your profile photo, intro video, looking-for video, can-help-with video and any unpublished VBQ videos from S3.
    • Removes you from the /all_candidates directory.
    • Detaches you from every term you had claimed.
    • Keeps your business profile and your messages.

To delete the whole account (candidate + business + messages + posts), see 9.6 Deleting your account.


Next: 3. Business / employer guide covers the other half of the platform.

Help Feedback/Ticket