Project Husky — Bridge Bot

Project Husky — Bridge Bot *{box-sizing:border-box;margin:0;padding:0} body{font-family:-apple-system,BlinkMacSystemFont,’Segoe UI’,sans-serif;background:#fff;color:#2C2C2A;padding:2rem;max-width:860px;margin:0 auto;line-height:1.7} .h1{font-size:26px;font-weight:600;margin-bottom:.5rem} .h2{font-size:20px;font-weight:600;margin-bottom:1rem;margin-top:.5rem} .h3{font-size:15px;font-weight:600;margin-bottom:.4rem} .body{font-size:14px;line-height:1.8;margin-bottom:.85rem;color:#2C2C2A} .muted{font-size:13px;color:#5F5E5A;line-height:1.65} .label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:#888780;margin-bottom:5px} .section{padding:1.75rem 0;border-bottom:1px solid #E8E6E0} .section:last-child{border-bottom:none} .divider{border:none;border-top:1px solid #E8E6E0;margin:1.25rem 0} .pullquote{font-size:15px;font-style:italic;line-height:1.7;padding:.85rem 0 .85rem 1.25rem;margin:1rem 0} .pullquote-teal{border-left:3px solid #5DCAA5;color:#085041} .pullquote-coral{border-left:3px solid #F0997B;color:#712B13} .pullquote-purple{border-left:3px solid #AFA9EC;color:#3C3489} .grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:1rem 0} .grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:1rem 0} .card{background:#fff;border:1px solid #E0DED8;border-radius:12px;padding:1.1rem 1.25rem;margin-bottom:10px} .card-teal{background:#E1F5EE;border:1px solid #5DCAA5;border-radius:12px;padding:1.1rem 1.25rem;margin-bottom:10px} .card-coral{background:#FAECE7;border:1px solid #F0997B;border-radius:12px;padding:1.1rem 1.25rem;margin-bottom:10px} .card-purple{background:#EEEDFE;border:1px solid #AFA9EC;border-radius:12px;padding:1.1rem 1.25rem;margin-bottom:10px} .card-amber{background:#FAEEDA;border:1px solid #EF9F27;border-radius:12px;padding:1.1rem 1.25rem;margin-bottom:10px} .tag{display:inline-block;font-size:11px;padding:3px 10px;border-radius:20px;margin:3px 3px 3px 0;font-weight:500} .tag-teal{background:#E1F5EE;color:#085041;border:1px solid #5DCAA5} .tag-purple{background:#EEEDFE;color:#3C3489;border:1px solid #AFA9EC} .tag-gray{background:#F5F4EF;color:#5F5E5A;border:1px solid #D3D1C7} .section-tag{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;padding:3px 10px;border-radius:4px;margin-bottom:10px;display:inline-block} .tag-sys{background:#E1F5EE;color:#085041} .tag-res{background:#EEEDFE;color:#3C3489} .tag-usr{background:#FAECE7;color:#712B13} .two-col{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:.75rem 0} .role-col-left{background:#FAECE7;border:1px solid #F0997B;border-radius:12px;padding:1rem} .role-col-right{background:#E1F5EE;border:1px solid #5DCAA5;border-radius:12px;padding:1rem} .badge{display:inline-block;font-size:11px;padding:2px 8px;border-radius:6px;font-weight:600;margin-bottom:.5rem} .badge-coral{background:#FAECE7;color:#712B13} .badge-teal{background:#E1F5EE;color:#085041} .finding-card{background:#fff;border:1px solid #E0DED8;border-radius:12px;padding:1.1rem 1.25rem;border-left:3px solid #5DCAA5;margin-bottom:10px} .impact-card{background:#fff;border:1px solid #E0DED8;border-radius:12px;padding:1.25rem;border-left:3px solid #AFA9EC} .stat-big{font-size:36px;font-weight:700;color:#085041} .flow-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:.5rem 0} .flow-box{background:#F5F4EF;border:1px solid #D3D1C7;border-radius:8px;padding:5px 12px;font-size:12px;color:#2C2C2A} .flow-box-teal{background:#E1F5EE;border:1px solid #5DCAA5;border-radius:8px;padding:5px 12px;font-size:12px;color:#085041;font-weight:500} .flow-arrow{color:#888780;font-size:14px} .next-num{font-size:22px;font-weight:600;color:#AFA9EC;margin-bottom:.4rem} .img-placeholder{background:#F5F4EF;border:1px dashed #C8C6C0;border-radius:12px;padding:2rem;text-align:center;color:#888780;font-size:12px;margin:1rem 0} .connection-row{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:center;margin:.6rem 0} .conn-left{background:#FAECE7;border:1px solid #F0997B;border-radius:8px;padding:.6rem .85rem;font-size:12px;color:#712B13;font-weight:500} .conn-right{background:#E1F5EE;border:1px solid #5DCAA5;border-radius:8px;padding:.6rem .85rem;font-size:12px;color:#085041} .conn-arrow{color:#888780;font-size:18px;text-align:center} /* ── CAROUSEL ── */ .carousel-wrap{position:relative;overflow:hidden;border-radius:16px;background:#F5F4EF;margin:1.25rem 0} .carousel-track{display:flex;transition:transform .6s cubic-bezier(.4,0,.2,1)} .carousel-slide{min-width:100%;padding:2rem 2.5rem;display:flex;flex-direction:column;gap:.5rem} .carousel-slide .big-label{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:#888780;margin-bottom:.25rem} .carousel-slide .big-val{font-size:28px;font-weight:700;color:#085041;line-height:1.1} .carousel-slide .big-sub{font-size:13px;color:#5F5E5A;margin-top:.25rem;line-height:1.5} .carousel-slide .slide-title{font-size:17px;font-weight:600;color:#2C2C2A;margin-bottom:.25rem} .carousel-slide .slide-body{font-size:13px;color:#5F5E5A;line-height:1.65} .carousel-dots{display:flex;justify-content:center;gap:6px;padding:.75rem 0 1rem} .dot{width:7px;height:7px;border-radius:50%;background:#C8C6C0;cursor:pointer;transition:all .3s} .dot.active{background:#0F6E56;width:20px;border-radius:4px} .carousel-nav{position:absolute;top:50%;transform:translateY(-50%);width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.85);box-shadow:0 2px 12px rgba(0,0,0,.12);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;color:#2C2C2A;transition:all .2s;z-index:2} .carousel-nav:hover{background:#fff;box-shadow:0 4px 16px rgba(0,0,0,.18)} .carousel-nav.prev{left:12px} .carousel-nav.next{right:12px} @media(max-width:600px){.two-col{grid-template-columns:1fr}.connection-row{grid-template-columns:1fr}.conn-arrow{display:none}}
Project Husky — Bridge Bot
“You can’t design a bot that feels human without first understanding the humans it’s for.”
Project Husky is a civic technology initiative developed through Femmecubator and Open Civic Tech, for UC San Diego, to address a critical access gap: the inability of families of children with autism to navigate free educational resources due to procedural complexity, fragmented information, and language barriers.
This case study documents the research foundation, conversational design process, and Voiceflow implementation behind Bri — an AI chatbot designed to guide families through the special education system with clarity, empathy, and cultural accessibility.
The Problem
2M+ children in the US have autism (CDC)
Yet most of their families cannot access the resources they are entitled to — not because those resources do not exist, but because nobody made them navigable. Parents navigating diagnosis, IEP timelines, school district meetings, and legal rights are doing so alone, in jargon, with no guide. The question that surfaces again and again is the same:
“Why can’t someone just tell me what to do next?”
Project Husky was built to answer that.
My Role
As the Conversational AI Architect and UX Researcher on this project, my responsibility was the research foundation and conversational infrastructure that made the chatbot functional and human-centered. A clear distinction existed between team responsibilities:
Design team
Visual interface and wireframes
Voiceflow architecture and UI
Landing page design
My scope
User research and domain mapping
Bot persona and tone-of-voice guidelines
Dialogue flow writing
CDI framework application
Full Voiceflow build
HIPAA-aligned content decisions
The design team built the interface. My work determined who Bri is, how she communicates, and what she knows.
The Research
The research phase was not a clean, linear process. It was iterative, uncertain at times, and required constant recalibration. What follows is not just what was found, but how it was found, why certain paths were taken, and where the process had to pivot.
Understanding a world most people don’t know exists
The starting point was straightforward: verified government websites, federal education terms searched one at a time, and conversations with teammates — including a team lead with a direct connection to someone inside the special education system. That connection became an invaluable grounding point throughout the research.
Why mapping — and not just reading
Approaching IEP forms, eligibility criteria, and federal education law from the perspective of a first-time observer — someone who had never encountered this system before — the experience was genuinely overwhelming. That disorientation became data. If a researcher with time, focus, and no emotional stakes found this difficult to parse, a parent receiving unexpected news about their child’s future would find it nearly impossible. Mapping the system was not a methodological preference. It was a response to lived confusion.
What almost went wrong
The early risk was going too deep into legal and clinical language — IDEA, FAPE, LRE, eligibility thresholds — without stepping back to ask what a parent actually needed to understand on day one. The pivot was recognizing that the goal was not to become an expert in special education law. The goal was to understand it well enough to translate it for someone who is scared, overwhelmed, and receiving life-changing information about their child for the first time. That reframe changed the depth and tone of everything that followed.
“Along with not fully understanding the system myself, it made sense that parents wouldn’t either — and unlike me, they are also processing unexpected news and worrying about their child’s future at the same time.”
Everything existed. Nothing was usable.
Going into this phase, the assumption was that autism resources existed and were reasonably accessible. What the research revealed was more specific and more troubling: the resources were there, but they were written for systems, not for people.
What the resources had
Accurate information
Legal detail
Comprehensive coverage
What the resources were missing
A human entry point
Plain language
Emotional acknowledgment
A clear next step
This finding shaped the entire design of Bri’s knowledge base — not just what she knew, but how she said it and in what order.
Finding patterns in real experience
User research came from two sources: a special education teacher who provided the institutional perspective, and a parent with direct lived experience navigating the system for their child. While the sample was small, the insight density was high — and the patterns that emerged were consistent with everything the desk research had already pointed toward.
What was expected vs. what was actually hard
Building the initial persona and conducting desk research was manageable. The harder challenge came in a less expected place: determining the boundaries of what the chatbot could and could not do. It was not enough to design a chatbot — it had to be the right chatbot, for a specific population, with specific constraints. It could not diagnose. It could not give medical advice. It could not offer false reassurance or overpromise outcomes. Every boundary was a design and ethical decision, not just a technical one.
Three themes surfaced consistently
01
Cognitive overwhelm
Too much information, organized for the wrong audience, with no clear entry point
02
Emotional isolation
Parents navigating a complex system while processing difficult personal news — alone
03
Need for guidance
Not more resources — a clear, trustworthy voice that could say: here is your next step
From Research to Bri — The Connection
The three themes did not simply describe user pain points. They revealed something deeper: the emotional reality of a parent who has just learned their child has autism is not confusion about a bureaucratic system. It is the overwhelming, instinctive drive to do everything possible for their child — and the terror of not knowing where to start.
“Bri was not designed for someone filling out a form. She was designed for a parent who would move mountains for their child but does not know which mountain to climb first.”
That parental instinct — the urgency, the love, the fear of failing their child — is the emotional core of every design decision made about Bri. Here is how each research finding translated directly into a design choice:
Parents felt cognitively overwhelmed by the volume and complexity of information
Bri delivers one step at a time. Never a wall of information. Always a clear, singular next action.
Parents felt emotionally isolated — processing fear and uncertainty alone
Bri leads with empathy before information. Every response validates before it informs.
Parents needed someone to tell them exactly what to do next
Bri ends every response with a clear action step and a follow-up question to keep moving forward.
Parents were receiving life-changing news about their child’s future
Bri never overpromises, never gives false hope, and never goes beyond her educational scope. Trust is the foundation.
Families span language, literacy, and cultural backgrounds
Plain language and inclusive design were the baseline — not an enhancement. Every utterance was written for the most vulnerable reader first.
Developing the Bot Persona — Giving Bri a Personality
The development of Bri’s persona was the most critical phase of the research process. Every subsequent design decision derived from what the research revealed about user needs. The following CDI framework tools were applied — each shown alongside how it was applied specifically to this project.
CDI Bot Persona Worksheet — template
CDI Bot Persona Worksheet — template
Bot Persona Worksheet
Defined Bri’s core identity, personality traits, communication style, and behavioral constraints. Established her as empathetic, clear, and supportive — a care companion, not a clinical tool. Education-only scope and HIPAA-aligned boundaries were set here.
CDI Conversation Design Canvas — template
CDI Conversation Design Canvas — template
Conversation Design Canvas
Mapped the overall conversational experience at a systems level — identifying key user scenarios, emotional states, and decision points the dialogue would need to address across the full user journey.
CDI Conversation Design Process — template
CDI Conversation Design Process — template
Conversation Design Process
Applied the required, happy, and detailed path framework to structure how conversations would flow across three scenarios: the minimum viable path, the ideal frictionless experience, and the comprehensive path for users needing full guidance.
CDI Conversation Design Worksheet — template
CDI Conversation Design Worksheet — template
Conversation Design Worksheet
Structured each conversation node with intent, user utterances, bot responses, button options, and flow direction — creating a scalable, reviewable record of every dialogue decision made.
CDI Sample Dialogue Sheet — template
CDI Sample Dialogue Sheet — template
Sample Dialogue Sheet and Sample Dialogue
Drafted and pressure-tested actual conversation exchanges prior to building in Voiceflow. Ensured tone, pacing, and response length were appropriate for the target audience before any technical build began.
Bri’s response architecture — applied to every dialogue node
Empathy first
Information
Clear action step
Follow-up question
The Voiceflow Build
Once the dialogue framework was established, the full conversational system was constructed in Voiceflow — encompassing intent taxonomy, utterance variation mapping, dialogue flow logic, fallback handling, and knowledge base integration across all flows.
The knowledge base was developed from autism toolkits, government publications, IEP guides, and subject matter expert input — all rewritten in plain language and restructured for conversational delivery prior to integration.
Voiceflow — dialogue flow architecture
Voiceflow — dialogue flow architecture
Bri — welcome screen and intent taxonomy
Bri — welcome screen and intent taxonomy
Testing and Iteration
Validation occurred through internal team walkthroughs and structured feedback from a special education teacher. Three key revisions resulted:
Response length
High-information flows were shortened to reduce cognitive load during emotionally difficult moments.
Legal clarity
IEP timeline language was clarified to accurately reflect procedural steps and legal rights.
Emotional validation
Explicit validation language was added at key decision points throughout the conversation flow.
Bri — empathy response to diagnosis
Bri — empathy response to diagnosis
Bri — guided next step selection
Bri — guided next step selection
Bri — IEP information flow
Bri — IEP information flow
Bri — detailed IEP breakdown with action steps
Bri — detailed IEP breakdown with action steps
Reflections and What’s Next
This project underscored that designing for emotional complexity demands the same level of methodological rigor as designing for technical complexity. The majority of the work resided in content definition — mapping emotional states, ensuring utterance coverage, and calibrating tone — which is precisely where the research process proved most essential.
01
Complete Spanish support
Foundational infrastructure was established but not fully implemented. Given the equity mission of the project, bilingual functionality is the most immediate development priority.
02
Partner with school districts
Direct integration with school district communication systems would position Bri at the point of need, significantly expanding reach and institutional credibility.
03
State-specific IEP architecture
National expansion to serve 2M+ families requires a knowledge base that accounts for procedural and legal variation across state systems.
const track = document.getElementById(‘track’); const dotsContainer = document.getElementById(‘dots’); const slides = track.children; const total = slides.length; let current = 0; let timer; for(let i=0;igoTo(i); dotsContainer.appendChild(d); } function goTo(n){ current = (n+total)%total; track.style.transform = `translateX(-${current*100}%)`; document.querySelectorAll(‘.dot’).forEach((d,i)=>d.classList.toggle(‘active’,i===current)); resetTimer(); } function moveSlide(dir){ goTo(current+dir); } function resetTimer(){ clearInterval(timer); timer = setInterval(()=>goTo(current+1), 4000); } resetTimer();