Parole Lawyer

 Texas

ChuckBot - Texas Parole

Help & Risk Assessment

`; } else if (flow==='packet'){ summary = ` Name: ${escapeHtml(d.user_name)}
Relationship: ${escapeHtml(d.relationship)}
Email: ${escapeHtml(d.user_email)} — Phone: ${escapeHtml(d.user_phone)}
Inmate: ${escapeHtml(d.inmate_name)} (TDCJ# ${escapeHtml(d.tdcj_number)})
Unit: ${escapeHtml(d.unit)} • Region: ${escapeHtml(region)}
Charge: ${escapeHtml(d.charge)} • Custody: ${escapeHtml(d.custody)}
${d.county?`County: ${escapeHtml(d.county)}
`:''} ${d.parole_date?`Parole review: ${escapeHtml(d.parole_date)}
`:''} ${d.programs_completed?`Programs: ${escapeHtml(d.programs_completed)}
`:''} ${d.disciplinary_summary?`Disciplinary: ${escapeHtml(d.disciplinary_summary)}
`:''} ${d.support_letters?`Support letters (est.): ${escapeHtml(d.support_letters)}
`:''} ${d.docs_ready?`Documents ready: ${escapeHtml(d.docs_ready)}
`:''} ${d.budget?`Budget: ${escapeHtml(d.budget)}
`:''} ${d.urgency?`Urgency: ${escapeHtml(d.urgency)}
`:''} ${d.best_time?`Best time to reach you: ${escapeHtml(d.best_time)}
`:''} `; } else { summary = ` Name: ${escapeHtml(d.user_name)}
Relationship: ${escapeHtml(d.relationship)}
Email: ${escapeHtml(d.user_email)} — Phone: ${escapeHtml(d.user_phone)}
Inmate: ${escapeHtml(d.inmate_name)} (TDCJ# ${escapeHtml(d.tdcj_number)})
Unit: ${escapeHtml(d.unit)} • Region: ${escapeHtml(region)}
Charge: ${escapeHtml(d.charge)} • Custody: ${escapeHtml(d.custody)}
${d.county?`County: ${escapeHtml(d.county)}
`:''} ${d.parole_date?`Parole review: ${escapeHtml(d.parole_date)}
`:''} ${d.prior_parole?`Prior parole: ${escapeHtml(d.prior_parole)}
`:''} ${d.best_time?`Best time to reach you: ${escapeHtml(d.best_time)}
`:''} `; } addMsg('bot', `

Quick Review
Thanks — here’s what I’ll pass along. If anything looks off, say “edit” and type the corrected line.

${summary}

Ready for me to submit this to ${pick.name} to get things started?

`); addChoices([{label:'Yes, submit now & tell me why', onClick:()=>doSend(pick, ()=>showWhyForFlow(pick, flow))},{label:(flow==='packet'||flow==='crowdfunding'?'Change details':'Choose a different attorney'), class:'alt', onClick:()=>{ if(flow==='packet'||flow==='crowdfunding'){ State.mode='collect'; State.ctx.collect.idx=0; askNextField(); } else { /* choose different */ State.mode='menu'; showMenu(); } }},{label:'Back to menu', class:'alt', onClick:showMenu}]); } function showWhyForFlow(pick, flow){ if(flow==='packet'){ addMsg('bot', `

Our Parole Packet Team focuses on building persuasive packets — rehabilitation documentation, support letters, certificates, employment/housing plans, and a clear re-entry plan. We’ll tailor the checklist and timeline for your situation.

`); addMsg('bot', `

${BRAND_CLOSER}

`); return; } if(flow==='crowdfunding'){ addMsg('bot', `

We’ll create a professional, shareable Givebutter campaign where donations go directly to your selected attorney — secure, transparent, and designed for success. We’ll support you step-by-step so you’re never doing this alone.

`); showCrowdfundingNextSteps(); return; } const bio=(ATTORNEY_BIOS[pick.name]||'').trim(); const warm = PRAISE[pick.name] || 'Strong reputation statewide and trusted by families across Texas.'; if(bio) addMsg('bot', `

${warm}

${bio}

`); else addMsg('bot', `

${warm}

`); addMsg('bot', `

${BRAND_CLOSER}

`); } // ====== HELPERS ====== function pickAttorney(unit, charge){ const seed=(String(unit||'')+'|'+String(charge||'')).toLowerCase(); let hash=0; for(let i=0;i `- ${k}: ${v}`).join(' '), _meta:{ts:new Date().toISOString(), flow}}; if(d.tdcj_number) saveRec(d.tdcj_number, pick); saveSubmission(payload); addMsg('bot', `

All set — I’ve submitted your information to ${pick.name}. You should hear back soon. If anything comes up, I’m right here.

Saved locally for testing. Press Alt+E to export all submissions.

`); if(afterFn){ afterFn(); } else { addMsg('bot', `

${BRAND_CLOSER}

`); } } // ====== INPUT HANDLER ====== sendBtn.addEventListener('click', handleInput); input.addEventListener('keydown', e=>{ if(e.key==='Enter') handleInput(); }); function handleInput(){ const text=input.value.trim(); if(!text) return; input.value=''; addMsg('user', escapeHtml(text)); State.history.push(text); switch(State.mode){ case 'menu': handleMenuSelection(text); break; case 'qa': { const pick=findAttorneyFuzzy(text); if(pick) showAttorneyOverview(pick); else { addMsg('bot', `

Thanks for the question — I’ll keep it straightforward and useful. If you want an attorney’s take after this, I can set that up for free.

`); addMsg('bot', `

${COURTEOUS_FOLLOWUP}

`);} break;} case 'specific': { const pick=findAttorneyFuzzy(text); if(pick) showAttorneyOverview(pick); else{ addMsg('bot', `

I don’t have a file on that particular attorney. Want me to recommend a strong fit for your region and case type?

`); addChoices([{label:'Recommend one (best fit)', onClick:()=>beginCollection({flow:'recommend_one'})},{label:'Send to all', onClick:()=>beginCollection({flow:'send_all'})},{label:'Back to menu', class:'alt', onClick:showMenu},]); } break;} case 'packet': beginCollection({flow:'packet', forceAttorney:{name:'Parole Packet Team', email: CONFIG.adminEmail}}); break; case 'crowdfunding': beginCollection({flow:'crowdfunding', forceAttorney:{name:'Crowdfunding Team', email: CONFIG.adminEmail}}); break; case 'risk': { const i=State.ctx.idx; const item=RAI_QUESTIONS[i]; State.ctx.answers[item.key]=text; State.ctx.idx++; askNextRAI(); break;} case 'collect': { const c=State.ctx.collect, fields=getRequiredFields(), f=fields[c.idx]; c.data[f.key]=text==='skip' ? '' : text; c.idx++; askNextField(); break;} case 'confirm': addMsg('bot', `

If you’re ready, choose an option above — I’ll take care of the rest.

`); break; default: /* nothing */ } } // ====== RESET CHAT ====== resetBtn.addEventListener('click', hardReset); function hardReset(){ chat.innerHTML=''; State={mode:'menu', ctx:{}, history:[]}; Object.keys(localStorage).filter(k=>k.startsWith('rec_')).forEach(k=>localStorage.removeItem(k)); showMenu(); } // ====== INIT ====== (function(){ // If the static fallback is present, don’t duplicate it. if(!chat.querySelector('.msg')){ showMenu(); } })();

Attorney Evaluation Form

At the Institute for Attorney Oversight, we truly appreciate the time you’ve taken to complete our questionnaire and rate the attorneys featured on our website.


Your input plays a critical role in ensuring that every attorney on our platform meets and exceeds the highest standards of excellence in parole representation. By sharing your experience, you help us:


✔ Maintain top-quality legal resources for those seeking parole attorneys.


✔ Ensure our listed attorneys uphold the highest standards of professionalism.


✔ Continuously improve our website to create a seamless and helpful experience for all visitors.


Your voice matters, and your feedback makes a real difference in refining the services we provide. Thank you for being part of this effort—we truly value your support!


Contact Us

Your feedback helps us enhance our platform and ensure families receive the best legal representation available.


Thank you for taking the time to share your thoughts!