Alabama Autism
A trusted, always-cited resource for parents of children with autism in Alabama. Ask a question below.
For the tired ones. The scared ones. The just-diagnosed and the years-in. The moms typing at 2 a.m., the dads on lunch break, the grandparents figuring out what an IEP is — every question welcome, every answer cited, nothing invented. If we don't know, we'll say so — and point you to someone who does.
Hi — I answer questions about autism resources in Alabama. Every answer cites its source. Try one of these, or type your own:
Answers pull from a curated Alabama knowledge base plus live web search when needed. This is not medical advice — always confirm details with a licensed clinician.
▸About this tool
What it is. A parent-facing information resource for autism-related questions — anchored in Alabama-specific programs, providers, and policy, and backed by a general autism reference corpus (DSM-5, AAP, Cochrane, CDC, INSAR, peer-reviewed research). Every specific fact in an answer is cited with a clickable link to its source. Live web search fills gaps the verified knowledge base doesn't cover yet.
Why it exists. Alabama's autism resources are scattered across state agencies, school districts, clinics, and advocacy organizations. Parents in the maze often spend months figuring out things another parent already knows. This tool is trying to close that gap for one state — with clinical stewardship from Dr. Justin Schwartz at UAB Civitan-Sparks Clinic, the leading autism expert in the state.
Built by Evan Jones, a parent of a child with autism in Alabama. A volunteer project, funded personally at the infrastructure level. Not affiliated with any state agency, UAB, Civitan-Sparks Clinic, or the Autism Society of Alabama.
Drill deeper — click any section
The two-scope knowledge base
Every retrieved passage is tagged with one of two scopes, and you'll see the tag as a small colored badge next to each citation in an answer:
You can ask anything — Alabama-scoped or general — and the system pulls from both pools, with a slight preference for Alabama context when a match is close. The answer prefix tells you which mix was used (“From our verified Alabama knowledge base…”, “From our general autism reference corpus…”, or a combination).
How answers are grounded — RAG in five steps
Retrieval-Augmented Generation (RAG) is the pattern behind every answer. Instead of asking the language model to answer from memory (which is how AI systems hallucinate), the system first retrieves real passages from a curated corpus, then hands those passages to the model with strict instructions to only answer from what was retrieved and cite it.
- Every KB entry is split into ~500-token passages and embedded as a 1024-dim vector using OpenAI's
text-embedding-3-small. - Vectors are stored in Postgres with the
pgvectorextension using an HNSW cosine-similarity index — the same tech GitHub, Notion, Retool, and countless AI startups use for semantic search. - Your question is embedded with the same model. The system pulls the top Alabama-scoped passages and the top general-reference passages in parallel, then combines and re-ranks them (with a small Alabama preference) to the top ~7 most relevant.
- Those passages plus a strict system prompt ("only answer from these sources, cite each one, refuse if the answer isn't supported") are streamed to Claude Haiku 4.5. Medical, policy, or crisis-language questions automatically escalate to Claude Sonnet 4.6 with extended thinking.
- The response streams back token-by-token with inline [N] citations. If the retrieved passages don't cover your question well enough, Claude falls back to a live web search, cites the URLs, and clearly flags the answer as web-sourced rather than from the verified corpus.
Current corpus: — across — Alabama entries + — general references (— embedded passages, — unique source URLs).
Why so much info in so little space: 1 MB of plain text is roughly 200,000 words — about 500 printed pages, or the length of two typical novels. These aren't verbose scraped web pages; each entry is a hand-curated FAQ-style answer to a specific parent question, with just the facts plus links to sources. The crawler pulls in tens of megabytes of raw government pages, PDFs, and research abstracts each week and canonicalizes them into compact entries — so 1 MB of curated KB represents roughly 20–50× that volume of source material.
When it doesn't know
Refusal is a feature, not a failure. If the retrieved passages don't cover your question and a live web search can't find a trustworthy answer, the tool is instructed to say so plainly and point you to a real professional (ADRS Early Intervention 334-293-7500, the Autism Society of Alabama 877-4-AUTISM, your Regional Autism Network, or the specific clinic in question) rather than invent something.
Web-search fallback answers are always prefixed “Not from our verified knowledge base — live web search:” so you can tell them apart from curated answers at a glance.
Your privacy — what's stored and what isn't
This is not a HIPAA-covered service and not a place to store medical records. It informs and points to professionals — it does not diagnose or prescribe. Even so, the storage model is conservative:
- Anonymous by default. Nothing is saved past the browser tab unless you enter an email for the “Save this conversation” feature.
- Automatic scrubbing. Personally identifying details you type (your child's name, your phone, addresses, dates of birth, MRN/Medicaid IDs, insurance IDs) are stripped before anything is written to storage — even in your own conversation history.
- Opt-in extended consent. Registered parents may choose to talk about their own child by name. In that mode the raw text stays only in their own encrypted thread; anything that leaves that thread (feedback rollups, weekly digest to the steward) is always the scrubbed copy.
- Isolated infrastructure. Runs on its own server, deliberately separated from any clinical system. No patient records touch it. No third-party ad networks, no analytics beacons, no tracking pixels in emails.
- Clear this conversation. The “Clear” button in the chat header deletes your session's messages server-side, not just in your browser.
- Signed-in state lives in a single first-party cookie (
aa_sid, HttpOnly, 1-year expiry). If you clear cookies or use private/incognito mode, that device gets logged out — enter your email again to receive a fresh sign-in link and you’re back in.
How Dr. Schwartz shapes it
Dr. Schwartz has a private, PIN-gated console where he can chat with the tool as its editor. He can add or refine knowledge-base entries (“add an entry about the new Medicaid ABA age extension”), tune the assistant's tone or refusal rules, and review a weekly digest of what parents actually asked. Content changes auto-apply and take effect on the next parent's question. Code-level changes queue up as proposals for the operator (Evan) to review before shipping. Every content change is logged with a full before/after and is revertible with one click from the operator dashboard — nothing is destructive.
Look for the ● curated by Dr. Schwartz badge on any citation to see entries he authored or edited directly.
How your feedback loops back in
Every assistant response has a thumbs-up / thumbs-down button; you can also leave a short comment. After you've had a few conversations, a small 3-question survey appears (rotating from a bank of 20) asking things like “what was hardest to find,” “how did the reading level feel,” “which feature would help you most next.” Responses are anonymous and roll up into Dr. Schwartz's weekly digest as “what parents want next” — which directly informs what he adds to the KB or asks the operator to build.
None of that is required. Skip any survey and it won't come back for another week.
Tech & cost transparency
- Frontend: Next.js 15 (App Router) + TypeScript + Tailwind CSS.
- Storage: Postgres 16 with the
pgvectorextension for embeddings, on the same box. - AI: Anthropic Claude Haiku 4.5 (default) + Sonnet 4.6 (escalation), with prompt caching on the system prompt + retrieved chunks to keep costs down.
- Embeddings: OpenAI text-embedding-3-small at 1024 dimensions.
- Hosting: A single ~$20/month AWS Lightsail Ubuntu instance, fronted by nginx with Let's Encrypt TLS.
- Refresh: Nightly Python crawler at 3am CT re-fetches known sources, diff-hashes, and appends new entries.
- Cost: Roughly $70–$130/month all-in (hosting + AI + embeddings + notifications). Funded personally.
- Source code: Full stack is auditable. Available on request — email evanjones@mdr.net.