Inspiration
Millions of people are "credit invisible" or have a thin file—especially students, immigrants, gig workers, and anyone who has been denied and is trying to rebuild. Traditional credit scores often ignore the most consistent signals people do have: rent, utility payments, and real income patterns.
We built Credify to make those everyday signals legible in minutes—turning a messy money story into a clear readiness score and a practical, step-by-step path to eligibility.
What it does
Credify is an alternative financial reliability signal platform that:
- Guides a user through a 4-minute assessment (situation → profile → data → score).
- Lets users connect or import financial signals for the last ~90 days:
- Rent payment history
- Income deposits
- Utility payments
- via Plaid, Stripe, PayPal, or CSV upload (with a demo mode fallback).
- Computes an Access Score (0–100) and breaks it down into four weighted factors:
- Rent Consistency (35%)
- Income Stability (30%)
- Spending Ratio (20%)
- Savings Behavior (15%)
- Generates a plain-language AI explanation (with a safe fallback if AI keys aren’t configured) and exactly 3 next actions.
- Produces a 90-day action plan and a progress dashboard with projected improvements.
- Optionally saves score history to Supabase if a user is logged in and Supabase env vars are configured.
How we built it
- Frontend / App: Next.js 14 (App Router) + React + TypeScript
- UI: Tailwind CSS + Framer Motion for animation and polish
- Data ingestion:
- Plaid Link (react-plaid-link) for bank connectivity
- Stripe Connect OAuth flow for Stripe-based transaction access
- PayPal OAuth + CSV parsing fallback for PayPal exports
- A demo generator so the flow works even without API keys
- Normalization layer: normalized transactions are mapped into a consistent internal model (rent / utilities / income / expenses).
- Scoring engine: a transparent scoring function converts the normalized data + profile into the Access Score and factor breakdown.
- AI analysis: a Next.js API route calls the OpenAI API to return strict JSON (
explanation,actions,confidence). If no key is present or parsing fails, we return a deterministic fallback response. - State & privacy-first demo: the assessment state is stored in
localStorageso the demo can run end-to-end without storing credentials. - Persistence (optional): if Supabase is configured, authenticated users can persist results to a
score_historytable.
Challenges we ran into
- Designing a scoring model that’s simple and explainable, but still feels representative of real-world risk signals.
- Normalizing data from different providers into one schema (and handling missing/partial signals).
- Making the AI output reliable: enforcing strict JSON schema, handling model edge cases, and providing a robust fallback.
- Keeping the experience smooth even when integrations aren’t configured—so demo users can still complete the flow.
Accomplishments that we're proud of
- A complete end-to-end flow that produces a score, explanation, and plan in a few minutes.
Built With
- css
- framer-motion
- javascript
- next.js
- node.js
- openai
- react
- supabase
- tailwind
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.