1import{r as c,j as e}from"./animation-CddyXVCz.js";import{S as V}from"./SEOLandingPageTemplate-B7gK1OY7.js";import{aA as K,m as Q,az as k,h as F,k as X,l as Z,B as A,x as ee,C as ae,a3 as te,aC as re,r as se,i as q,S as z,aD as ne,a9 as ie}from"./index-DnWsV7cE.js";import{T as oe}from"./ToolShareBlock-BQJTdbmx.js";import"./react-vendor-CbN3pvl2.js";import"./supabase-iKSPld20.js";import"./docgen-Bp8WKBAE.js";import"./query-DPqpbKNH.js";const i={callback:{healthyMin:5,borderlineMin:2},interview:{healthyMin:50,borderlineMin:30},offer:{healthyMin:20,borderlineMin:10},minAppsForSignal:15,lowAppsPerWeek:5},m={atsScan:{label:"Run the free ATS resume scan",href:"/ats-resume-checker",description:"See exactly which keywords and format issues are filtering you out â free, no signup."},tailor:{label:"Tailor your resume per job",href:"/tailor-resume-to-job-description",description:"CareerDiary rewrites your resume against each specific job description."},interviewPrep:{label:"Practice with Interview Prep",href:"/app/interview-prep",description:"Role-specific behavioral questions with AI feedback on your answers."},careerGps:{label:"Check your role targeting with Career GPS",href:"/app/career-gps",description:"Find the roles your background actually converts for â including titles you havenât tried."},tracker:{label:"Track your funnel weekly",href:"/app/tracker",description:"Log every application and watch these rates move as you fix the bottleneck."}},B=(t,s)=>s>0?Math.round(t/s*1e3)/10:null,E=(t,s,r)=>t===null?"na":t>=s?"healthy":t>=r?"borderline":"low";function le(t){var _;const s=Math.max(0,Math.floor(t.applications)),r=Math.min(Math.max(0,Math.floor(t.callbacks)),s),o=Math.min(Math.max(0,Math.floor(t.interviews)),r),p=Math.min(Math.max(0,Math.floor(t.finals)),o),f=Math.min(Math.max(0,Math.floor(t.offers)),Math.max(p,o)),d=Math.max(1,Math.floor(t.weeks)),w=B(r,s),b=B(o,r),C=B(f,o),j=Math.round(s/d*10)/10,x=[{id:"callback",label:"Callback rate",from:"Applications",to:"Callbacks / screens",numerator:r,denominator:s,rate:w,healthyMin:i.callback.healthyMin,borderlineMin:i.callback.borderlineMin,status:E(w,i.callback.healthyMin,i.callback.borderlineMin)},{id:"interview",label:"Screen â interview",from:"Callbacks",to:"First-round interviews",numerator:o,denominator:r,rate:b,healthyMin:i.interview.healthyMin,borderlineMin:i.interview.borderlineMin,status:E(b,i.interview.healthyMin,i.interview.borderlineMin)},{id:"offer",label:"Interview â offer",from:"Interviews",to:"Offers",numerator:f,denominator:o,rate:C,healthyMin:i.offer.healthyMin,borderlineMin:i.offer.borderlineMin,status:E(C,i.offer.healthyMin,i.offer.borderlineMin)}],n=j>=i.lowAppsPerWeek*2?"healthy":j>=i.lowAppsPerWeek?"borderline":"low";let u;s<i.minAppsForSignal?u="insufficient_data":x[0].status==="low"&&n==="low"?u="mixed":x[0].status==="low"?u="top_of_funnel":x[1].status==="low"&&r>=3?u="screening_fit":x[2].status==="low"&&o>=3?u="interview_performance":n==="low"||x.every(h=>h.status==="healthy"||h.status==="na")&&f===0?u="volume":x.some(h=>h.status==="borderline")?u="mixed":u="healthy";const l=(_=t.targetRole)==null?void 0:_.trim(),g=l?` for ${l} roles`:"",N={insufficient_data:{headline:"Too early to blame your resume â you need more signal first.",explanation:`${s} application${s===1?"":"s"} isnât enough data to separate a resume problem from normal market noise. In todayâs market even strong candidates see low single-digit callback rates, so small samples look brutal by default.`,nextMove:`Get to ${i.minAppsForSignal}+ well-targeted applications${g} (aim for ${i.lowAppsPerWeek*2}/week), applying within 24â48h of posting, then re-run this diagnostic.`,fixes:[m.tracker,m.atsScan]},volume:{headline:"Your funnel converts â itâs mostly a volume and timing game.",explanation:`Your stage-to-stage rates hold up against current-market bands; whatâs limiting offers is throughput (${j}/week). This is the "numbers game" case â the market is slow, not broken, and neither are you.`,nextMove:"Raise weekly volume with the same targeting quality, apply within 24â48h of posting, and widen to adjacent titles (1â3 yr reqs too, not just the flooded tiers).",f
1ixes:[m.tracker,m.careerGps]},top_of_funnel:{headline:"Primarily a top-of-funnel problem â your resume or targeting, not you.",explanation:`A callback rate of ${w??0}% against a healthy band of ${i.callback.healthyMin}%+ means applications are dying before a human reads them â usually ATS keyword alignment or role targeting${g}.`,nextMove:"Fix the resume-to-job match first: scan your resume against real job descriptions and tailor per application. Volume wonât help until this converts.",fixes:[m.atsScan,m.tailor]},screening_fit:{headline:"Callbacks are dying at the screen â a positioning and fit problem.",explanation:`Recruiters like your resume (${w??0}% callbacks) but only ${b??0}% of screens convert to interviews (healthy: ${i.interview.healthyMin}%+). Your story in the screen isnât matching what the resume promised â often a targeting or level mismatch.`,nextMove:"Tighten the 2-minute pitch to match the roles youâre applying for, and check whether those roles actually fit your background.",fixes:[m.careerGps,m.interviewPrep]},interview_performance:{headline:"Itâs not your resume â interviews are where offers are leaking.",explanation:`Your resume clearly works (${w??0}% callbacks, ${b??0}% to interview), but ${C??0}% interviewâoffer sits under the ${i.offer.healthyMin}% healthy line. The bottleneck is interview conversion.`,nextMove:"Stop rewriting the resume. Drill role-specific behavioral answers with structured (STAR) stories until the interview stage converts.",fixes:[m.interviewPrep,m.tracker]},mixed:{headline:"A mixed picture â one main leak plus market drag.",explanation:"More than one stage is under the healthy band, so a single fix wonât flip this. Work the earliest weak stage first â upstream fixes compound through the rest of the funnel.",nextMove:"Start at the top: get the callback rate to the healthy band, then re-run this diagnostic in two weeks and attack the next stage.",fixes:[m.atsScan,m.interviewPrep]},healthy:{headline:"Your funnel is genuinely healthy â keep going.",explanation:"Every stage is at or above current-market healthy bands. What remains is time and volume, and that resolves with persistence, not overhauls.",nextMove:"Maintain cadence, keep tailoring per job, and track weekly so you notice immediately if a stage slips.",fixes:[m.tracker,m.tailor]}}[u],T=h=>h===null?"â":`${h}%`,P=[`My job-search funnel (${d}w): ${s} apps â ${r} callbacks â ${o} interviews â ${f} offers.`,`Callback ${T(w)} · screenâinterview ${T(b)} · interviewâoffer ${T(C)}.`,`Verdict: ${N.headline}`,"Diagnose yours free: careerdiary.io/tools/resume-or-market"].join(` 2`);return{verdict:u,headline:N.headline,explanation:N.explanation,nextMove:N.nextMove,stages:x,appsPerWeek:j,volumeStatus:n,fixes:N.fixes,shareSummary:P}}const D="cd_diag_tool_signup_pending",ce="funnel_diag_tool";async function de(t,s,r){var f;const o=await fetch("/api/public/funnel-diagnostic/plan",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({verdict:t.verdict,headline:t.headline,stages:t.stages.map(d=>({label:d.label,rate:d.rate===null?"â":`${d.rate}%`,status:d.status})),appsPerWeek:t.appsPerWeek,weeks:Math.max(1,Math.floor(s.weeks)),targetRole:((f=s.targetRole)==null?void 0:f.trim())||void 0,yearsOfExperience:s.yearsOfExperience,resumeSnippet:r.trim().slice(0,1200)||void 0,website:""})}),p=await o.json().catch(()=>({}));if(!o.ok)throw new Error(p.error||"The plan generator is unavailable right now.");return p}const H={insufficient_data:"Diagnosis: too early to call â I need more signal first.",volume:"Diagnosis: itâs the market, not my resume.",top_of_funnel:"Diagnosis: itâs my resume, not the market.",screening_fit:"Diagnosis: itâs positioning at the screen, not my resume.",interview_performance:"Diagnosis: itâs not my resume â itâs the interviews.",mixed:"Diagnosis: one main leak, plus market drag.",healthy:"Diagnosis: my funnel is healthy â itâs a numbers game now."},ue={healthy:{label:"Healthy",tone:"text-[var(--color-accent)]",bar:"bg-[var(--color-accent)]"}
2,borderline:{label:"Borderline",tone:"text-[color:var(--amber,#B8761F)]",bar:"bg-[color:var(--amber,#B8761F)]"},low:{label:"Low",tone:"text-[color:var(--rust,#A23B2B)]",bar:"bg-[color:var(--rust,#A23B2B)]"},na:{label:"No data",tone:"text-[var(--text-secondary)]",bar:"bg-[var(--border-default)]"}},he=({stage:t})=>{const s=ue[t.status],r=t.healthyMin*2,o=t.rate===null?0:Math.min(100,t.rate/r*100),p=Math.min(100,t.healthyMin/r*100);return e.jsxs("div",{className:"space-y-1.5",children:[e.jsxs("div",{className:"flex items-baseline justify-between gap-2",children:[e.jsx("span",{className:"text-sm font-semibold text-[var(--text-primary)]",children:t.label}),e.jsxs("span",{className:"flex items-baseline gap-2",children:[e.jsx("span",{className:`font-mono text-sm font-bold tabular-nums ${s.tone}`,children:t.rate===null?"â":`${t.rate}%`}),e.jsx("span",{className:`text-[10px] font-bold uppercase tracking-wide ${s.tone}`,children:s.label})]})]}),e.jsxs("div",{className:"relative h-2.5 w-full overflow-hidden rounded-full bg-[var(--border-default)]/50",role:"img","aria-label":`${t.label}: ${t.rate===null?"no data":`${t.rate}%`}, healthy is ${t.healthyMin}% or more`,children:[e.jsx("div",{className:`h-full rounded-full transition-all duration-700 ease-out ${s.bar}`,style:{width:`${o}%`}}),e.jsx("div",{className:"absolute top-0 h-full w-0.5 bg-[var(--text-primary)]/40",style:{left:`${p}%`},title:`Healthy: ${t.healthyMin}%+`})]}),e.jsxs("p",{className:"text-[11px] text-[var(--text-secondary)]/80",children:[t.numerator," of ",t.denominator," (",t.from.toLowerCase()," â ",t.to.toLowerCase(),") · healthy ⥠",t.healthyMin,"%"]})]})},I=({id:t,label:s,value:r,onChange:o,hint:p,max:f=1e4})=>e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{htmlFor:t,className:"text-[10px] font-bold uppercase tracking-wider text-[var(--text-secondary)]",children:s}),e.jsx("input",{id:t,type:"number",inputMode:"numeric",min:0,max:f,value:r,onChange:d=>o(d.target.value),className:"iconic-input w-full rounded-xl px-3 py-2.5 text-sm font-mono tabular-nums",placeholder:"0"}),p?e.jsx("p",{className:"text-[10px] text-[var(--text-secondary)]/70",children:p}):null]}),me=()=>{const{openSlidePanel:t}=K(),{session:s}=Q(),[r,o]=c.useState({applications:"",callbacks:"",interviews:"",finals:"",offers:"",weeks:""}),[p,f]=c.useState(""),[d,w]=c.useState(""),[b,C]=c.useState(!1),[j,x]=c.useState(null),[n,u]=c.useState(null),[l,g]=c.useState({status:"idle"}),[R,N]=c.useState(""),[T,P]=c.useState(!1),_=c.useRef(null);c.useEffect(()=>{s&&sessionStorage.getItem(D)&&(sessionStorage.removeItem(D),k("diag_signup_completed",{tool:"funnel_diag"}))},[s]);const h=a=>v=>{o(M=>({...M,[a]:v.replace(/[^0-9]/g,"").slice(0,5)})),x(null)},L=c.useCallback(()=>{const a=$=>$.trim()===""?NaN:Number($),v=a(r.applications),M=a(r.weeks);if(!Number.isFinite(v)||v<=0){x("How many applications have you sent? Thatâs the one required number.");return}if(!Number.isFinite(M)||M<=0){x("Over how many weeks? Needed to judge your application pace.");return}const S={applications:v,callbacks:Number.isFinite(a(r.callbacks))?a(r.callbacks):0,interviews:Number.isFinite(a(r.interviews))?a(r.interviews):0,finals:Number.isFinite(a(r.finals))?a(r.finals):0,offers:Number.isFinite(a(r.offers))?a(r.offers):0,weeks:M,targetRole:p.trim()||void 0,yearsOfExperience:d.trim()===""?void 0:Number(d)},Y=le(S);u({diagnosis:Y,input:S}),g({status:"idle"}),x(null),k("diag_run",{tool:"funnel_diag",verdict:Y.verdict,applications:S.applications,weeks:S.weeks,has_role:!!S.targetRole}),window.setTimeout(()=>{var $,O;($=_.current)==null||$.scrollIntoView({behavior:"smooth",block:"start"}),(O=_.current)==null||O.focus({preventScroll:!0})},80)},[r,p,d]),W=c.useCallback(async()=>{if(n){g({status:"loading"});try{const a=await de(n.diagnosis,n.input,R);a.disabled?(g({status:"disabled",reason:a.reason||"capacity"}),k("diag_plan_viewed",{tool:"funnel_diag",outcome:"disabled",reason:a.reason})):a.plan?(g({status:"done",plan:a.plan}),k("diag_plan_viewed",{tool:"funnel_diag",outcome:"shown",verdict:n.diagnosis.verdict})):g({status:"error",message:"The plan came back empty. Please try again."})}catch(a){g({status:"error",message:a instanceof Error?a.message:"The plan generator is unavailable right now."}),k("diag_plan_viewed",{tool:"funnel_diag",outcome:"error"})}}},[n,R]),G=c.useCallback(a=>{k("diag_signup_clicked",{tool:"funnel_diag",context:a}),sessionStorage.setItem(D,"1"),t({contextMessage:"Create a free account to track y
2our funnel weekly, tailor your resume per job, and fix the bottleneck.",triggerId:ce})},[t]),J=c.useCallback(async()=>{if(n)try{navigator.share?await navigator.share({text:n.diagnosis.shareSummary}):(await navigator.clipboard.writeText(n.diagnosis.shareSummary),P(!0),window.setTimeout(()=>P(!1),2e3)),k("diag_shared",{tool:"funnel_diag",verdict:n.diagnosis.verdict})}catch{}},[n]),U=c.useCallback(()=>{u(null),g({status:"idle"}),window.scrollTo({top:0,behavior:"smooth"})},[]),y=n==null?void 0:n.diagnosis;return e.jsxs("section",{id:"funnel-diagnostic-tool","aria-label":"Job-search funnel diagnostic",className:"max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 pb-16 scroll-mt-24",children:[e.jsx(F,{variant:"glass",padding:"lg",className:"shadow-xl shadow-black/[0.04]",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-xl font-bold text-[var(--text-primary)]",children:"Your last stretch of applications"}),e.jsx("p",{className:"text-sm text-[var(--text-secondary)]",children:"Rough numbers are fine â free, instant, no account, computed in your browser."})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4 sm:grid-cols-3",children:[e.jsx(I,{id:"diag-apps",label:"Applications sent *",value:r.applications,onChange:h("applications")}),e.jsx(I,{id:"diag-weeks",label:"Over how many weeks *",value:r.weeks,onChange:h("weeks"),max:104}),e.jsx(I,{id:"diag-callbacks",label:"Callbacks / screens",value:r.callbacks,onChange:h("callbacks"),hint:"Recruiter calls, screens"}),e.jsx(I,{id:"diag-interviews",label:"First-round interviews",value:r.interviews,onChange:h("interviews")}),e.jsx(I,{id:"diag-finals",label:"Finals / onsites",value:r.finals,onChange:h("finals")}),e.jsx(I,{id:"diag-offers",label:"Offers",value:r.offers,onChange:h("offers")})]}),e.jsxs("div",{children:[e.jsxs("button",{type:"button",onClick:()=>C(a=>!a),"aria-expanded":b,"aria-controls":"diag-optional",className:"flex items-center gap-1.5 text-sm font-semibold text-[var(--color-accent)] hover:opacity-80 transition-opacity",children:[b?e.jsx(X,{className:"h-4 w-4"}):e.jsx(Z,{className:"h-4 w-4"}),"Add context",e.jsx("span",{className:"text-xs font-normal text-[var(--text-secondary)]",children:"(optional)"})]}),b&&e.jsxs("div",{id:"diag-optional",className:"mt-3 grid gap-4 sm:grid-cols-2 animate-in fade-in slide-in-from-top-2 duration-300",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{htmlFor:"diag-role",className:"text-[10px] font-bold uppercase tracking-wider text-[var(--text-secondary)]",children:"Target role"}),e.jsx("input",{id:"diag-role",type:"text",value:p,onChange:a=>f(a.target.value.slice(0,120)),className:"iconic-input w-full rounded-xl px-3 py-2.5 text-sm",placeholder:"e.g. Product Manager"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("label",{htmlFor:"diag-yoe",className:"text-[10px] font-bold uppercase tracking-wider text-[var(--text-secondary)]",children:"Years of experience"}),e.jsx("input",{id:"diag-yoe",type:"number",inputMode:"numeric",min:0,max:60,value:d,onChange:a=>w(a.target.value.replace(/[^0-9]/g,"").slice(0,2)),className:"iconic-input w-full rounded-xl px-3 py-2.5 text-sm font-mono tabular-nums",placeholder:"0"})]})]})]}),j&&e.jsx("div",{role:"alert",className:"rounded-xl border border-[color:var(--rust,#A23B2B)]/30 bg-[color:var(--rust,#A23B2B)]/10 px-4 py-3",children:e.jsx("p",{className:"text-sm font-medium text-[color:var(--rust,#A23B2B)]",children:j})}),e.jsxs("div",{className:"flex flex-col items-stretch gap-3 sm:flex-row sm:items-center",children:[e.jsx(A,{variant:"primary",size:"lg",onClick:L,leftIcon:e.jsx(ee,{className:"h-5 w-5"}),className:"sm:min-w-[240px]",children:"Diagnose my funnel"}),e.jsx("p",{className:"text-xs text-[var(--text-secondary)]/80",children:"100% free · no signup · nothing is stored"})]})]})}),n&&y&&e.jsxs("div",{ref:_,tabIndex:-1,"aria-live":"polite",className:"mt-10 space-y-8 outline-none animate-in fade-in slide-in-from-bottom-4 duration-700",children:[e.jsx(F,{variant:"default",padding:"lg",className:"border-[var(--color-accent)]/25",children:e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-bold uppercase tracking-widest text-[var(--color-accent)]",children:"My job-search funnel"}),e.jsx("h3",{className:"mt-1 font-display text-2xl font-bold leading-snug text-[var(--text-primary)]",children:y.headline})]}),e.jsx(A,{variant:"outline",size:"sm",onClick:J,leftIcon:T?e.jsx(ae,{className:"h-4 w-4 text-[var(--color-accent)]"}):e.jsx(te,{className:"h-4 w-4"}),className:"shrink-0",children:T?"Copied":"Share"})]}),e.jsx("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-4",children:[["Applications",n.input.applications],["Callbacks",n.input.callbacks],["Interviews",n.input.interviews],["Offers",n.input.offers]].map(([a,v])=>e.jsxs("div",{className:"rounded-xl bg-[var(--bg-secondary)] px-3 py-3 text-center",children:[e.jsx("p",{className:"font-mono text-2xl font-bold tabular-nums text-[var(--text-primary)]",children:v}),e.jsx("p",{className:"text-[10px] font-bold uppercase tracking-wider text-[var(--text-secondary)]",children:a})]},String(a)))}),e.jsxs("div",{className:"space-y-4",children:[y.stages.map(a=>e.jsx(he,{stage:a},a.id)),e.jsxs("p",{className:"text-[11px] text-[var(--text-secondary)]/80",children:["Pace: ",y.appsPerWeek," applications/week · benchmarks reflect the current market, not boom-year rates."]})]}),e.jsx("div",{className:"rounded-xl bg-[var(--color-accent)]/5 border border-[var(--color-accent)]/20 px-4 py-3",children:e.jsx("p",{className:"text-sm leading-relaxed text-[var(--text-primary)]",children:y.explanation})}),e.jsx("p",{className:"text-center text-[10px] text-[var(--text-secondary)]/60",children:"careerdiary.io/tools/resume-or-market"})]})}),e.jsx(oe,{tool:"diagnostic",shareUrl:"https://careerdiary.io/tools/resume-or-market?utm_source=share&utm_medium=card",shareText:`${H[y.verdict]} Is it your resume â or the market? Run your numbers free.`,card:{kind:"verdict",headline:H[y.verdict],toolUrl:"careerdiary.io/tools/resume-or-market"},title:"Share your diagnosis",subtitle:"Know someone mid-job-hunt? The card shows the verdict, nothing else.",fileName:"careerdiary-funnel-diagnosis"}),e.jsxs("div",{className:"grid gap-8 lg:grid-cols-2",children:[e.jsxs(F,{variant:"soft",padding:"md",children:[e.jsxs("h3",{className:"mb-3 flex items-center gap-2 text-lg font-bold text-[var(--text-primary)]",children:[e.jsx(re,{className:"h-5 w-5 text-[var(--color-accent)]"}),"Your next move"]}),e.jsx("p",{className:"text-sm leading-relaxed text-[var(--text-primary)]",children:y.nextMove}),e.jsx("ul",{className:"mt-4 space-y-3",children:y.fixes.map(a=>e.jsx("li",{children:e.jsxs("a",{href:a.href,onClick:()=>k("diag_fix_clicked",{tool:"funnel_diag",href:a.href}),className:"group flex items-start gap-3 rounded-xl border border-[var(--border-default)] bg-[var(--bg-secondary)]/60 px-4 py-3 transition-colors hover:border-[var(--color-accent)]/40",children:[e.jsx(se,{className:"mt-0.5 h-4 w-4 flex-shrink-0 text-[var(--color-accent)]"}),e.jsxs("span",{children:[e.jsxs("span",{className:"flex items-center gap-1 text-sm font-semibold text-[var(--text-primary)] group-hover:text-[var(--color-accent)] transition-colors",children:[a.label,e.jsx(q,{className:"h-3.5 w-3.5"})]}),e.jsx("span",{className:"text-xs text-[var(--text-secondary)]",children:a.description})]})]})},a.href))})]}),e.jsx(F,{variant:"default",padding:"md",className:"border-[var(--color-accent)]/30",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsxs("p",{className:"flex items-center gap-1.5 text-[10px] font-bold uppercase tracking-widest text-[var(--color-accent)]",children:[e.jsx(z,{className:"h-3.5 w-3.5"}),"Personalized 1-week plan"]}),e.jsx("p",{className:"mt-1.5 text-sm text-[var(--text-secondary)]",children:"Turn this diagnosis into a specific, doable week â built by CareerDiaryâs coaching engine for your exact bottleneck."})]}),l.status==="idle"&&e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsxs("label",{htmlFor:"diag-snippet",className:"text-[10px] font-bold uppercase tracking-wider text-[var(--text-secondary)]",children:["Paste a resume bullet or summary ",e.jsx("span",{className:"font-normal normal-case",children:"(optional, sharpens the plan)"})]}),e.jsx("textarea",{id:"diag-snippet",rows:2,value:R,onChange:a=>N(a.target.value.slice(0,1200)),className:"iconic-input w-full resize-y rounded-xl px-3 py-2.5 text-sm",placeholder:"e.g. your current summary line or weakest bulletâ¦"})]}),e.jsx(A,{variant:"primary",onClick:W,leftIcon:e.jsx(z,{className:"h-4 w-4"}),className:"w-full sm:w-auto",children:"Get my personalized 1-week plan â"})]}),l.status==="loading"&&e.jsxs("div",{className:"space-y-2","aria-live":"polite",children:[e.jsx("div",{className:"h-4 w-2/3 animate-pulse rounded bg-[var(--border-default)]/60"}),e.jsx("div",{className:"h-4 w-full animate-pulse rounded bg-[var(--border-default)]/60"}),e.jsx("div",{className:"h-4 w-5/6 animate-pulse rounded bg-[var(--border-default)]/60"}),e.jsx("p",{className:"text-xs text-[var(--text-secondary)]",children:"Building your week around the bottleneckâ¦"})]}),l.status==="done"&&e.jsxs("div",{className:"space-y-3 animate-in fade-in slide-in-from-bottom-2 duration-500","aria-live":"polite",children:[e.jsx("p",{className:"text-base font-semibold text-[var(--text-primary)]",children:l.plan.planTitle}),e.jsx("ol",{className:"space-y-2.5",children:l.plan.days.map((a,v)=>e.jsxs("li",{className:"rounded-xl bg-[var(--bg-secondary)] px-4 py-3",children:[e.jsxs("p",{className:"text-[10px] font-bold uppercase tracking-wider text-[var(--color-accent)]",children:[a.day," â ",a.focus]}),e.jsx("ul",{className:"mt-1 space-y-1",children:a.actions.map((M,S)=>e.jsxs("li",{className:"text-sm leading-snug text-[var(--text-primary)]",children:["⢠",M]},S))})]},v))}),l.plan.successMetric&&e.jsxs("p",{className:"rounded-xl border border-[var(--color-accent)]/25 bg-[var(--color-accent)]/5 px-4 py-3 text-sm font-medium text-[var(--text-primary)]",children:["This weekâs number: ",l.plan.successMetric]})]}),l.status==="disabled"&&e.jsxs("div",{className:"rounded-xl border border-[var(--border-default)] bg-[var(--bg-secondary)] px-4 py-3",children:[e.jsxs("p",{className:"flex items-center gap-2 text-sm font-medium text-[var(--text-primary)]",children:[e.jsx(ne,{className:"h-4 w-4 text-[var(--text-secondary)]"}),l.reason==="daily_limit"&&"Youâve used todayâs free plan.",l.reason==="signup_required"&&"The personalized plan comes with a free account.",l.reason==="c
2apacity"&&"The free plan generator is taking a breather today."]}),e.jsx("p",{className:"mt-1 text-xs text-[var(--text-secondary)]",children:"Create a free account to generate your plan and track the funnel weekly."}),e.jsx(A,{variant:"primary",size:"sm",className:"mt-3",onClick:()=>G("plan_gate"),children:"Create my free account"})]}),l.status==="error"&&e.jsxs("div",{role:"alert",className:"rounded-xl border border-[color:var(--rust,#A23B2B)]/30 bg-[color:var(--rust,#A23B2B)]/10 px-4 py-3",children:[e.jsx("p",{className:"text-sm text-[color:var(--rust,#A23B2B)]",children:l.message}),e.jsx("button",{type:"button",onClick:W,className:"mt-1 text-xs font-semibold text-[color:var(--rust,#A23B2B)] underline underline-offset-2",children:"Try again"})]})]})})]}),e.jsx(F,{variant:"glass",padding:"lg",className:"border-[var(--color-accent)]/20 text-center",children:e.jsxs("div",{className:"mx-auto max-w-2xl space-y-4",children:[e.jsx("h3",{className:"font-display text-2xl font-bold text-[var(--text-primary)]",children:"Fix the bottleneck, then watch these rates move."}),e.jsx("p",{className:"text-[var(--text-secondary)]",children:"Track every application, tailor your resume per job, and re-run this funnel weekly â free account, no credit card."}),e.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 sm:flex-row",children:[e.jsx(A,{variant:"primary",size:"lg",onClick:()=>G("results_footer"),rightIcon:e.jsx(q,{className:"h-5 w-5"}),className:"rounded-full iconic-btn-primary px-8",children:"Create my free account"}),e.jsx(A,{variant:"ghost",size:"lg",onClick:U,leftIcon:e.jsx(ie,{className:"h-5 w-5"}),children:"Run new numbers"})]}),e.jsx("p",{className:"text-xs text-[var(--text-secondary)]/70",children:"The diagnostic stays free and unlimited either way."})]})})]})]})},ke=()=>e.jsx(V,{seo:{title:"Is It Your Resume or the Market? Free Job-Search Diagnostic | CareerDiary",description:"Enter your applications, callbacks, interviews, and offers â get an instant, honest diagnosis of where your job-search funnel actually breaks, and the specific next move. Free, no signup.",canonical:"https://careerdiary.io/tools/resume-or-market",keywords:["is it my resume or the market","no callbacks from job applications","why am I not getting interviews","job search not working","job application callback rate","job search funnel"],schemaName:"Job-Search Funnel Diagnostic",schemaType:"WebApplication"},hero:{headline:"Is it your resume â or just the market?",subheadline:"The most-asked question in every job-search thread, finally answered with your own numbers. Enter your funnel, get an honest verdict on where it breaks and exactly what to fix. Free, instant, no signup.",primaryCTA:{label:"Diagnose My Funnel Free",href:"#funnel-diagnostic-tool"},secondaryCTA:{label:"How It Works",href:"#how-it-works"},badge:"Free · No Signup · Instant Verdict",note:e.jsxs(e.Fragment,{children:["Prefer ChatGPT?"," ",e.jsx("a",{href:"https://chatgpt.com/g/g-6a6a9fdc419c819181ea7143dacda3b1-resume-rewriter-real-ats-score-by-careerdiary-io",target:"_blank",rel:"noopener noreferrer",className:"underline underline-offset-2 hover:text-[var(--color-accent)] transition-colors",children:"Try our free Resume Rewriter GPT"})," ","â resume scoring and rewrites, inside ChatGPT."]})},toolSlot:e.jsx(me,{}),howItWorks:[{icon:"edit_note",title:"Enter Your Numbers",description:"Applications, callbacks, interviews, offers, and the time window. Rough counts are fine â the diagnosis is computed in your browser."},{icon:"query_stats",title:"See Where the Funnel Breaks",description:"Each stage is compared against honest, current-market benchmark bands â not boom-year rates that make everyone look broken."},{icon:"route",title:"Get the Specific Next Move",description:"A clear verdict â resume, targeting, interviews, or just volume â with the exact fix for that bottleneck, plus an optional AI 1-week plan."}],features:[{title:"An Honest Verdict",description:"Low single-digit callback rates are normal in todayâs market. The diagnostic tells you when it really is the market â and when itâs fixable."},{title:"Stage-by-Stage Breakdown",description:"Callback rate, screenâinterview, and interviewâoffer, each judged against a healthy band so you can see the one leak that matters."},{title:"The Right Fix, Not Generic Advice",description:"Each verdict routes to what actually fixes it: ATS scan and tailoring for top-of-funnel, interview practice for conversion, role targeting for fit."},{title:"A Shareable Funnel Card",description:"Your funnel as a clean, screenshot-ready card â compare with friends or drop it in the group chat instead of guessing."}],featuresTitle:"What the Diagnostic Tells You",faqs:[{question:"Is this really free with no signup?",answer:"Yes. The diagnostic is unlimited and runs entirely in your browser â no account, no email. A free account adds extras: the personalized weekly plan, funnel tracking over time, and resume tailoring."},{question:"Whatâs a normal callback rate right now?",answer:"In the current market, low single digits per application is typical â around 5% or better is healthy, and 2â5% is borderline. Near-zero across 15+ well-targeted applications usually signals a resume or targeting problem rather than bad luck."},{question:"How do you decide whether itâs my resume or the market?",answer:"By where your funnel leaks. Applications that never get callbacks point at the resume/ATS layer. C
2allbacks that never become interviews point at positioning. Interviews that never become offers point at interview performance. Healthy rates with few offers usually just mean volume and time."},{question:"Is my data stored anywhere?",answer:"No. The diagnosis is computed locally in your browser and nothing is saved. If you choose the optional AI plan, only your stage rates (and a resume snippet if you paste one) are sent to generate it."},{question:"What if Iâve only sent a few applications?",answer:"The tool will tell you honestly that itâs too early to judge â small samples look brutal in this market even for strong candidates â and give you a volume target before re-testing."}],relatedPages:[{label:"All Features",href:"/features"},{label:"Free ATS Resume Checker",href:"/ats-resume-checker"},{label:"Tailor your resume to a job description",href:"/tailor-resume-to-job-description"},{label:"Compare: Jobscan Alternative",href:"/jobscan-alternative"},{label:"Compare: Teal Alternative",href:"/teal-alternative"},{label:"Compare: Rezi Alternative",href:"/rezi-alternative"},{label:"Compare: Enhancv Alternative",href:"/enhancv-alternative"}]});export{ke as ResumeOrMarketPage,ke as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.