Inspiration
I'm someone who commits to a lot of things, even when I already have a lot on my plate. A friend asked me to help with her club's spring showcase, and I said yes without really thinking it through, even though I had two midterms coming up and was already mentoring two first-years. By the time I realized how much I'd taken on, it was too late to back out gracefully. That's the real problem: most productivity tools assume you've already decided what matters and just help you schedule it. The harder, earlier moment, deciding whether to take something on at all, has no tool built for it. So I built one, for people like me.
What it does
Before You Say Yes helps students and early professionals decide whether to take on a new commitment by weighing it against their real priorities. Users keep a living list of what currently matters to them, across life areas like work, relationships, family, health, and finances. When a new ask comes in, they describe it in plain language, and the AI reasons through which existing priorities are actually relevant, whether the new commitment supports or competes with each one, and produces a side by side comparison of what saying yes versus no would concretely mean, plus its own stated assumptions and an honest confidence note, so it never pretends to certainty it doesn't have. A "what if" follow up lets users test variations without starting over. A separate Patterns view looks across someone's full history to surface recurring tensions or neglected priorities over time.
How we built it
The frontend is plain HTML, CSS, and JS across five pages: login, priorities, dashboard, weigh, and patterns. Firebase handles authentication and stores each user's priorities and issue history in Firestore, scoped so only that user can access their own data. The reasoning itself runs on Llama 3.3 70B via Groq's free API, chosen because the task is genuinely linguistic: interpreting an unstructured personal situation and reasoning about how it interacts with another unstructured situation, which a weighted formula or rules engine has no way to do without first stripping out the context that makes it meaningful. The AI runs in two distinct passes: a per issue reasoning call (relevant priorities, yes/no consequences, assumptions, confidence) and a separate cross history reflection call for the Patterns page.
Challenges we ran into
Early versions used a fixed set of structured fields (goals, commitments) for priorities, which felt close to existing apps like Todoist or Motion. We restructured it into a single free text priority list with AI inferred categorization instead, which made the "why does this need AI" argument much stronger and more honest. We also had to be deliberate about where the AI stops: it identifies tradeoffs but never resolves conflicting priorities or decides yes or no for the user, and that boundary took real iteration to enforce consistently across every output rather than just state as a policy.
Accomplishments that we're proud of
Getting the AI to reason about relevance rather than just generate a list, for each new ask, it explicitly identifies which of the user's priorities actually apply and how, instead of treating every priority as equally important every time. We're also proud of building real account persistence (Firebase auth and Firestore) so the tool's value compounds over time as someone's priority list and history grow, rather than starting fresh every session.
What we learned
We learned how much of "is this AI justified" comes down to what shape the input is. As long as priorities were structured fields, a rules engine could plausibly have done the job, and that was a fair criticism we got early on. Moving to free text input with AI inferred meaning made the LLM's role load bearing instead of decorative. We also learned that responsible AI is stronger as an interaction pattern (visible assumptions, confidence notes, required confirmation before any profile change) than as a paragraph of disclosure. The safeguards needed to be something the user actually sees and uses, not just something we state separately.
What's next for 404
Letting the Patterns reflection actively inform future comparisons, for example surfacing "you tend to underestimate the time cost of club commitments" as context the next "weigh it" call can draw on. We'd also like to support recurring asks (weekly, monthly) distinctly from one time asks, and let users invite a trusted second person to weigh in on a specific decision before they finalize it.
Built With
- authentication
- css
- firebase
- firestore
- groq
- html
- javascript
- llama
Log in or sign up for Devpost to join the conversation.