Inspiration
Most of us got our first credit card in college with one rule in mind: pay on time. We did, and our scores still dipped. Nobody told us when a card reports your balance. Card companies send your balance to the credit bureaus on the statement closing date, not the due date. So you can pay in full every month and still show 80% utilization, because the balance was high on the one day that counted.
This hits students hardest: low limits, irregular paychecks, and short histories, where one bad month really shows. International students often start with no US credit history at all. We wanted a coach that knows your dates, your paydays and your limits, and tells you exactly what to do before it's too late. Not another dashboard that explains what already happened.
What it does
Anchor is an AI credit coach for students. It reads your credit cards (Plaid), your bank activity (Capital One Nessie) and your student loans, predicts what each card will report on its statement date, and tells you what to pay and when.
- Find My Next Move scans every card, bank account and loan, then ranks the ways to strengthen your credit. Example: "Pay \$332 on your Chase Freedom before Oct 8 to report under 30%."
- Full credit report: what's helping, the next actions with dates, and habits to build. Every item has an Ask Wave button.
- Wave, the AI coach, answers questions from your own numbers. You can attach a bank statement, a card, a loan or a single purchase ("Was this Chipotle run worth it?") and Wave answers from those transactions.
- Onboarding asks about your goal (rent an apartment, first card, car...) and timeline, and sets your reminders and how much Wave explains.
- Wave Coach settings let you choose a 30% or 10% utilization target and a Gentle or Direct coaching style. The scan, report and chat all follow your choice.
Wave explains your options. You make the final decision.
How we built it
Design first. We designed every screen in Figma (393 × 852, iPhone) and built them pixel-close: a dark "liquid glass" look, a thinking orb and border beam from Libraries.dev, and Lucide icons.
Stack
| Layer | Tech |
|---|---|
| Frontend | React 18 + Vite |
| Backend | Node.js + Express (holds every API key) |
| Credit cards & loans | Plaid (sandbox), Liabilities |
| Bank activity | Capital One Nessie: paychecks, purchases, bills |
| AI | Grok (xAI) via the OpenAI SDK with structured JSON outputs |
The forecast. The core of Anchor is simple math that most people never see. With current balance $B$, daily spending pace $r$, and $d$ days until the statement closes, the projected statement balance is
$$ B_{\text{proj}} = B + r \cdot d $$
and the utilization that gets reported is
$$ U = \frac{B_{\text{proj}}}{L} $$
where $L$ is the credit limit. To report under a target $t$ (30% by default, 10% for the best scores), the payment before the closing date is
$$ P = \max\left(0,\; B_{\text{proj}} - t \cdot L\right) $$
For our demo student, the Chase card has a \$500 limit and a projected balance of about \$482, so $U \approx 96\%$. Paying $P = 482 - 0.3 \times 500 = \$332$ brings it to 30%, and \$432 brings it to 10%. Then we check it's affordable: checking balance $+$ paychecks arriving before the pay-by date $-$ bills due.
The AI layer. The server builds a compact, factual summary of the user's money (cards, forecast, spending by category, repeat merchants, loans) and sends it to Grok with a strict JSON schema. Every answer comes back as { message, actions, followUps }, so a reply can include buttons like Open Chase Freedom or See Chipotle that jump to the right screen.
Challenges we ran into
- Statement dates aren't in the APIs. Plaid gives the last statement date, not the next one, so we estimate the next close as one month later, and the UI says it's an estimate.
- An AI must never make up numbers about someone's money. If Grok fails or there's no key, Anchor falls back to rule-based answers built only from exact figures. If a question can't be answered exactly, it says so and offers a retry instead of guessing.
- Keeping the demo honest. Only one card, one checking account and one loan come from the real integrations. Everything else is labeled as example data in the app and the API.
- Privacy and safety. We never ask for or store an SSN, account access is read-only, and anything the user types that goes into the AI prompt (name, goal) is cleaned or limited to known values to block prompt injection.
- Making it feel fast. The scan steps through each real account while the AI works, finished scans are cached for the session, and a pinned demo date keeps the numbers the same in every run.
- Figma to code. Getting frosted glass, progressive blur behind the tab bar, and the orb animations to match the designs on a real phone took many rounds of side-by-side comparison.
What we learned
- Timing beats amount. The same \$300 payment can help your score a lot or do nothing, depending on whether it lands before or after the statement closes.
- Structured outputs make LLMs usable in product UI. A strict schema turned free-form advice into buttons, follow-up questions and screens we could trust.
- Fallbacks are a feature. Designing for "the AI is down" made the whole app more reliable, and more honest.
- Design and code together. Building straight from Figma frames kept the team aligned and made the demo look like a real product, not a hackathon prototype.
What's next
- Statement-close reminders through push notifications (2–7 days ahead, as chosen in onboarding)
- Real credit report parsing: flag accounts you don't recognize, wrong late payments, and collections
- Real accounts and a database instead of browser storage
- A credit-builder path for international students starting from zero US history
Built With
- capital-one
- css3
- express.js
- figma
- git
- github
- grok
- html5
- javascript
- json-schema
- libraries.dev
- localstorage
- lucide
- nessie-api
- node.js
- openai-sdk
- plaid
- react
- react-plaid-link
- rest-api
- structured-outputs
- vite
- xai
Log in or sign up for Devpost to join the conversation.