Gabriel Pereira

Unsaid

Most people journal to vent, not to understand themselves. Unsaid turns the habit into a feedback loop: immediate AI reflection per entry, pattern detection across weeks of writing, and a deeper synthesis every 15 entries that names what's actually changing.

  • ●Matched AI cost and latency to what each moment actually needed: immediate lightweight reflection per entry, weekly pattern synthesis in the background, and deeper synthesis at every 15th entry.
  • ●Encrypted at the database layer, not just behind an auth gate. AES-256-GCM at rest with row-level security enforcing per-user data isolation. A meaningful distinction when the content is personal.
  • ●Full pipeline in a single request, streamed and encrypted end to end. The user sees their reflection immediately. The audit trail happens underneath without adding latency.
Next.jsTypeScriptSupabaseAnthropicClerkLemon Squeezy

Dynamik · 2025-2026

P4M

Multi-tenant SaaS for facility maintenance teams. Covers the full operations workflow, equipment tracking, work orders, maintenance routes, and structured change management for production floors.

  • ●Reduced PHPStan errors from ~3,800 to zero at max strictness (level 9), enforcing strict_types across the entire codebase via Rector
  • ●Migrated the entire frontend from JavaScript to TypeScript, exposing silent gaps in the backend-to-frontend data contract: schema and shape mismatches that runtime errors couldn't trace before.
  • ●Gave technicians instant answers on work orders and parts by shipping an in-app AI agent that understands plain-language questions and generates PDF/CSV reports on demand
  • ●Stopped technicians bouncing between screens for basic procedures, building a knowledge-base chat that surfaces reference info without leaving the work-order view.
  • ●Kept PHPStan passing as the codebase grew, wiring linting, formatting, and Husky pre-commit/pre-push gates into the workflow.
  • ●Rebuilt the backend's core architecture around consistent authorization, query, and business-logic patterns, replacing years of ad-hoc code that was making every new feature harder to build safely, and surfaced real cross-tenant security gaps that had gone unnoticed along the way
LaravelVue 3TypeScriptPHPStanRectorAndroid

AVP

Customer-facing benefits platform. Worked across the catalogue: multi-variant products, locale-specific rules, and a long tail of filter/search bugs that needed actual debugging rather than band-aids.

  • ●Gave every product locale-correct pricing and eligibility, modelling multi-variant products natively on Commercetools.
  • ●Blocked non-German addresses from slipping through checkout, validating delivery via the Dutch Post API with locale-based quantity controls.
  • ●Fixed a run of catalogue bugs users kept hitting: categories staying selected, the points filter resetting, search losing focus mid-type.
  • ●Eliminated a class of checkout failures showing customers wrong or €0 prices, tracing three separate bugs to gaps in how the shop synced with commercetools' product-price data instead of patching symptoms
  • ●Closed an open-redirect vulnerability in the login flow and patched an active framework CVE by leading the platform through a phased React Router v7→v8 migration, without downtime on a live shop
React Router v7TypeScriptCommercetools

APLO

Platform for optometry practices in Portugal. Scheduling, prescriptions, and payments, built to handle the actual rules optometrists and pharmacies follow here.

  • ●Gave staff a full scheduling system, covering daily/weekly/monthly views, drag-to-reschedule, and overlap validation.
  • ●Automated prescription paperwork, generating compliant PDFs across all four Portuguese declaration types.
  • ●Automated PT-specific billing end to end, combining Multibanco and MBWay payments with gross-up logic, quarterly reminders, and subscription suspension.
  • ●Stopped duplicate patient records before they happened, validating NIF format, enforcing a composite uniqueness index, and running a pre-submission check.
  • ●Gave a professional association a trustworthy way to run member elections where none existed, covering candidate governance, eligibility rules, ballots, live results, and a full audit trail
  • ●Gave prescribers AI-assisted analysis of clinical images without patient data ever leaving the practice's control, a zero-retention AI integration built after testing a broader assistant first and pivoting once a narrower tool proved the better fit
LaravelVue 3TypeScriptMultibancoInfobip

Wenatex

Loyalty rewards shop for Wenatex, built from an empty repo to full production on Commercetools, with real member authentication against Allianz's own identity system, and support for a points-only and a mixed money-and-points checkout from day one.

  • ●Built the entire frontend from nothing: app shell, design system, and full commerce flow, establishing the patterns a second shop (Weller) later reused
  • ●Replaced a hardcoded session with real member authentication, integrating OAuth-based SSO against Allianz's own C1 member API
  • ●Closed bugs that were costing revenue or blocking orders outright: an uncollected shipping fee on points-only carts, and a missing shipping method that made commercetools reject order fulfillment
  • ●Recovered order reference numbers Allianz's own order system was silently failing to return, reverse-engineering a deterministic ID scheme and hardening it with a validated fallback
React Router v7TypeScriptCommercetoolsTailwind CSS v4Netlify

Central Lobão

After-sales case submission portal for a tools and equipment distributor. Two distinct flows (B2B and public), wired into Jira Service Management for case lifecycle. The interesting parts were the security model and making it work unattended in production.

  • ●Gave a tools distributor one system for after-sales cases, splitting separate B2B and public intake flows into Jira Service Management for status tracking.
  • ●Closed a replay vector on B2B comments, signing identity with HMAC and persisting a nonce.
  • ●Kept the Jira integration running unattended in production, wiring OAuth 3LO so API access never needed a manual token refresh.
  • ●Shipped the public intake form in 5 locales (pt/en/es/fr/de), pairing iron-session with a verification flow.
ASP.NET CoreNext.jsTypeScriptJira APIOAuth 3LO

Weller / AAG Gift Store

Multi-tenant gift-voucher shop on the same platform as Wenatex. Stood up two separately branded storefronts (Weller, AAG) from one shared codebase, each with its own theme, redemption codes, and legal copy.

  • ●Shipped two independently branded storefronts from a single codebase, each with its own theming, logos, and localized legal/compliance copy
  • ●Built a tenant-specific redemption code generator and configured product selection, country restrictions, and support contact per brand
  • ●Produced branded order-confirmation emails via AWS SES for each tenant
React Router v7TypeScriptCommercetoolsAWS SESTailwind CSS v4Netlify

AVP Codes

Internal codes management tool for Allianz. Replaced a fragile manual process with a secure, role-based web tool for bulk affiliate promo code operations across isolated environments.

  • ●Replaced a fragile manual Node.js script, building a secure web tool for bulk affiliate promo code operations across three isolated Turso databases.
  • ●Locked every database operation to the server, layering role-based access control with bcrypt auth and signed HTTP-only cookie sessions.
  • ●Delivered automated error reporting, invalid CSV rows returned as correctable downloadable files
  • ●Caught regressions before they shipped, covering authz, mutations, and migrations with 43 unit tests, and integrating with SAP for affiliate order creation.
  • ●Recovered revenue silently lost every month to a billing bug: a broken pagination loop was dropping every product past the first page from Allianz's affiliate invoices despite real, recorded clicks
React Router v7TypeScriptTursoVitestSAP