Alberto Guinda's Work | ContraWork by Alberto GuindaAlberto Guinda
AI Agent & Full-Stack Engineer ยท LangGraph ยท RAG ยท AI Apps
๐ 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. 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. 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. 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.