Sprint1 8. Functional scenarios - ISIS3510-Group-27/Documentation GitHub Wiki
Functional Scenarios
Note: The scenarios are written using the feature templates from the context canvas of the book Chapter 3, as suggested by Chapter 4 of the book: "You can use the same templates we described previously for listing features in the context canvas."
Note: The flows mentioned across the scenarios, are related to the proposed solution presented on MS3
Flow 1: Discover
FS1. Declaring interests during onboarding
Persona: Group seeker
Feature statement: I want to tell the app what I am interested in, so I can be proposed groups that fit me instead of searching one by one. (Tapping the interest tags on the screen)
Execution context: Second week of the semester, 8:40 a.m., on the bus to campus. The student has just installed SENECApp and signed in with their Uniandes account. The app holds no interest profile for them, the recommendation list is empty, and the home screen has never been rendered.
Persona path: The student completes onboarding: taps the tags salsa, board games and environmental volunteering, confirms Industrial Engineering and sixth semester, and sets the weekly commitment they can sustain.
System reaction: The app stores the interest profile against the student's account, runs the interest-based recommendation model over the declared tags plus program and semester, and opens the home screen with a first ranked list of groups, each showing its activity, meeting frequency, expected level and how to join.
FS2. Evaluating a recommended group before joining
Persona: Group seeker
Feature statement: Given that I already declared my interests during onboarding, I want to see what a group actually expects from me before joining, so I can avoid ending up in a competitive academy again. (Swiping through the recommendation list and tapping a group card)
Execution context: Thursday, 4:15 p.m., in the library between classes. The interest profile from FS1 exists and the home screen is showing eight recommended groups. The student is not a member of any group yet.
Persona path: The student swipes through the recommendations, opens a salsa group, reads the declared level ("beginner, no experience required"), the frequency ("Tuesdays and Thursdays, 6–8 p.m.") and the expected commitment, goes back, compares it with a second recommendation, and taps Join on the first one.
System reaction: The app registers the student as a member, adds the group's upcoming events to their event feed, subscribes them to the group's notifications, and records the join together with the position the group occupied in the recommendation list.
FS3. Finding something to do in a free block
Persona: Group seeker
Feature statement: Given that my class schedule is already imported and I granted location access, I want to see only what is happening near me while I am actually free, so I can use the gap between classes instead of going home. (Pulling down to refresh the Today view, which reads GPS and the imported schedule)
Execution context: Wednesday, 11:05 a.m. The student walks out of a class in Bloque ML with a free block until 1:00 p.m. The schedule is imported, location permission is granted, and campus WiFi is available.
Persona path: The student opens SENECApp, pulls down to refresh the Today view, and scrolls the surfaced events.
System reaction: Using the free block detected in the schedule and the current position on campus, the app surfaces only events starting within the next two hours and within walking distance, orders them by interest match, and hides anything overlapping with the student's classes. Each card shows the group, the place and the start time, with a Save action.
FS4. Searching with explicit filters
Persona: Group seeker
Feature statement: I want to filter groups by level and by how often they meet, so I can find something I can sustain with my current workload. (Typing in the search field and tapping the filter chips)
Execution context: Sunday evening, at home, on mobile data. The recommendation list on the home screen is not showing anything that fits what the student has in mind: beginner level, no more than one session per week.
Persona path: The student opens the search screen, types "fotografía", taps the beginner level chip and the once a week or less commitment chip, opens two of the results, and taps Save on one of them instead of joining right away.
System reaction: The app returns the groups matching the text and both filters, marks which are official university groups and which are student-created, adds the saved group to the student's saved list, and records which filters were applied before the group was opened.
FS5. Acting on an event reminder
Persona: Group seeker
Feature statement: Given that I joined a group whose sessions I keep forgetting, I want to be reminded shortly before each session with the place, so I can decide on the spot whether I make it. (Tapping the push notification on the lock screen)
Execution context: Tuesday, 5:30 p.m. The student joined the salsa group in FS2 and a session starts at 6:00 p.m. in the Centro Deportivo. The app is in background and the phone is locked.
Persona path: The student receives the push notification, taps it on the lock screen, checks the place on the event card, and taps I'm going.
System reaction: The app opens the event detail directly from the notification, marks the student as attending, and adds them to the attendance list the group leader will use for check-in at the door.
Flow 2: Create
FS6. Publishing an interest instead of an organization
Persona: Club initiator
Feature statement: I want to publish the idea of a climbing group and see who reacts, so I can measure real demand before going through formal registration. (Filling the interest form and tapping Publish)
Execution context: Friday afternoon, between classes. The student has no group created in the app, no institutional registration, and no way of knowing whether anyone else on campus wants the same thing.
Persona path: The student opens Create, writes a short description, sets the proposed frequency ("Saturdays in the morning") and the expected level ("no experience required"), taps the tags climbing and outdoors, and publishes.
System reaction: The app publishes the interest as a first-class entity in the directory, makes it discoverable to students whose profile matches its tags, opens an opt-in counter at zero, and shows the initiator how many students the interest has reached so far.
FS7. Opting in to somebody else's interest
Persona: Group seeker
Feature statement: Given that the group does not exist yet, I want to signal that I would join if it happened, so I can be told when it becomes real without giving my contact to anyone. (Tapping "I'm interested" on the interest card)
Execution context: Monday, 12:20 p.m. The climbing interest from FS6 was published three days ago. The student's profile carries the outdoors tag, so the interest appears among their recommendations. There is nothing to join yet, only an interest.
Persona path: The student opens the interest, reads the proposed frequency and level, and taps I'm interested.
System reaction: The app registers the opt-in, adds the student to the interest's subscriber list, confirms that they will be notified if the interest becomes a group, and increments the initiator's opt-in counter.
FS8. Reaching critical mass and promoting the interest
Persona: Club initiator
Feature statement: Given that my interest has been gathering opt-ins for ten days, I want to be told when there are enough people to make the group viable, so I can formalize it at the right moment instead of guessing. (Tapping the critical mass notification and then Promote to group)
Execution context: Ten days after FS6, 7:45 p.m., the initiator is at home. The opt-in counter has just crossed the viability threshold monitored by the system. The interest still has no group profile and no events.
Persona path: The initiator taps the critical mass notification, reviews the list of students who opted in, taps Promote to group, and completes the group profile: what the group does, how often it meets, the expected level and how to join.
System reaction: The app converts the interest into a group, carries the subscriber list over as the group's initial audience, publishes the group profile in the directory so it can be recommended to other students, and grants the initiator the group leader role with access to the management view.
FS9. Broadcasting to a consenting audience
Persona: Club initiator, now Group leader
Feature statement: Given that everyone on my list explicitly asked to hear from me, I want to announce the first meeting to exactly those students, so I can convene people without resorting to mass institutional email. (Tapping Send announcement)
Execution context: The day after FS8. The group exists but has never held an activity, and its audience consists only of the students who opted in to the interest.
Persona path: The leader publishes the first meeting as an event with place, date and time, and taps Send announcement to the group's subscribers.
System reaction: The app creates the event, delivers the announcement only to the students on the subscriber list, adds the event to the campus feed of students whose free blocks and interests match it, and does not allow the message to reach anyone outside the list.
Flow 3: Sustain
FS10. Publishing the sessions of the month
Persona: Group leader
Feature statement: Given that I currently coordinate everything in a spreadsheet and repost it on two social networks, I want to publish all my sessions once in a single place, so I can stop duplicating posts and still reach students outside the group. (Tapping Add event and swiping through the calendar)
Execution context: Start of the month. The group is established, has 40 members, and the leader is preparing the semester's schedule.
Persona path: The leader opens the management view, publishes the four sessions of the month with place, time and capacity, and marks two of them as open to non-members.
System reaction: The app registers the four events, notifies the group's members, exposes the two open sessions in the campus feed of non-member students whose interests match the group, and shows the leader how many students each event reached.
FS11. Registering attendance at the door
Persona: Group leader
Feature statement: Given that twenty-two students confirmed they were coming, I want to mark who actually arrives as they walk in, so I can know later who confirms and never shows up. (Tapping each name on the check-in list)
Execution context: Tuesday, 6:00 p.m., at the entrance of the Centro Deportivo, right before the session starts. The leader is standing at the door holding the phone in one hand. The confirmed list includes the student from FS5.
Persona path: The leader opens the event in the management view and taps each student on the check-in list as they arrive.
System reaction: The app records attendance per student for that event, keeps the count of those who confirmed but did not show up, and updates the group's attendance history.
FS12. Detecting drop-off and reacting to it
Persona: Group leader
Feature statement: Given that attendance has been captured in the app for two months, I want to see which members stopped coming, so I can invite them back before they leave the group for good. (Swiping between the metrics tabs and tapping Message these members)
Execution context: Week 10 of the semester, Sunday night. The group has held its sessions since FS11 and the leader suspects participation is falling, with no evidence beyond the impression.
Persona path: The leader opens the reach and membership metrics, swipes to the attendance trend of the last four weeks, reviews the list of members who have not attended in that period, and sends them a message with the next session.
System reaction: The app shows the attendance trend and the reach of the last events, identifies the members whose attendance dropped, delivers the message only to those members, and records whether they return to a session afterwards.
Contributors: Daniel Vergara, Camilo Castilla, Nicolas Salazar, Jose Manuel Fonseca, Daniel Vargas, Luciana Bacci.