Completed recruitment example All applications, role families, channels, and dates are synthetic teaching data. One case is one application to one role. No candidate personal details are included. This sample is not a hiring-performance benchmark. The teaching cohort contains completed applications with all four milestones: Applied, Interviewed, Offered, and Started. This gives the example one simple path through the process map. It is not a sample of every hiring outcome. FILES recruitment-milestones.csv: initial wide tracker for 12 completed applications. recruitment-events.csv: expected prepared event rows from that tracker. recruitment-milestones-refresh.csv: updated tracker with a 13th completed application. recruitment-events-refresh.csv: expected rows after the update. recruitment-event-log.m: complete Power Query recipe. Replace SourcePath with your local file path. recruitment-power-query-events.png: optional full-size native Power Query capture. recruitment-application-events.png: optional full-size Threadseer view of APP-003. OPTIONAL COMPLETE RECIPE The article's manual Unpivot steps teach how columns become rows. The recipe performs that preparation for you, with additional checks. Choose one approach; you do not need to perform the manual unpivot before using the recipe. 1. Download recruitment-milestones.csv and recruitment-event-log.m. 2. In Power BI Desktop, import the tracker with Get data -> Text/CSV, then choose Transform Data. Rename the query RecruitmentEvents. 3. Open the downloaded .m file in a text editor and copy its complete contents. 4. In Power Query, choose Home -> Advanced Editor. Replace the existing query with the copied recipe. Change only SourcePath to the tracker's full local file path, keeping the quotation marks around the path. 5. Choose Done. Check that the final preview has five columns and 48 rows, then choose Close & Apply. The recipe includes the unpivot, short activity labels, blank-cell handling, application-ID checks, timestamp checks, and UTC conversion. Keep its final Timestamp column as text. OPTIONAL TROUBLESHOOTING Each source application needs one nonblank, unique Application ID. If the recipe reports an ID error, inspect BadIDs in Applied Steps, correct the tracker, and refresh. A missing required column also stops the recipe. If a populated timestamp cannot be read, inspect BadTimes in Applied Steps. Correct the source value and refresh; do not remove the event just to make the totals match. The supplied files pass these checks. For this CSV, manual unpivoting produces 48 rows: four recorded steps for each of the 12 applications. The complete recipe returns the same 48 events. There are no blank milestone dates in the supplied completed-application cohort. For your own tracker, open the Timestamp filter and choose Remove Empty if unpivoting leaves rows without a recorded date. The complete recipe handles blanks before unpivoting. If your manual preparation still produces a different row count, check that all four milestone columns were selected and that empty strings or spaces were not treated as recorded dates. Do not fill missing dates with another date. Compare the application IDs as well as the total rows. SOURCE FIELDS Application ID: unique text key for an application to a specific role. Role Family: case-level attribute, Engineering or Operations. Recruitment Channel: case-level attribute, Job board, Referral, or Direct. Applied At: timestamp of the recorded Applied milestone. Interviewed At: timestamp of the recorded Interviewed milestone. Offered At: timestamp of the recorded Offered milestone. Started At: timestamp of the recorded Started milestone. All source timestamps use ISO 8601 with +00:00 (UTC). Manual unpivoting retains that text; the recipe and expected event files use the equivalent Z suffix. For example, 2026-09-03T09:00:00+00:00 and 2026-09-03T09:00:00Z describe the same instant. You do not need to change the suffix to follow the manual steps. In your own tracker, blank milestone cells mean no timestamp was recorded. They do not mean rejected, skipped, or zero elapsed time. For your own tracker, establish what its times mean before changing their format. A local time without an offset needs the source's time-zone rules, including daylight-saving changes. A locale can resolve whether 03/04/2026 means March 4 or April 3; it cannot supply a missing time zone. The recipe expects yyyy-MM-dd'T'HH:mm:sszzz values, such as the supplied +00:00 values, and uses the en-US locale. Adapt it if your source uses a different format. EXPECTED INITIAL TOTALS 12 source applications, 48 populated milestone cells, zero blank milestone cells, 48 output events, 12 distinct output applications, 4 activities, and 1 recorded path. Every application follows Applied -> Interviewed -> Offered -> Started. Zero malformed timestamps and zero applications with no usable milestone. Each step and each connection between steps carries all 12 applications. Only Started connects to End. REFRESH EXERCISE Use the updated wide CSV as the new SourcePath, then refresh the same query. APP-013 is added with Applied at 2026-10-01T09:00:00+00:00, Interviewed at 2026-10-03T14:00:00+00:00, Offered at 2026-10-06T16:00:00+00:00, and Started at 2026-10-10T09:00:00+00:00. Its Role Family is Operations and Recruitment Channel is Referral. The original 12 applications are unchanged. Expect 13 applications, 52 populated milestones/output events, zero blank cells, and 13 distinct output applications. Refresh again: the result stays 52 events. The query rebuilds the current cohort; it does not append an earlier result. MAPPING TO THREADSEER Application ID -> Case ID Activity -> Activity Timestamp -> Timestamp (keep the final ISO values as text) Role Family / Recruitment Channel -> optional Additional Dimensions Process Map: Path scope Case coverage, Top case coverage 100%, Minimum cases 1. Cases displays local clock time; captures use UTC. Other time zones can show different clock labels for the same recorded instants. OPTIONAL ORIGINAL CAPTURES recruitment-unpivot-menu.png shows the four date columns selected and the Unpivot Only Selected Columns command in native Power Query. recruitment-renamed-columns.png shows the menu walkthrough after renaming Activity and Timestamp, with original +00:00 times. Activity labels still end in At; the article's next instructions remove that suffix. The article includes focused views; these downloads preserve full captures. recruitment-power-query-events.png shows the complete recipe's result in Power Query inside Power BI Desktop: five columns and 48 rows, with Timestamp as text using Z. The preparation and repeated refresh were verified there. recruitment-application-events.png shows APP-003's four recorded steps in the actual packaged Threadseer visual running in a local test host. Its 21-day first-to-last interval includes any work and waiting between records; the tracker supplies no individual step end times. This capture is not evidence of Threadseer rendering or field mapping inside Power BI Desktop. Both images use the synthetic sample and are provided at their original capture sizes. LIMITS The wide tracker records only one timestamp for each milestone. It cannot recover an overwritten time, repeated interviews, intermediate status changes, or an application that reopened. Use transaction or audit-history records for those questions. A timestamp tie does not establish which step happened first; do not invent a sequence by adding an index. Dates without times retain date precision.