User Stories
Ruth, older adult with a chronic condition
As Ruth, I want to type my ZIP code and be told which library serves me, so that I know where to start.
Accepted when: a valid North Carolina ZIP returns the serving system and nearest outlets with address and hours, nearest first.
As Ruth, I want to ask about managing my diabetes in my own words and be shown resources my library already pays for.
Accepted when: results are filtered to what her system actually carries, and each result names its source and links to it.
As Ruth, I want to be walked through logging in one step at a time, so that I do not get lost.
Accepted when: one instruction per step, the assistant waits for confirmation before continuing, and the user can go back.
As Ruth, I want to be told plainly when the assistant is not sure, so that I do not act on something wrong.
Accepted when: below the confidence threshold the answer is visibly marked as unverified and the librarian contact is offered.
Danielle, homeschooling parent
As Danielle, I want to see everything my library offers for children by subject and age, so that I stop paying for things I already have.
Accepted when: results can be filtered by audience and format, and the access model is stated for each.
As Danielle, I want to know how to get my kids onto Libby and Hoopla, so that I can set it up once.
Accepted when: a guided walkthrough covers card number, app install, and library selection.
As Danielle, I want to see upcoming programs at my county library, so that I can plan around them.
Accepted when: local events are listed with date, location, and a source link.
Marcus, rural teenager
As Marcus, I want to use this on my phone without making an account, so that nothing is tied to my name.
Accepted when: full functionality on a small screen with no login, and no personally identifying information collected.
As Marcus, I want to find mental health resources near me and statewide, so that I have somewhere to go.
Accepted when: results include library-provided resources and vetted local and statewide services.
As Marcus, if I say something that sounds like a crisis, I want real help immediately rather than a chatbot answer.
Accepted when: crisis language triggers an immediate, unmissable handoff to the 988 Suicide and Crisis Lifeline and local services, and the assistant does not attempt triage.
Sandra, librarian administrator
As Sandra, I want to sign in to an admin panel, so that only staff can change the data.
Accepted when: authenticated access only, and unauthenticated requests to admin routes are rejected.
As Sandra, I want to add, edit, and remove resource entries for my system, so that the data reflects reality.
Accepted when: full create, edit, and remove on entries scoped to her system, reflected in answers immediately.
As Sandra, I want to override an answer the assistant keeps getting wrong, so that patrons stop being misled.
Accepted when: a librarian-authored override takes precedence over generated content and is labeled as staff verified.
As Sandra, I want to see questions the assistant could not answer, so that I know what to add.
Accepted when: a review queue of unanswered and low-confidence questions, with frequency counts.
As Sandra, I want broken links flagged, so that I am not the one who has to find them.
Accepted when: links recorded as broken, or reported by users, appear in the queue and are suppressed from answers.