📍 Taytay, Rizal, Philippines · 🕘 UTC+8 · 🌐 English (professional) / Filipino (native) · 🤝 Open to remote roles
I build production systems rather than prototypes — eight years of it.
Most recently that has meant machine learning for financial fraud detection, where the difficult part is usually the data pipeline and the false-positive budget rather than the model itself. Before that, three years on an enterprise insurance platform in Germany: React and Next.js on the front end, Node.js and PostgreSQL behind it. My earlier years were mobile — Flutter and React Native for logistics and delivery clients whose users were drivers on low-end Android phones with unreliable connections.
That range means I am comfortable owning a feature from the database schema through to the screen a customer actually uses. I have worked with distributed teams in the United States, Germany, Australia, and the Philippines, mostly asynchronously, which taught me to write things down properly instead of relying on a quick call. I pay attention to what happens after launch: monitoring, retraining schedules, error budgets, and the handover documentation someone else will have to read. I have worked under GDPR requirements in two of my three most recent roles and treat data protection as an engineering constraint rather than a legal formality.
| +28% | fraud recall at the same false-positive rate — rebuilt the feature set around behavioral and velocity signals instead of adding model complexity |
| <200 ms | real-time scoring path — FastAPI on AWS Lambda with Redis feature lookup, inside the payments team's latency budget |
| −40% | model training time — Parquet conversion, cached feature tables, mixed-precision batching (most of it I/O, not GPU) |
| −55% | page load time on an insurance platform — broker-dashboard LCP from ~4.2 s to under 2 s |
| 150k+ | EU customers served by the microservices I contributed (document generation, notifications) |
| 4 apps | shipped end to end to Google Play and the App Store, including offline-first sync for drivers who lose signal |
| AI / ML | |
| Front End | |
| Mobile | |
| Back End | |
| Databases | |
| Cloud & DevOps | |
| Practices |
AI/ML Engineer · TechNova Analytics BV · Mar 2024 — Nov 2025
Built and maintained the fraud detection models behind a transaction screening product, working mainly with gradient boosted trees on tabular features. Deep models were tested but did not justify their cost at the data volumes we had.
- Raised recall by about 28% at the same false-positive rate by rebuilding the feature set around behavioral and velocity signals rather than adding model complexity. The previous version had been tuned on accuracy, which means very little when fewer than one percent of transactions are fraudulent.
- Handled class imbalance with cost-sensitive training weights and threshold tuning against the operations team's actual review capacity, instead of defaulting to synthetic oversampling.
- Built the real-time inference path with FastAPI on AWS Lambda + Redis for feature lookup and caching, keeping scoring inside the 200 ms budget the payments team required.
- Developed the NLP components for merchant descriptions and free-text claim fields — spaCy for entity extraction, a fine-tuned BERT classifier for the categories rule-based matching kept getting wrong.
- Cut training time by roughly 40% via Parquet conversion, cached feature tables, and larger GPU batches with mixed precision. Most of the win came from the I/O work, not the GPU changes.
- Set up MLflow for experiment tracking and model registry, ending the practice of results living in notebooks on individual laptops.
- Wrote the monthly retraining pipeline with automatic evaluation against the incumbent — a new version is not promoted unless it wins on the held-out period.
- Added drift monitoring on input features with Slack alerts, after a silent upstream change to a currency field degraded scores for two weeks before anyone noticed.
- Worked with fraud operations on how scores appear in the review queue; ordering cases by expected loss rather than raw score measurably reduced time spent on low-value reviews.
- Containerized training and inference with Docker, built deployment in GitHub Actions, including a staging environment mirroring production feature data.
- Kept the pipeline GDPR-aligned: minimized personal fields in the feature store, documented the basis for each, implemented the deletion path for data subject requests.
- Collaborated across the Netherlands, UK, Germany, and Poland, largely asynchronously, and wrote the technical documentation the other regions worked from.
- Prototyped an LLM-based summarizer for analyst case notes. It performed well in testing but was not shipped, because the data protection review could not be completed within the project timeline.
Full-Stack Developer · NeoDigital GmbH · Jan 2021 — Feb 2023
Led front-end development of an enterprise insurance platform in React and Next.js, used by brokers and end customers across the German and English markets.
- Built the quote and policy application flows — long multi-step forms with conditional logic and heavy validation. Most of the real engineering difficulty in insurance software lives in these forms rather than in the interface around them.
- Designed and implemented backend APIs in Node.js with PostgreSQL, including the schema for policies, endorsements, and claims history.
- Improved page load performance by roughly 55% through image optimization, code splitting, and ISR for static marketing pages. Broker-dashboard LCP fell from ~4.2 s to under 2 s.
- Implemented multilingual UI with next-i18next for German and English, including the formal and informal forms of address German business users expect, and locale-correct date, currency, and number formatting.
- Contributed services to a microservice architecture serving 150,000+ EU customers, primarily document generation and notifications.
- Built versioned PDF policy generation so any issued document could be regenerated exactly as the customer originally received it, which compliance required.
- Implemented role-based access control across brokers, internal underwriters, and customer accounts, with audit logging on every change to a policy record.
- Handled GDPR directly: consent capture, data export, and right-to-erasure with the retention exceptions insurance regulation imposes, keeping the processing register current with the legal team.
- Migrated a large portion of the codebase from JavaScript to TypeScript incrementally, starting with the API layer where type errors caused the most production incidents.
- Set up Jest for unit coverage and Playwright for the quote-to-purchase path, catching regressions the manual QA pass had been missing.
- Added Sentry error tracking and built the API latency and error rate dashboards reviewed in weekly planning.
- Worked in a German team with English as the working language, took part in sprint planning and code review, and mentored two junior front-end developers.
- Replaced a legacy jQuery admin tool that had been in service for years. We ran both systems in parallel for a full quarter before switching over, because the underwriters would not trust the new one until they had checked its output against the old one.
Mobile App Developer · BluWorks Software Labs · Aug 2018 — Dec 2020
Developed cross-platform mobile applications in Flutter and React Native for logistics, booking, and delivery clients in the Philippines and Australia.
- Published four production applications to Google Play and the App Store and handled the release process end to end, including store listings, review responses, and staged rollouts.
- Built offline-first synchronization for the driver application, since riders regularly lost signal on delivery routes. Jobs queued locally and reconciled on reconnection, with conflict rules agreed with the client rather than decided by us.
- Integrated Firebase across most projects — authentication, Firestore, Cloud Messaging, Crashlytics.
- Implemented background location tracking with battery-conscious update intervals. This took several rounds of tuning before the client accepted the tradeoff between accuracy and battery drain.
- Built route display and delivery sequencing on Google Maps, plus the proof-of-delivery flow covering photo capture and signature.
- Added barcode and QR scanning for parcel handoff, removing most of the manual entry errors in the warehouse workflow.
- Consumed REST APIs with secure authentication — token refresh, encrypted credential storage, and certificate pinning on the client that processed payments.
- Reduced crash rates significantly on the largest app by replacing ad hoc state updates with a structured Provider approach, then fixing the lifecycle bugs that became visible once crash reports were properly grouped.
- Improved cold start and list scrolling by removing unnecessary rebuilds, adding pagination, and caching images. Most users were on low-end Android devices, so testing was done on an inexpensive physical phone rather than an emulator.
- Localized for English and Filipino users, including local address formats and the phone number handling Philippine carriers require.
- Wrote the client handover documentation and ran training sessions for the operations staff who would use the applications daily.
| Postgraduate Certificate, Data Science & Machine Learning Dublin Business School — Dublin, Ireland |
2016 — 2017 |
| BSc Information Technology University of Rizal System (Rizal State College) — Philippines |
2011 — 2015 |



