Personal project · web product
Eventech
A calendar of computing events in Brazil, with deadlines, interest-based recommendations and travel planning.

Problem: scattered information and missed deadlines
Dates, calls for papers, registration tiers and programs are scattered across each event's website. For students and researchers, missing a deadline means waiting for the next edition.
The application organizes events by series and edition, highlights the week's deadlines and filters by period, free admission, online format and open calls. Signed-in users get recommendations and build a personal calendar, exportable as iCal.

Architecture: Next.js, FastAPI and a typed client
The monorepo contains a Next.js interface with React and TypeScript, a FastAPI API with SQLAlchemy and Alembic migrations, and a TypeScript client generated from the API's OpenAPI schema. CI checks that the client is up to date, keeping both sides aligned.
The database is PostgreSQL with PostGIS for geographic queries and pgvector for similarity. Jobs use an outbox queue in the database itself, without a separate broker.
Data: LLM with human moderation
Ingestion uses Gemini to extract dates, deadlines and prices from event websites. Extractions do not go straight to the public: they enter a moderation queue, and model quality was evaluated against a manually curated dataset.
Open data supports travel planning, such as ANAC direct flights, IBGE municipalities and geographic information from OpenStreetMap and Wikidata.

Recommendations, alerts and privacy
Recommendations combine embeddings, city and interests, diversifying results and explaining each suggestion. Email alerts cover deadlines and new editions, with LGPD-compliant consent and one-click unsubscribe.
The interface works as a PWA with offline use and a MapLibre map. Usage metrics are first-party and cookie-free.

Building with AI agents
I built Eventech on my own, with Claude Code as my implementation partner. Before writing code, we produced a set of research reports: market and event sources, product and UX, recommendations, architecture, travel integrations and LGPD. Decisions were recorded in a dedicated document, and the work was split into milestones with plans and delivery criteria.
For each milestone, I defined scope and priorities and made the architecture and cost decisions; the agent implemented, and I reviewed before moving on. A local CI script runs lint, migrations, tests, API client checks and the build before any deployment.
Infrastructure and limitations
The interface runs on Vercel and the API on Railway, with infrastructure as code, scheduled ingestion and notification jobs, and daily database backups with a tested restore. API and frontend errors are monitored in Sentry, configured for errors only, without session replay or browsing data. An automatic cap cuts cloud spending if the budget is exceeded. Tests use pytest and Playwright.
The product launched recently and has no user base yet. Some public sources are unstable, and coverage depends on curation and moderation of extractions. The source code is private.