Would an economist apply to this job?
Pre-test a difficult-to-evaluate job post with personas resembling the job seekers you hope to attract, then revise it using their structured feedback.
01 Pre-test before publishing
Job posts are hard to pre-test. A hiring team can edit the prose, but it cannot readily observe which qualified readers will misunderstand the requirements, infer an unattractive working environment, or decide not to apply. Interviews and applicant data arrive only after the post has already shaped the candidate pool.
This study creates personas resembling the kinds of job seekers the company hopes to reach. Each persona reads the same post and answers the same questions about application intent, fit, clarity, missing information, and decisive passages. We begin with an Applied Economist opening.
mccall init economist-search --name "Applied Economist search"
cd economist-search
Show response
{
"command": "init",
"ok": true,
"project": "/work/economist-search"
}02 Specify the real role
Record what the company actually needs before evaluating how the advertisement communicates it. Begin with the role’s title, mission, compensation, location, and first-six-month success criterion.
mccall role set \
--title "Applied Economist" \
--mission "Improve product and policy decisions with credible causal evidence" \
--compensation '$155,000–$205,000 base salary' \
--location "United States remote; quarterly travel" \
--success-after-six-months \
"Ship one decision-changing study and establish a reusable measurement design"
Show response
{
"command": "role.set",
"ok": true,
"role_id": "applied-economist",
"updated": ["compensation", "location", "mission", "success_after_six_months", "title"]
}Add the work itself one responsibility at a time.
mccall role responsibility add "Design experiments and quasi-experimental studies"
mccall role responsibility add "Analyze marketplace and product data"
mccall role responsibility add "Explain findings to product leaders"
Show final response
{
"command": "role.responsibility.add",
"count": 3,
"ok": true,
"role_id": "applied-economist"
}Then distinguish requirements from preferences explicitly.
mccall role qualification add \
"Graduate training or equivalent applied research experience" --kind required
mccall role qualification add \
"Causal inference and statistical programming" --kind required
mccall role qualification add \
"Clear written communication" --kind required
mccall role qualification add \
"PhD in economics or a related quantitative field" --kind preferred
mccall role qualification add \
"Marketplace or technology experience" --kind preferred
mccall role show
Show role record
{
"command": "role.show",
"ok": true,
"role": {
"id": "applied-economist",
"responsibilities": [
"Design experiments and quasi-experimental studies",
"Analyze marketplace and product data",
"Explain findings to product leaders"
],
"required_qualifications": [
"Graduate training or equivalent applied research experience",
"Causal inference and statistical programming",
"Clear written communication"
],
"preferred_qualifications": [
"PhD in economics or a related quantitative field",
"Marketplace or technology experience"
]
}
}03 Register the first draft
Our first draft is plausible but poor. It uses inflated language, blurs required and preferred qualifications, says nothing about compensation or location, and gives candidates little sense of daily work or success.
Economist — join a world-class team
Acme is seeking a rockstar economist to deliver cutting-edge insights in a fast-paced environment. The ideal candidate is passionate about data, thrives under pressure, and can hit the ground running.
Qualifications
- PhD in Economics from a top program
- 5–10 years of relevant experience
- Expert in every major statistical package
- Outstanding communication and stakeholder-management skills
- Marketplace, technology, consulting, and policy experience preferred
Other duties as assigned. Competitive compensation. We work hard and play hard.
Save that text as posts/original.md, then register it. McCall hashes the exact contents so later edits cannot silently change the experimental condition.
mccall post add posts/original.md \
--id original \
--label "Original vague post"
mccall post list
Show responses
{
"command": "post.add",
"ok": true,
"path": ".mccall/posts/original.json",
"post_id": "original"
}
{
"command": "post.list",
"ok": true,
"posts": [{
"id": "original",
"label": "Original vague post",
"sha256": "528d…"
}]
}04 Build candidate personas
Start with McCall’s broad synthetic panel. It includes a conventional fit, nontraditional fit, career changer, passive candidate, near-fit candidate, and risk-sensitive candidate.
mccall panel preset broad \
--label "Broad economist candidate panel"
Show response
{
"command": "panel.preset",
"ok": true,
"panel_id": "broad",
"personas": 6
}Generic stress-test personas are useful, but this study needs occupation-specific variation. Add an economist with an adjacent credential and a qualified passive candidate. Each persona records where it came from.
| Added persona | Background | Variation introduced |
|---|---|---|
| Applied policy researcher | Six years of causal-inference work and a public-policy doctorate | Meets the role requirements without an economics PhD |
| Passive technology economist | Seven years of marketplace experiments; currently employed | Requires clear scope, compensation, flexibility, and authority to move |
{
"name": "Applied policy researcher",
"source_type": "manual",
"source_note": "Stress-test persona authored from the role requirements",
"traits": {
"career_situation": "Public-policy researcher considering industry",
"education": "PhD in Public Policy",
"experience": "Six years using experiments and causal inference",
"fit": "Meets every required qualification but not the preferred economics PhD",
"decision_style": "Avoids roles that treat pedigree as a hard requirement"
}
}
mccall panel add-persona personas/policy-researcher.json --panel broad
mccall panel add-persona personas/passive-tech-economist.json --panel broad
mccall panel list
Show responses
{
"command": "panel.add-persona",
"ok": true,
"panel_id": "broad",
"persona_id": "policy-researcher"
}
{
"command": "panel.add-persona",
"ok": true,
"panel_id": "broad",
"persona_id": "passive-tech-economist"
}
{
"command": "panel.list",
"ok": true,
"panels": [{
"id": "broad",
"label": "Broad economist candidate panel",
"persona_ids": [
"conventional-fit", "nontraditional-fit", "career-changer",
"passive-candidate", "near-fit", "risk-sensitive",
"policy-researcher", "passive-tech-economist"
]
}]
}| Persona source | Good use | Interpretation |
|---|---|---|
synthetic | Systematic combinations of fit and decision priorities | Designed stress test |
manual | Hiring-team hypotheses and edge cases | Authored scenario |
research | Traits derived from a documented public source | Source-bounded construction |
observed_anonymized | Appropriately used and minimized employer records | Observed basis, still a simulated response |
05 Run the first study
McCall creates the experiment; ep executes it. The generated Jobs package contains eight questions, the selected post as a scenario, and the candidate panel as agents. It contains no model choice.
mccall study build \
--panel broad \
--post original \
--id original-diagnostic \
--output original-diagnostic.jobs.ep
Show response
{
"command": "study.build",
"ok": true,
"study": {
"id": "original-diagnostic",
"post_ids": ["original"],
"panel_id": "broad",
"expected_results": 8,
"jobs_path": "/work/economist-search/original-diagnostic.jobs.ep"
}
}
ep run \
--jobs original-diagnostic.jobs.ep \
--model gemini-2.5-flash \
--service google \
--local \
--output original-diagnostic-results.ep
Show response
{
"status": "ok",
"data": {
"meta": {
"model_count": 1,
"agent_count": 8,
"scenario_count": 1,
"result_count": 8,
"completed_interview_count": 8,
"failed_interview_count": 0,
"saved": {"path": "original-diagnostic-results.ep"}
}
}
}Preserve both packages. The Jobs artifact records exactly what was asked; the Results artifact records answers and model provenance.
mccall results ingest \
original-diagnostic-results.ep \
--study original-diagnostic
mccall report build --study original-diagnostic
Show responses
{
"command": "results.ingest",
"complete": true,
"ok": true,
"responses": 8,
"study_id": "original-diagnostic"
}
{
"command": "report.build",
"ok": true,
"path": ".mccall/reports/original-diagnostic.md",
"study_id": "original-diagnostic"
}06 Diagnose the first draft
The first run completed eight interviews with Gemini 2.5 Flash. Three candidates selected a positive application decision; five selected a negative decision. No candidate rated the post clear.
| Candidate | Decision | Diagnostic feedback |
|---|---|---|
| Conventional strong fit | Probably apply | Requested responsibilities, salary, work arrangement, team structure, and working hours. |
| Nontraditional strong fit | Definitely not | Read the economics PhD as a hard requirement and asked whether equivalent experience counts. |
| Career changer | Definitely not | Could not map transferable skills to undefined responsibilities or “relevant” experience. |
| Passive candidate | Definitely not | Found no concrete compensation, flexibility, or scope sufficient to justify a move. |
| Near fit | Probably apply | Read the preferred experience as potentially mandatory because the categories were blurred. |
| Risk-sensitive candidate | Definitely not | Read “thrives under pressure” and “work hard and play hard” as workload signals. |
| Passive technology economist | Definitely apply | The rationale nevertheless called the post too generic to compel an application and requested scope, compensation, flexibility, and authority. |
The structured decision and rationale conflict for the passive technology economist. The raw response is retained; this inconsistency is visible rather than silently recoded. Across the eight responses, revision suggestions cluster around five changes:
- Describe the decisions and studies the economist will own.
- Separate required qualifications from preferred experience.
- Accept equivalent applied research preparation.
- Publish compensation, location, and travel expectations.
- Replace culture slogans with specific working conditions and success criteria.
07 Write a targeted revision
The revision should respond to diagnosed information failures without inventing benefits or relaxing requirements the company truly needs. Every substantive claim below comes from the private role brief.
Applied Economist
Help Acme make product and policy decisions with credible causal evidence. You will design experiments and quasi-experimental studies, analyze marketplace and product data, and explain findings to product leaders.
In your first six months, you will ship one decision-changing study and establish a reusable measurement design with product and data-science partners.
Required
- Graduate training or equivalent applied research experience
- Experience with causal inference and statistical programming
- Ability to explain technical findings clearly in writing
Helpful, not required: a PhD in economics or a related quantitative field, and experience with marketplaces or technology products.
Location and compensation: United States remote, with quarterly travel. Base salary is $155,000–$205,000. The final offer depends on experience and location.
mccall post add posts/revised.md \
--id revised \
--label "Evidence-led revision"
Show response
{
"command": "post.add",
"ok": true,
"path": ".mccall/posts/revised.json",
"post_id": "revised"
}08 Test both posts together
Build one study containing both posts and the same candidate panel. Rerunning the original costs additional inference, but it reduces a serious comparison problem: model versions, defaults, or panel composition may have changed since the first diagnostic.
mccall study build \
--panel broad \
--post original \
--post revised \
--id original-vs-revised \
--output original-vs-revised.jobs.ep
Show response
{
"command": "study.build",
"ok": true,
"study": {
"id": "original-vs-revised",
"post_ids": ["original", "revised"],
"panel_id": "broad",
"expected_results": 16,
"jobs_path": "/work/economist-search/original-vs-revised.jobs.ep"
}
}
ep run \
--jobs original-vs-revised.jobs.ep \
--model gemini-2.5-flash \
--service google \
--local \
--output original-vs-revised-results.ep
Show response
{
"status": "ok",
"data": {"meta": {
"agent_count": 8,
"scenario_count": 2,
"result_count": 16,
"completed_interview_count": 16,
"failed_interview_count": 0
}}
}
mccall results ingest \
original-vs-revised-results.ep \
--study original-vs-revised
mccall report build --study original-vs-revised
Show responses
{
"command": "results.ingest",
"complete": true,
"ok": true,
"responses": 16,
"study_id": "original-vs-revised"
}
{
"command": "report.build",
"ok": true,
"path": ".mccall/reports/original-vs-revised.md",
"study_id": "original-vs-revised"
}post_id and persona_id, making missing or unexpected pairs detectable.09 Compare candidate responses
The controlled run completed 16 interviews: the same eight personas evaluated both posts with Gemini 2.5 Flash.
| Measure | Original | Revised | Difference |
|---|---|---|---|
| Positive application intent | 3 of 8 (37.5%) | 7 of 8 (87.5%) | +4 candidates |
| Definitely apply | 1 of 8 | 6 of 8 | +5 candidates |
| Clear or very clear | 0 of 8 | 8 of 8 | +8 candidates |
| Very clear | 0 of 8 | 7 of 8 | +7 candidates |
| Candidate | Original decision | Revised decision | Revised clarity |
|---|---|---|---|
| Conventional strong fit | Probably apply | Definitely apply | Very clear |
| Nontraditional strong fit | Definitely not | Definitely apply | Very clear |
| Career changer | Definitely not | Definitely apply | Very clear |
| Passive candidate | Definitely not | Probably apply | Very clear |
| Near fit | Probably apply | Definitely apply | Very clear |
| Risk-sensitive candidate | Definitely not | Probably not | Clear |
| Applied policy researcher | Probably not | Definitely apply | Very clear |
| Passive technology economist | Definitely apply | Definitely apply | Very clear |
Feedback on the revised post shifted to team structure, total compensation, examples of equivalent experience, travel details, decision authority, and the workload implied by the six-month goal. The risk-sensitive candidate remained negative because that goal still appeared aggressive.
10 Inspect the study record
economist-search/
├── mccall.json
├── posts/
│ ├── original.md
│ └── revised.md
├── personas/
│ ├── policy-researcher.json
│ └── passive-tech-economist.json
├── original-diagnostic.jobs.ep
├── original-diagnostic-results.ep
├── original-vs-revised.jobs.ep
├── original-vs-revised-results.ep
└── .mccall/
├── role/role.json
├── posts/{original,revised}.json
├── personas/*.json
├── panels/broad.json
├── studies/{original-diagnostic,original-vs-revised}.json
├── results/*.json
└── reports/*.md
The source Markdown remains easy to edit. Registered post records preserve the exact text and its SHA-256 digest. Study records bind post IDs, persona IDs, panel, expected result count, and the Git-backed EDSL artifact.
The complete experimental loop
mccall post add posts/original.md --id original
mccall panel preset broad
mccall study build --panel broad --post original --id original-diagnostic \
--output original-diagnostic.jobs.ep
ep run --jobs original-diagnostic.jobs.ep \
--model gemini-2.5-flash --service google --local \
--output original-diagnostic-results.ep
mccall results ingest original-diagnostic-results.ep \
--study original-diagnostic
mccall post add posts/revised.md --id revised
mccall study build --panel broad --post original --post revised \
--id original-vs-revised --output original-vs-revised.jobs.ep
ep run --jobs original-vs-revised.jobs.ep \
--model gemini-2.5-flash --service google --local \
--output original-vs-revised-results.ep
mccall results ingest original-vs-revised-results.ep \
--study original-vs-revised
mccall report build --study original-vs-revised