Rodel Medina/ engineering portfolio
PORTFOLIO SESSION · 01

YOU

Give me the short version.

RODEL

Experienced across the stack. Grounded in production work.

I’m a software engineer who has been building and evolving applications since 2010. My work moves from backend architecture and data-heavy systems to frontend experiences people use to get real work done.

Today I work as an independent contract engineer, partnering long-term with several product teams. Working across several domains at once means good patterns travel with me from one project to the next.

Open any project below for a short case study. Client details are kept general to respect confidentiality.

SELECTED WORK07 THREADS
NeuroFlowWorkflow builder · frontend foundation and implementation

NeuroFlow — visual workflow builder

I established the frontend foundation for a no-code workflow builder inside a healthcare SaaS platform, and implemented a substantial part of it. Staff design automated flows on a canvas: a trigger starts the flow, branches route it, and actions run.

I built the canvas on React Flow (xyflow), with custom node types, drag-and-drop, and a side panel to configure each node. Branches support first-match or all-match logic, with each condition shown on the canvas and an automatic “else” path. Validation marks problems on the canvas without interrupting editing, and a conversion layer turns the editor graph into the backend workflow format and back. I later added new trigger and action types.

VIA ALPHAGENITREACTTYPESCRIPTREACT FLOW / XYFLOWREDUX TOOLKITJEST
XPLOrdering and inventory · backend from the first commit

XPL — ordering and inventory platform

I built the backend for an operations platform that covers wholesale ordering, warehouse inventory, and deliveries, from the first commit through three years of development.

It is a Laravel and PostgreSQL REST API with a service layer and Redis-backed scheduled jobs that automate order cycles and invoice updates. I built an inventory ledger with reconciliation checks, price freezing at delivery, a Google Sheets integration, and “act as” delegate access with a correct audit trail. I added an OpenAPI contract with automated contract tests, and led a new Next.js frontend that talks to the API through a server-side proxy.

VIA ALPHAGENITLARAVEL · PHPPOSTGRESQLREDISPESTOPENAPINEXT.JS
GravyWorkAI phone interviews · Rails, React, React Native

GravyWork — AI phone interviews for workers

GravyWork staffs shifts with vetted hourly workers. I designed and built a separate AI service that runs automated phone interviews to assess workers’ skills, which reduces manual screening work for staff.

A worker calls in, hears each question as generated speech, and records an answer. Background jobs turn the answers into text and score them with an LLM, then a signed webhook sends the result to the main platform for admins to review. Around it I built the reliability and fairness tools: model settings kept in config, handling for late recordings, attempt lockouts, call audit logs, and admin health and re-score screens.

Across the wider product I worked on the Rails API, the React admin portal, and the React Native worker app, including worker earnings, real-time chat, preferred staffing pools, and SMS, email, and push lifecycle messaging.

DIRECT ENGAGEMENTRAILS · SIDEKIQTWILIOELEVENLABSOPENAI WHISPERLLM SCORINGREACT · REACT NATIVE
RoverJob-market data · API, AI job matching, CRM integrations

Rover — job-market data platform

Rover collects job ads from major job boards across Australia and New Zealand, merges and enriches them, and delivers them to recruitment CRMs and through a job-search API for client companies. I have developed and maintained the platform since 2023.

I created and maintained the scrapers for each job board, and designed and built that job-search API in Rails. The pipeline runs on Rails, Sidekiq, and PostgreSQL, with an hourly merge that groups jobs by company, Elasticsearch search, and a rule-based industry classification step that leaves a value empty rather than guess. I built delivery integrations for Salesforce, Bullhorn, HubSpot, and RecruiterFlow, and I support the developers at client companies who build on the API.

For JobRover, an AI job-matching product, I built the frontend and the backend, including the connection to its matching engine and Stripe billing: subscriptions, invoices, webhook handling, refunds, and failed-payment handling. I also built the internal operations dashboard in Next.js, TypeScript, and AG Grid on Cloudflare Workers.

DIRECT ENGAGEMENT · AU CLIENTRAILS · SIDEKIQPOSTGRESQLELASTICSEARCHSTRIPENEXT.JS · TYPESCRIPTCLOUDFLARE WORKERS
Field Reporting PlatformAd hoc report builder and data validation · live

Field Reporting Platform — report builder and data validation

For a field-reporting web app, I independently built two live features: an ad hoc reporting engine and an automated validation system.

Users build reports in a Vue editor. The server checks each report definition against a JSON Schema and compiles it into one parameterized, read-only SQL query with a time limit. Results respect each user’s existing data access, and reports can be saved, shared, and exported to CSV or Excel with spreadsheet-safe output.

Each submitted report also runs through background checks for spikes, repeats, outliers, and differences from peers, using statistics cached nightly. Checks can be set per country, and staff work through flagged results in a review hub.

RAILSPOSTGRESQLVUE 3SIDEKIQJSON SCHEMA
Field Network PlatformOffline sync and shared forms · web and mobile

Field Network Platform — offline sync and shared forms

For a nonprofit field-network platform, I built the server side of offline sync for its mobile app: the server receives data packages from devices and builds the SQLite databases the app downloads.

I wrote most of a shared form library that runs the same forms on the web and in React Native, with translations, map pin-drop with GPS, and direct file uploads. I also built background bulk actions with tracked runs, per-record errors, and audited cascading changes; a team hierarchy and tagging system with permissions scoped by country; and a reusable table component with saved columns, cascading filters, and computed sorting.

RAILSVUE 3POSTGISSIDEKIQTYPESCRIPTREACT NATIVE
Geographic Data PlatformOffline map packaging · PostGIS

Geographic Data Platform — offline maps and boundary data

For a geographic data platform used by field survey teams, I built map and data packaging so the survey app works offline, and moved a PostGIS boundary dataset and the services that depend on it to a new schema.

I also built map tools in Vue and Leaflet, including a boundary editor, location selection limited to polygons, and shading, plus import pipelines from outside survey systems and webhook integration with a sister app.

RAILSPOSTGISVUE 3 · TYPESCRIPTLEAFLET

KEEP EXPLORING

A guided portfolio with prewritten answers. Not a live AI chat.