AI-powered language flashcard app for iOS. Users describe any theme ("Coffee and tea", "Driving exam") and the app instantly generates a custom deck via Google Gemini. Features a progressive 3-level vocabulary system (beginner → intermediate → advanced) with mastery-based unlocking, SM-2/FSRS spaced repetition with Again/Hard/Good/Easy ratings, offline-first SQLite storage, bilingual audio examples, smart daily reminders, and a freemium model (RevenueCat) gating unlimited decks and advanced levels.
Built with React Native (Expo), TypeScript, SQLite, Supabase, Google Gemini, RevenueCat.
0
131
Pay-per-use video testimonial SaaS. Businesses collect text reviews for free and pay per video testimonial via a credit system — no subscriptions. Features include browser-based video recording, embeddable widget with masonry layout, Stripe payments, credit metering via Cloudflare Stream analytics, signed video URLs for hotlink protection, and a dashboard for approving/rejecting submissions. Built with Next.js, Supabase (PostgreSQL), Cloudflare Stream, Stripe.
1
159
Shopify app for EU Digital Product Passport (DPP) compliance. Merchants can create and manage product passports with QR codes, print labels, bulk edit via CSV, and use AI to auto-fill passport fields from existing product data. Built with Remix, React, Node.js, Prisma, and Shopify GraphQL API.
1
159
Built and owned the entire technical stack for a US e-commerce platform generating $1M/mo revenue. Developed custom Next.js storefront, checkout, and CMS admin panel from scratch. Integrated Stripe, Braintree, PayPal, Apple Pay, and Google Pay. Implemented fraud protection, automated chargeback handling via Visa CDRN, server-side tracking (FB CAPI, Google Ads), and BigQuery analytics pipeline.
AI Agent & Full-Stack Engineer · LangGraph · RAG · AI Apps
New to Contra
AI Agent & Full-Stack Engineer · LangGraph · RAG · AI Apps
A health-tracking Android app for logging blood pressure, oxygen, pulse, glucose and
weight — designed for elderly users first. Oversized one-digit-at-a-time keypad,
high-contrast readings, and a one-tap printable report their doctor can actually read.
Medication list that keeps withdrawn drugs visible in red instead of hiding them, so
nobody takes one by mistake.
Offline-first: the database lives on the device and never leaves it unless the user
syncs it to their own LAN server. Built with Expo/React Native in strict TypeScript
across 15 languages, with speech input, a marketing site in Astro on Cloudflare Pages
behind a hash-pinned CSP, and a Hono + SQLite sync server with last-write-wins
reconciliation.
1
417
🚀 A multi-tenant booking SaaS shown end-to-end
From the product site that sells it, to the white-label site each business gets, straight to the dashboard that runs it all.
🤖 How it works:
Customers book by chatting with an AI assistant in a messaging app. Every booking carries the channel it arrived through, turning chat conversations into a highly visible, organized agenda for the business owner.
📊 The Admin Panel:
Live Analytics: Complete with an occupancy heatmap.
Full Agenda Management: Create, reschedule, confirm, complete, or mark as no-show.
Smart Operations: An auto-built customer CRM (generated directly from bookings), catalogue & staff management, and bot-collected reviews.
Real-World Flexibility: The owner can force an appointment on top of another. Barbershops squeeze people in every day, and software that forbids it simply gets abandoned.
🛠 The Tech Stack:
Frontend: Vite + React 19 + HeroUI v3
Backend: FastAPI (Python 3.14) on PostgreSQL
Static Sites: Astro hosted on Cloudflare
Monetization: Stripe subscriptions with a 30-day trial
Data Integrity: No double-booking is guaranteed by a robust database exclusion constraint, rather than just relying on the interface.
🌍 Status:
Live in production and successfully taking real appointments for a barbershop in Zaragoza.
2
287
Recruiters sit on hundreds of CVs they can't search. Keyword search misses the obvious — the candidate wrote "React", you searched "frontend", they never surface — and every AI tool that fixes that ships candidate data to a third-party API.
I built RecruitSecure AI to do the semantic search without the API call. The embedding model runs server-side through Transformers.js (quantized multilingual-e5-small, 384 dimensions, 100+ languages), so you can ask in Spanish and it finds CVs written in English — and nothing ever leaves the deployment.
Drop in PDFs or DOCX and it extracts name, email, skills and experience, indexes each CV as a vector, and answers plain-language queries like "frontend lead who has built a design system": ranked by relevance, each result showing the exact CV fragments behind the match, so the recruiter sees the reason and not just a score. Retrieval is hybrid — pgvector HNSW cosine fused with BM25 full-text through Reciprocal Rank Fusion, then re-ranked from the recruiter's own thumbs up/down.
Next.js 16, React 19, strict TypeScript, PostgreSQL + pgvector through Drizzle ORM, Auth.js, Stripe subscriptions, multi-tenant with AES-256-GCM encryption at rest and GDPR export and deletion. Built solo, end to end.
The video is the real application: ten synthetic CVs uploaded through the actual pipeline, extracted, embedded and searched. Nothing staged.
3
435
A conversational AI copilot that takes a buyer from "I want to reserve" to contract and receipt. A LangGraph agent orchestrates 19 tools with human-in-the-loop confirmation before any payment, session memory, and RAG — over a transactional backend with hard guarantees (no double-booking, Stripe + webhook reconciliation, full audit) and a 3D/BIM viewer with a first-person walkthrough. Stack: TypeScript, LangGraph.js, Hono, PostgreSQL/Drizzle, React 19, react-three-fiber. LangSmith observability with GDPR PII redaction.
Company Brain. Facts you can trust from several sources
Problem
Small teams live in chat and notes. Prices, owners, and status drift across threads — and nobody has one place that stays true.
What I built
Company Brain: email, meetings, and Slack feed into structured facts. When something conflicts, it lands in a simple review inbox for a quick human check — not another wiki.
Result
Decisions stop drifting. The team gets searchable facts with a human still in the loop; pilots start white-glove and scoped.