Inspiration
Our teammate Verrill's credit score dropped 20 points last month. He didn't miss a payment. He didn't max out his card. He just spent normally, and a month later, the damage was already done. He had no idea why.That's not a unique story. According to the Credit Counselling Society, over 80% of young Canadians aged 18-34 are operating in a monthly deficit, and average unsecured debt exceeded $24,000 in 2025, up 9% since 2023. The problem isn't that people don't care about their credit. It's that the feedback loop is completely broken. Credit score systems only update periodically, they don't explain which actions caused a change, and financial education is delivered outside the context of real spending behavior.You swipe. Nothing happens. Score drops later.We built Credify to fix that feedback loop.
What it does
Credify provides immediate, action-based feedback on spending behavior, helping young adults understand and optimize their credit before long-term damage occurs. When you connect your credit card and make a transaction, Credify instantly calculates your updated utilization, tells you what it means for your score trajectory, and recommends exactly what to do next. No monthly delays. No abstract numbers. Just clear, real-time feedback tied directly to your behavior. Core features include a credit dashboard showing your live score, utilization percentage, and six months of interactive score history. Every spend or payment triggers an impact analysis, utilization recalculates instantly and Credify surfaces a plain-language insight using templates like "You spent $200. At 54% utilization, your credit score is at risk. Consider a payment soon." A recommendation engine evaluates your balance and limit against five rules to surface the one or two most relevant actions you can take right now. Beyond single transactions, Credify reinforces habits over time through a quests and ranking system, weekly streaks for keeping utilization under 30%, monthly challenges tied to your prior behavior, and XP-based rank progression from Beta to Alpha to Sigma. An AI chatbot answers questions like "why did my score drop?" grounded in your actual credit data. And a proficiency test at onboarding assigns your starting rank based on real credit knowledge, not just account age.
How we built it
Frontend: React with TypeScript, mobile-responsive web. Firebase Auth handles email and password authentication with a full onboarding flow gated on profile.hasCompletedOnboarding. Backend: Python and Flask, with four core endpoints — POST /api/connect for account setup, POST /api/action for transaction processing and impact analysis, GET /api/history/:uid for score history, and POST /api/quests/evaluate/:uid for quest completion and XP awarding. Database: Firestore with a structured user document schema covering profile, account, score history, quests, and monthly stats. Monthly stats track utilization checks, payment count, and start/end balance — powering the variable quest generation system that adapts to each user's prior month behavior. Credit data: Plaid sandbox API for mock credit data. All Equifax data is simulated using a fixed seed profile and a deterministic rule-based score simulation engine — util under 30% adds 2 points, 30-50% subtracts 1, over 50% subtracts 3, capped between 300 and 850.
Analytics agent: Built on Fetch.ai, an autonomous agent continuously monitors the user's credit behavior — tracking utilization trends, payment patterns, and score trajectory — and surfaces proactive insights on the dashboard.
Design: Figma for UI/UX design and prototyping.
Challenges we ran into
The hardest problem was designing the impact analysis to be honest without being misleading. Real credit scoring models are proprietary and complex, we couldn't simulate them accurately. But displaying fabricated numeric score deltas would actively mislead users into false confidence or unnecessary panic. We landed on directional language only: "your score is likely to hold steady or improve" rather than "+12 points." That decision required us to rethink how we framed value to users entirely, from precision to clarity.
Quest evaluation was also more complex than expected. Streak-based quests required tracking distinct calendar dates in UTC, resetting on utilization breaches, and evaluating on user action rather than on a timer. Coordinating fixed quests, variable quests drawn from a monthly pool, and behavior-driven variable quests generated from prior month stats meant careful Firestore document management to avoid duplication and race conditions.
Finally, getting the onboarding flow right, proficiency test, rank assignment, card connection, and dashboard redirect required tight state management across Firebase Auth and Firestore to ensure a seamless first experience.
Accomplishments that we're proud of
We're proud that the core feedback loop actually works end to end. You connect a card, make a transaction, and within under a second you see your utilization update, a contextual insight message, and actionable recommendations, all calculated deterministically from your real balance and limit. The insight template system is something we're particularly proud of. Rather than generic tips, every message is filled with the user's actual numbers: "You spent $150. Your utilization is now 28% — well within the healthy range." It makes the feedback feel personal without requiring a machine learning model.
We're also proud of the quest system's behavioral adaptivity. The variable quest engine evaluates the prior month's utilization average, payment count, and balance trend to generate a quest specifically targeted at the user's weakest habit. That's a meaningful step toward personalization within a rule-based system.
What we learned
Building Credify in a hackathon compressed months of product decisions into hours. A few things stuck with us.
On the technical side, we underestimated how much complexity lives in real-time state management. Keeping Firestore, the Flask backend, and the React frontend in sync — especially for quest evaluation and utilization recalculation — required more careful architecture than we initially planned. We also learned that Firebase Auth and Firestore are powerful together, but only if your data schema is right from the start. We refactored our user document structure mid-build, which cost us time.
On the product side, the biggest lesson was about honesty over impressiveness. The temptation to show a numeric score delta was real — it would have looked great in a demo. But it would have been fabricated, and users making real financial decisions based on fake numbers is genuinely harmful. We chose directional language over false precision, and that one decision shaped how we thought about every other piece of copy in the product.
On the team side, we learned how important it is to lock the scope early and protect it. Every hour we spent debating a feature we weren't going to build was an hour we weren't shipping. Once we committed to the MVP and trusted the PRD, everything moved faster.
What's next for Credify
The immediate next step is integrating live Equifax data through a regulated aggregator like Plaid or Flinks, replacing the simulated seed profile with real credit pulls. This unlocks true multi-card support and removes the need for mocked score history.
From there, we want to expand the recommendation engine beyond utilization — incorporating payment timing, credit age, and hard inquiry patterns into the feedback loop. The AI chatbot also has significant room to grow: right now, it answers reactive questions, but we want it to proactively surface insights before users even ask.
Longer term, Credify has a natural expansion path into the immigrant population unfamiliar with the Canadian credit system — a segment with acute need and almost no tailored tooling available today.
The Fetch.ai analytics agent has significant room to grow — moving from reactive monitoring to predictive behavior modeling, flagging users before they breach the 30% utilization threshold rather than after.
Built With
- anthropic-api
- fetch.ai
- figma
- firebase
- firebase-auth
- firestore
- flask
- plaid-api
- python
- react
- typescript
Log in or sign up for Devpost to join the conversation.