Devuélvelo
A shipped consumer SaaS that calculated return deadlines, organized proof of purchase and surfaced reminders before windows expired.
Role
Founder & Full Stack Developer
Status
Archived
Period
2025-2026

The product
Devuélvelo is a focused consumer utility: enter a purchase once, get the deadline immediately and keep the record organized until the return window closes.
Problem
Shoppers often forget return deadlines because purchase dates, retailer policies and ticket links are scattered across different places.
Solution
Devuélvelo centralizes purchase data, calculates the return deadline from what the user bought and where they bought it, stores ticket links and surfaces clear status alerts.
Product in context
Launch assets preserved from the original product repositories.

Core capabilities
What reached the implemented product, based on the archived codebase.
- Calculated deadlines for major Spanish retailers such as Zara, Amazon, El Corte Inglés and Decathlon.
- Kept purchase records, ticket attachments and calendar events in one place.
- Surfaced active, returned, expired and archived states with deadline-oriented UI.
- Added a public calculator so a return date could be checked without creating an account.
Technical decisions
- Kept return-date calculation available as a public utility while reserving persistent tracking for authenticated accounts.
- Represented retailers as data with default return windows, while allowing user-owned store records for exceptions.
- Generated calendar feeds from revocable tokens so deadlines could appear outside the application.
- Stored ticket files in a private bucket and generated short-lived signed download URLs on demand.
Architecture
A compact view of how the shipped system was divided.
Next.js App Router combined public Server Components, authenticated screens, route handlers and attachment Server Actions.
Supabase provided Auth, PostgreSQL, row-level security and private ticket Storage.
Stripe synchronized products, prices, customers and subscriptions through a webhook.
A Vercel cron selected queued notifications and Resend delivered reminder email.
How I built it
My contribution
- Product direction, Spanish-language UX and responsive landing/dashboard surfaces.
- Return calculator, purchase lifecycle, retailer search and calendar integration.
- Supabase schema/RLS, private attachments, authentication and API layer.
- Stripe billing, Resend notifications, cron processing and Vercel deployment configuration.
Technical challenges
- Keeping calculated deadlines correct across retailer defaults, custom stores and manually selected dates.
- Making private ticket uploads useful without exposing permanent public file URLs.
- Coordinating reminder scheduling, cancellation and delivery state as purchases changed.
Outcome
The product was archived after it did not achieve sufficient adoption. The case study keeps the technical and product lessons visible without presenting the service as active.
What I learned
Technical and product lessons carried into later work.
- A focused utility can communicate value quickly, but retention depends on a recurring behavior users already perform.
- Reminder products need explicit ownership of time zones, retries and cancellation states from the start.
- Private user files increase shutdown and data-retention responsibilities well beyond a simple database export.