About the Project
Inspiration ✨
Returning items is messy — every store has different policies, deadlines, and methods. Receipts get lost in inboxes or bags, and by the time you realize, it’s too late. We wanted a one-stop “returns wallet” where uploading a receipt instantly shows how many days you have left and lets you start the return in one click.
What We Built 🛠
sendback — Returns Wallet is a full-stack app built with Next.js (frontend) and FastAPI (backend).
- Receipt ingestion: We use OCR (REKA) + LLM parsing (Claude via Lava API) to extract structured fields (merchant, items, purchase date).
- Deadline calculation:
[ \text{days_remaining} = (\text{purchase_date} + \text{window_days}) - \text{today} ]
ensuring users always see how long they have left. - Policies: A
policies.jsonfile defines return windows and links for each merchant, keeping business logic flexible.
Challenges & Learnings ⚡
- Parsing inconsistent receipt formats reliably was hard — we learned to design strict JSON schemas for LLMs.
- Next.js App Router introduced quirks (
paramsnow resolves as a Promise), so routing to/order/[id]took debugging. - CSS traps prevented scrolling in our return flow until we fixed layouts with
min-h-dvhandoverflow-y-auto.
Through these challenges, we learned to integrate AI services with robust backend logic while keeping the frontend simple and user-friendly.
Built With
- anthropic
- anthropic-claude
- claude
- crater
- fastapi
- github
- httpx
- lava
- lava-forward-api
- next.js
- node.js
- pydantic
- pypdf
- python
- python-multipart
- reka
- reka-vision-api
- sqlalchemy
- sqlite
- tailwindcss
- typescript
- uvicorn

Log in or sign up for Devpost to join the conversation.