Skip to content
View joaofilipe5's full-sized avatar
🇵🇹
🇵🇹

Block or report joaofilipe5

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
joaofilipe5/README.md

João Filipe. Golf, chess and handball. A network design instance with the optimal spanning tree highlighted.

Optimization Integer programming Simulation

I build decision systems. I take an operational problem, write it down as a model, solve it with the right tool, and then ship the result into something a person actually uses. That means an exact formulation when the problem admits one, and a heuristic when it does not. MSc in Industrial Engineering and Management at Instituto Superior Técnico, currently on exchange in Complex Systems Engineering and Management at TU Delft.

Most of my work sits in one of four places: integer programming and network design, supply-chain and logistics optimization, quantitative finance and market simulation, and, increasingly, automating the document-heavy operational work that surrounds all three.


Selected work

Optimization and integer programming

Project What it demonstrates Stack
Hop-constrained spanning trees Network design under a bound on root-to-node hops: an exact MILP alongside a constructive tree-repair heuristic, compared on generated instances Python · PuLP/CBC · NetworkX
Green hydrogen supply chain National-scale MIP: facility location, renewable allocation, storage, transport and investment timing, with a sensitivity study over the cost drivers Python · PuLP/CBC · Sensitivity analysis
Travelling purchaser visualizer Joint purchasing and routing decisions made visible: construction heuristics and local search you can step through in the browser React · TypeScript · Heuristics
Justice operations: ML + allocation Forecasting completed court cases, then feeding those forecasts into an integer staff-allocation model Python · Gurobi · Regression & ensembles

Quantitative finance

Project What it demonstrates Stack
Limit order book simulation A discrete-event matching engine plus analysis of the order flow it generates: arrivals, executions, cancellations, depth and spread Simul8 · Python · pandas
Twin-win barrier payoff Monte Carlo simulation of a twin-win structure on WTI, with seeded, reproducible runs and explicit assumptions Python · Monte Carlo · NumPy

Simulation and modelling

Project What it demonstrates Stack
Antimicrobial resistance dynamics Stock-and-flow modelling with nonlinear calibration and scenario analysis System dynamics · Excel · Solver
Numerical methods for epidemics SEIQV worm-propagation dynamics: equilibria by Newton iteration, trajectories by Heun integration MATLAB · ODEs · Root finding
More repositories: smaller or older work, kept for the record
Project Note
Traffic flow simulation Exploratory animation of stochastic arrivals, signal phases and queue spacing
US elections sentiment Lexicon sentiment and keyword grouping over Reddit discussion titles
PortfolioCalc Early portfolio-metrics prototype; its README documents the methodology limits rather than hiding them

Each repository states what it needs to run, where its outputs are, and where its conclusions stop. Group coursework credits its full team.


How a problem becomes a decision

Operational data to formulation, to an exact MILP or heuristics, to bounds and sensitivity, to a decision and the automation it ships into, with the outcome fed back

Most of what I build reduces to the same shape. Choose what to open, and assign demand to it, at least cost:

$$ \begin{aligned} \min_{x,y} \quad & \sum_{i \in F} f_i y_i + \sum_{i \in F} \sum_{j \in C} c_{ij} x_{ij} \\ \text{subject to} \quad & \sum_{i \in F} x_{ij} = 1 \quad \forall j \in C \\ & x_{ij} \le y_i \quad \forall i \in F, \quad j \in C \\ & \sum_{j \in C} d_j x_{ij} \le K_i y_i \quad \forall i \in F \\ & x_{ij} \ge 0, \quad y_i \in \lbrace 0, 1 \rbrace \end{aligned} $$

Facilities, hydrogen plants, court staff, hops in a tree, purchases on a route. The objects change, the discipline does not. State the decision variables, defend every constraint, report the bound alongside the answer, and say where the model stops being trustworthy.


Private work

Private repositories

I build and maintain two systems for a Portuguese freight forwarder. Both repositories are private and the client is not named, so these summaries stand in for code I cannot link.

Operations platform   TypeScript PostgreSQL Status: preparing for rollout

This is the system the company uses to run a shipment from start to finish. The work used to live in spreadsheets and email.

Email and files feed the five stages of a shipment: quote, award, operation, documents, delivery. One record holds price, cost, margin and access for all of them.

Everything about a shipment sits in one record. The quote, the costs, the documents and the delivery are all in the same place, and each person sees only the part their role allows.

It also handles the money. What the client pays, what the shipment costs, the margin, and freight in more than one currency.

It reads the company mailbox and turns those messages into records, so nobody copies data by hand.

It is written in TypeScript. The data lives in PostgreSQL, with the rules that matter written into the database itself.

The documentation has one rule: the code wins. If a document disagrees with the code, the document is wrong and gets fixed. Every claim about the business is marked with where it came from: how the industry works, how this company works, or what the code does. When two sources disagree, the rule is to stop and ask.

Where it stands. It is being prepared for rollout. Everything is built and tested end to end. There is no hosting or scheduler yet, and it has not run on a real shipment.

Customs filing automation   JavaScript Python OCR

A Chrome extension that fills in a government customs portal, so the team stops retyping the same numbers. It works in both directions of the warehouse, goods in and goods out.

It reads the customs declaration and the shipping documents, including scanned ones, using OCR. It matches each line of cargo to the right document by comparing figures that appear in both.

It never submits the form. It fills the fields it can. It checks the fields it cannot change against the source documents and marks each one pass or fail. It shows anything the portal would reject. Then it stops, and a person presses the button.

It also builds as a userscript, for computers where extensions are blocked.


Toolkit

Python    C++    C    TypeScript    React    R    MATLAB    PostgreSQL    NumPy    scikit-learn    PyTorch    Jupyter

pandas LaTeX Gurobi CBC PuLP Simul8 Stata Power BI Excel

Core interests: integer and mixed-integer programming, network design, heuristics and local search, parallel computing, discrete-event and system-dynamics simulation, supply-chain and logistics optimization, market microstructure, and reproducible modelling.


Background

  • Instituto Superior Técnico   MSc, Industrial Engineering and Management, Instituto Superior Técnico, 2025–2027 · current GPA 18.2/20. BSc in the same programme, 2022–2025.
  • TU Delft   Exchange semester at TU Delft, Complex Systems Engineering and Management, September–January 2027.
  • Efficio   Consulting intern at Efficio. Spend analysis, supplier assessment and sourcing decisions.
  • Técnico Investment Club   Vice President / Head of Asset Management, Técnico Investment Club. Portfolio risk visualization, optimization and simulation.

Languages: Portuguese (native) · English (fluent, Cambridge Advanced).


LinkedIn   Email   All repositories

Popular repositories Loading

  1. PortfolioCalc PortfolioCalc Public

    Legacy Python portfolio-metrics prototype with Excel processing and local Flask uploads; original methodology limitations are documented.

    Python

  2. US_Elections_Sentiment US_Elections_Sentiment Public

    Python/R coursework on Reddit election-discussion titles: lexicon sentiment, tokenization and keyword-based topic grouping.

    R

  3. TwinWinOption TwinWinOption Public

    Educational WTI twin-win barrier payoff simulation using historical assumptions and Monte Carlo; reproducible seeded runs in Python.

    Python

  4. Numerical_Methods_Epidemic Numerical_Methods_Epidemic Public

    MATLAB numerical methods for SEIQV computer-worm dynamics: nonlinear equilibria with Newton iteration and ODE integration with Heun.

    MATLAB

  5. Risk-AM---2nd-Semester Risk-AM---2nd-Semester Public

    Updated repository for Técnico Investment Club - Asset Management Risk Team

    Python

  6. PIC PIC Public

    Predicting completed court cases and exploring integer staff allocation with regression, ensembles and Gurobi.

    Jupyter Notebook