Open to internships and projects

Rafael El Shafie

Software Engineering · Generative AI · Backend

Software Engineering student. I build backend systems and generative AI applications, from requirements gathering to production.

Latest work: Atlas, an AI assistant I built from scratch at BTG Pactual, now in production.

Rio de Janeiro, Brazil

Photo of Rafael El Shafie
Curious about systems.
Thinking of the people who use them.

Experience and education

  • Technology & AI
  • UFRJ Junior Enterprise
  • Software Engineering
  • AI & Cloud Data

Studying engineering.
Building real experience.

Who I am

I'm a Software Engineering student at Estácio, focused on backend development and applied AI.

My first experience developing software as part of a team was at Fluxo Consultoria, UFRJ's junior enterprise. There, I also took part in a requirements gathering and data modeling project.

During my first internship at BTG Pactual, I worked on Manhattan Real Estate, handling data processing and building a dashboard for real estate analysis. In the second, I built Atlas from scratch: an AI assistant for banking onboarding that went into production and is now used by the team.

I'm looking for an internship in backend development or AI, and I'm open to freelance projects.

What I bring to a team

  1. Understand before implementing

    At Fluxo, I took part in interviews and site visits to turn users' routines into requirements and data models.

  2. Share knowledge

    I document decisions and organize information to make collaboration and continuity easier. I also have experience mentoring colleagues and trainees.

  3. Experiment with judgment

    On the AI assistant at BTG, I compared approaches and evaluated answer quality and AI usage to decide which changes to keep.

Where learning
turned into delivery.

Two internships at BTG Pactual and a foundation built at UFRJ's junior enterprise.

  1. BTG PactualSoftware Engineering Intern (Short Job) · IT Onboarding & AI

    Jun 2026 – Oct 2026

    Built an AI assistant from scratch, end to end, to help banking onboarding operators with operational questions and avoid unnecessary tickets to the support team. Within four months, the application went live and the team started using it.

    • Implemented intelligent document search with RAG and natural-language queries to PostgreSQL and MySQL, with source references and read-only data access.
    • Developed the Python/FastAPI backend and React/TypeScript frontend, including chat, conversation history, feedback and administrative dashboards.
    • Prepared application delivery with Docker, Kubernetes and Azure DevOps, with Datadog observability, AI usage and cost controls and automated AI response evaluations.

    Stack

    • Python
    • FastAPI
    • React
    • TypeScript
    • PostgreSQL
    • MySQL
    • RAG
    • Text-to-SQL
    • Docker
    • Kubernetes
    • Azure DevOps
    • Datadog

    Delivery & learning

    The assistant went live within four months and the team started using it.

    BTG Pactual

    Software Engineering Intern (Short Job) · IT Onboarding & AI

    Jun 2026 – Oct 2026

    In four months, I turned the idea of Atlas, an AI assistant for banking onboarding, into an application in production, bringing together backend, interface, knowledge base, controlled queries and admin features. The support team validated the solution and operations started using it gradually.

    The problem

    I worked on technology support for the onboarding area, which helps operations open accounts and update customer records. Part of the tickets we received were usage questions or operational guidance that did not require a technical fix. The goal was to bring documentation, guidance and authorized information together in a conversation, so operations could clear up questions before opening a ticket and support could focus on the cases that needed investigation.

    My responsibility

    When I joined, there was the idea for the solution. I led the development end to end, with guidance from my manager: understanding the domain, the knowledge base, architecture, backend, interface, AI and database integration, testing, observability and deployment. Later, another intern joined the project, and I helped guide her and organize our work together.

    Decisions that made a difference

    • I started with a base of Markdown documents instead of an external vector database, to focus the first delivery on structuring the knowledge and getting the application working within the deadline.
    • When tests showed that context limits were hurting quality, and usage showed room in the budget, I added a step in which the language model selects the relevant sources among the keyword-search candidates. It was one of the project's main breakthroughs.
    • I tested handing more processing steps to the AI: cost went up and quality went down. I kept a combination of application logic, structured queries and language generation, according to what each step needed.
    • For recurring queries, I built parameterized SQL templates instead of generating a new query for every question, with read-only execution on operational databases.

    What I delivered

    • A standardized knowledge base with categories, metadata and cross-references, plus consistency checks to catch broken references, duplicates and gaps.
    • A chat with history, structured feedback and progressively displayed answers, plus admin dashboards, usage tracking and knowledge review.
    • Corporate authentication, access control, care with sensitive information in logs, AI usage limits and Datadog observability for each step.
    • Backend, interface and integration tests, reference question sets to evaluate answers, and delivery with Docker, Kubernetes and Azure DevOps, from development to production.

    Outcome

    In an internal set of test cases, the changes to document selection and context composition substantially increased both the questions answered and the correct answers. The support team validated the assistant with everyday situations, and it was delivered to production. I followed its early adoption by operations until the end of my internship; reducing avoidable tickets remains the solution's goal.

    What I learned

    The quality of an AI solution depends on the decisions around the model: what information it receives, how data is queried, how context is preserved and how results are evaluated. I also learned to document decisions and organize the work so others could contribute to the same repository.

    Technologies

    • Python
    • FastAPI
    • React
    • TypeScript
    • PostgreSQL
    • MySQL
    • RAG
    • Text-to-SQL
    • Docker
    • Kubernetes
    • Azure DevOps
    • Datadog

    Projects from this experience

    The technical view, with architecture and technologies, is in the details of each project.

    An account of my professional contribution. Internal code and materials are not available in this portfolio.

  2. BTG PactualSoftware Engineering Intern (Summer Job) · IT Asset Management & Funds

    Jan 2026 – Feb 2026

    Built Manhattan Real Estate in a pair, a data solution for analyzing properties in Manhattan, and presented the project in English to its requester.

    • Helped restructure the data processing and build the analytical layer in Databricks, integrating two listing portals and matching the same property across sources by address and listing features.
    • Developed scoring and listing-monitoring rules that flag opportunities, price changes and status changes, with notifications through Microsoft Teams.
    • Built the solution's dashboard in Databricks, with filters, a map and price-per-square-foot comparisons by area.

    Stack

    • Python
    • SQL
    • Apache Spark
    • Pandas
    • Databricks
    • AWS
    • RabbitMQ
    • Scrum

    Delivery & learning

    A single view of the listings, presented in English to the project's requester and well received.

    BTG Pactual

    Software Engineering Intern (Summer Job) · IT Asset Management & Funds

    Jan 2026 – Feb 2026

    Working in a pair, I helped build Manhattan Real Estate, a data solution to support the analysis of properties in Manhattan. We worked on the processing and analysis layers in Databricks, integrating sources, reconciling listings and building scoring and monitoring rules, and I built the interactive dashboard.

    The request

    Property research in Manhattan was done by hand across different portals, comparing listings, features and prices. The goal was to bring this information together into an organized view that made the data easier to explore and flagged relevant situations, such as new high-scoring listings, price differences and changes in availability.

    My contribution and working in a pair

    I built the project with another intern, guided by the team. Data ingestion already existed, along with a draft of the processing layer: we rebuilt most of that layer and developed the analysis preparation, the business rules and the solution's outputs. We worked side by side, splitting tasks by each one's knowledge and interests and making decisions together. My most individual responsibility was the dashboard: I built it in Databricks, drawing on the design of an existing dashboard and adding several features. Later, a colleague carried what I had built over to the bank's own visualization tool.

    Decisions that made a difference

    • Focus the sources: of the three portals we evaluated, we kept Zillow and StreetEasy, because the third one carried information less suited to the scope and hurt the filters.
    • Adjust the scope: we narrowed the property categories to what the requester was interested in, keeping the focus on Manhattan.
    • Reconcile without losing reliability: one source filled in the other where possible, conflicts followed a priority rule and records without enough quality were left out of the analysis.
    • Track changes: we kept previous records to spot properties that left a source and were listed again, mainly comparing prices.

    Outcome

    We presented the project in English to its requester, using the dashboard to show how it worked and what it found. The presentation was praised, and the positive feedback also reached our managers. The delivery brought together information previously looked up in different sources and made comparisons easier. I did not follow the project after the internship ended.

    What I learned

    I strengthened my Python and SQL and got hands-on experience with Spark and Databricks, the Medallion architecture, AWS resources and a messaging-based notification flow. I learned that more data does not always mean better analysis: we had to choose sources, adjust the scope and handle conflicts to reach a coherent view. Working in a pair and presenting in English strengthened my ability to discuss decisions and to explain a technical solution through its value to the business.

    Technologies

    • Python
    • SQL
    • Apache Spark
    • Pandas
    • Databricks
    • AWS
    • RabbitMQ
    • Scrum

    Projects from this experience

    The technical view, with architecture and technologies, is in the details of each project.

    An account of my professional contribution. Internal code and materials are not available in this portfolio.

  3. Fluxo ConsultoriaUFRJ Junior EnterpriseProject Consultant

    Jan 2024 – Aug 2024

    Worked across technology, consulting and internal operations at the junior enterprise, from a backend built as a team during training to data modeling for an industrial client.

    • Built, as a team, the backend of a management system as an onboarding training project, with Node.js, TypeScript, NestJS, PostgreSQL and Prisma.
    • To reorganize a food manufacturer's system, took part in interviews, process mapping, requirements gathering and conceptual and logical data modeling.
    • Joined the working group to improve the technology area, discussing bottlenecks and reorganizing the team toward full stack work.
    • Supported accounts payable, reimbursements and bank reconciliation, took part in recruiting and mentored trainees, answering questions and reviewing their work.

    Stack

    • Node.js
    • TypeScript
    • NestJS
    • PostgreSQL
    • Prisma
    • Git
    • Scrum
    • Kanban

    Delivery & learning

    From my first team-built backend to data modeling for an industrial client.

    Fluxo Consultoria

    Project Consultant

    Jan 2024 – Aug 2024

    At Fluxo, I took part in technology work, client projects and internal operations. I contributed to a management backend built as a team during training and, later, to requirements gathering and data modeling for a food manufacturer. I also joined a working group to improve the technology area, supported accounts payable and bank reconciliation, and worked on recruiting and mentoring trainees.

    Learning by building as a team

    I joined in January 2024 and started with the junior enterprise's training program. The final assignment was a management application built as a team: I contributed to different parts of the backend, with Node.js, TypeScript, NestJS, PostgreSQL and Prisma. It was my first experience building software together with others and learning how a backend application is organized. The project was completed as a training activity, around March, and was never used in operation.

    Consulting: understanding the routine before modeling

    After training, I started working as a Project Consultant. In a project for a food manufacturer, the management system had grown piece by piece and piled up features that were no longer used. I took part in factory visits, interviews and meetings with employees: I prepared questions, recorded answers and contributed to mapping the processes. From there, the team built the documentation and the data model from scratch, and I took part in each stage. Another company took on the implementation of the new system.

    The technology area from the inside

    I joined a working group, organized around an OKR, to discuss improvements to Fluxo's technology area, analyzing bottlenecks and strengths and listening to other members. Its outcomes included reorganizing the split between backend and frontend toward full stack work, while keeping a dedicated design track, and supporting technical training with Full Cycle courses. It broadened my view of how the way people and learning are organized shapes what a team can build.

    Administrative and financial routines

    In the Administration and Finance department, I supported and carried out accounts payable tasks, including reimbursements, and bank reconciliation, with daily meetings to track progress and plan next steps. I used tools such as Conta Azul, Asaas, Podio, Caju and Google Sheets. It was my first contact with the routines that keep an organization running.

    Recruiting and mentoring

    I took part in recruiting interviews and group exercises, asking questions, observing candidates and taking notes based on interview guides and evaluation sheets. Later, I started mentoring new trainees, answering questions about their tasks and the company and reviewing their work: a way to pass on what I had learned in my own training.

    What I took from it

    Over eight months, with fronts that often ran at the same time, I brought together software development, user needs, internal processes and collaboration. The training backend was my first team build; the manufacturer project showed me why you investigate the routine before defining a system; and the internal work widened my exposure to different responsibilities within an organization.

    Technologies

    • Node.js
    • TypeScript
    • NestJS
    • PostgreSQL
    • Prisma
    • Git
    • Scrum
    • Kanban

    Projects from this experience

    The technical view, with architecture and technologies, is in the details of each project.

    An account of my professional contribution. Internal code and materials are not available in this portfolio.

Ideas, context
and code.

From what I have shipped to production to what I am building now: professional and personal projects in backend, AI and data.

  • Personal projectReleased

    Professional portfolio

    This website: a static portfolio in three languages, with light and dark themes and automated tests on every change, including accessibility checks with axe and keyboard navigation.

    • Astro
    • TypeScript
    • HTML
    • CSS
    • Playwright

    Personal project · Released

    Professional portfolio

    This website is a project: a static portfolio I rewrote from scratch after auditing the old version. The code is public, and everything described here can be checked on the site itself.

    Why I rewrote it

    The old version, in plain HTML and CSS, had visible bugs, contrast below the minimum and text hard-coded in the markup. The audit showed that themes, languages and content as data would touch almost every line, so I rewrote it, keeping the content and the visual identity.

    What visitors get

    • Three languages, each with its own route and HTML: indexable, with no text swapping after load.
    • Light and dark themes: follows the system and remembers the choice, with no flash on load.
    • Project filters, skill tabs, detail dialogs and the current section highlighted in the menu.
    • Without JavaScript nothing breaks: tabs become stacked blocks and every project is shown.

    Technical decisions

    • Astro with static output: zero JavaScript by default, only small scripts where there is interaction.
    • Content in schema-validated YAML: a missing field or translation breaks the build, not production.
    • Colors as tokens with light-dark(): each color is declared once for both themes.
    • Native, accessible components: <dialog> for dialogs, <details> for the accordion and tabs following the W3C pattern.

    How I verify it

    • Playwright tests for behavior, keyboard, languages and layout on every push, in both themes.
    • axe with the WCAG 2.2 A and AA rules, including dialogs and the mobile menu. Automated tests cover only part of the criteria: a manual review with a screen reader is still on the to-do list.
    • Lighthouse in CI with a minimum score: currently 100 in all four categories, on mobile and desktop.
    • A build check that blocks publishing if a CV contains personal data that should not go live.

    How it was built

    I used Claude Code as a pair programmer. I defined what to build, reviewed every change and decided what went in; CI tests check the result on every push.

    Technologies in detail

    Foundation
    Astro · TypeScript · Content collections · Zod
    Interface
    HTML · CSS · light-dark() · <dialog>
    Images and SEO
    astro:assets · satori · sharp · Sitemap · hreflang
    Quality
    Playwright · axe-core · Lighthouse
    Delivery
    GitHub Actions · Vercel
  • Professional experience · Fluxo ConsultoriaDelivered

    Industrial system modeling

    Requirements gathering and data modeling to reorganize a food manufacturer's management system, connecting interviews and process mapping to documented models and needs.

    • Requirements engineering
    • User interviews
    • Process mapping
    • Conceptual modeling
    • Logical modeling

    Fluxo Consultoria · Delivered

    Industrial system modeling

    A consulting project carried out as a team at Fluxo Consultoria for a food manufacturer, starting around April 2024. The delivery was analysis, documentation and data modeling; another company took on the implementation of the new system.

    The problem

    The existing system had piled up features over time and its organization needed a review. Some features were no longer used, and the work required understanding how employees actually operated before proposing a new structure. The goal was to identify the relevant needs, reorganize how information was represented and document a foundation for the new system.

    How the work was done

    1. Visits and interviewswith the people who use the system
    2. Processesmapping the daily routine
    3. Requirementsneeds and user stories
    4. Conceptual modelbusiness elements and relationships
    5. Logical modelentities, attributes and keys

    Areas covered

    • Inventory
    • Production
    • Sales
    • Billing
    • People
    • Finance
    Illustrative diagram · from discovery to the data model

    I took part in factory visits, technical interviews, conversations and meetings with employees, preparing questions, recording answers and contributing to process mapping. Based on that groundwork, we built the documentation and the data model from scratch, linking what we heard in the interviews to the concepts, relationships and features the system should cover.

    Deliverables

    • A conceptual model of the business elements and their relationships.
    • A logical model with entities, attributes, keys and relations.
    • User stories to organize the functional needs.
    • Documentation of information across different areas: inventory, production, sales, billing, people and finance.

    What I learned

    The project reinforced how important it is to listen to users and understand their processes before proposing features or data structures. It also deepened my experience in turning what comes up in interviews into requirements and models that can guide a later development stage.

    Technologies in detail

    Discovery
    Site visits · User interviews · Process mapping
    Data modeling
    Conceptual modeling · Logical modeling
    Requirements
    Requirements engineering · User stories · Documentation
    Areas covered
    Inventory · Production · Sales · Billing · People · Finance

    Related experience

    Responsibilities, decisions and learnings are in the experience account.

  • Training project · Fluxo ConsultoriaDelivered

    Management system backend

    The backend of a management system built as a team during training at Fluxo Consultoria, covering user records, financial accounts, products, orders and events.

    • NestJS
    • TypeScript
    • PostgreSQL
    • Prisma
    • JWT

    Fluxo Consultoria · Delivered

    Management system backend

    A training project built as a team during onboarding at Fluxo Consultoria, completed around March 2024. It was a learning assignment: the application was never tested, integrated or used in operation, and the code is not public.

    Goal

    To build the backend of a management application as the final training assignment, putting backend development and teamwork concepts into practice. I contributed to different parts of the application alongside the other team members.

    What the code covers

    The application was organized into modules, controllers, services and DTOs, with data access through Prisma. The delivered code covers:

    • Creating and managing users, employees and managers.
    • Creating, reading, updating and deleting financial accounts.
    • Managing products and orders, with relationships between records.
    • Creating and managing events.
    • Login issuing a JWT token, with role-based permission checks.
    • Passwords stored as hashes (bcrypt).
    • API operations documented with Swagger/OpenAPI.
    • A relational model, with database changes managed through migrations.

    What I learned

    The main value was practicing building a backend as a team: how the application is organized, relational persistence, and the authentication and API documentation mechanisms.

    Technologies in detail

    Backend
    Node.js · TypeScript · NestJS · REST APIs
    Code organization
    Modules · Controllers · Services · DTOs
    Persistence
    PostgreSQL · SQL · Prisma · Migrations
    Authentication
    JWT · bcrypt · Role-based permissions
    Documentation and collaboration
    Swagger/OpenAPI · Git

    Related experience

    Responsibilities, decisions and learnings are in the experience account.

  • Personal projectIn progress

    Liga Familiar Gamificada

    Infrastructure ready · first feature in development

    An RPG-style household chore manager: each family member earns points for completed chores and follows their progress on a leaderboard. It runs locally on the home Wi-Fi, at no cost.

    • Java 21
    • Spring Boot
    • Spring Data JPA
    • PostgreSQL
    • Docker Compose

    Personal project · In progress

    Liga Familiar Gamificada

    Infrastructure ready · first feature in development

    An RPG-style household chore manager, built for the four members of my family to actually use and give feedback on. Everything runs locally on the home Wi-Fi, at no cost, and every important decision is recorded in an ADR.

    Why it exists

    Two equally important reasons. Real use: four people will use the system at home and tell me what works. And a backend portfolio: showing running software, with well-justified decisions, Clean Architecture and modern Java, which says more than an elaborate architecture nobody uses.

    What already works

    • Docker Compose with PostgreSQL (healthcheck, named volume and credentials in a .env kept out of Git), with Spring Boot starting only once the database is healthy.
    • A Java 21 (Eclipse Temurin) Dockerfile.
    • ADR-001: zero-cost local deployment, on Windows for the MVP and on a Raspberry Pi later.
    • ADR-002: no authentication at first; members are identified by an enum.
    • ADR-003: a three-layer task model, parked until there is real usage data.

    The current slice

    Recording that a member completed a chore and seeing their score go up on screen, end to end through database, domain, endpoint and interface. Before the first Flyway migration, one design decision is still open: with members in an enum, what goes into the table? And when a chore is completed, does the system store the updated balance or the event that earned the points?

    Next slices

    Each slice ends in something the family can use, and the plan is expected to change with real use after the first one:

    • A chore catalog with point values.
    • A leaderboard between members, filterable by period.
    • Levels and visible progression.
    • Recurring chores and period resets with @Scheduled.
    • Winners of the week, month and year, with history.
    • Moving to the Raspberry Pi with the same docker-compose.yml, unchanged.
    • README, a Mermaid data model diagram and consolidated ADRs.

    Technologies in detail

    Backend
    Java 21 · Spring Boot 3 · Spring Data JPA · @Scheduled · Maven
    Data
    PostgreSQL · Flyway
    Interface
    HTML5 · Tailwind CSS · Alpine.js
    Infrastructure
    Docker · Docker Compose · Windows · Raspberry Pi
    Decisions
    ADRs · Clean Architecture

Tools for
solving problems.

Hands-on experience in backend, AI and data, with complementary knowledge of interfaces, testing and infrastructure.

Backend

From requirement to API.

I developed APIs and business rules with Python and FastAPI at BTG Pactual and contributed to a NestJS backend in the Fluxo training program. Now I'm going deeper into Java and Spring Boot.

Languages
  • Python
  • TypeScript
  • JavaScript
  • SQL
  • Java(learning)
Frameworks and runtimes
  • FastAPI
  • Node.js
  • NestJS
  • Spring Boot · Spring Data(learning)
Persistence
  • SQLAlchemy
  • Alembic
  • Prisma
Integration
  • REST APIs
  • RabbitMQ
Requirements and modeling
  • Requirements engineering
  • Data modeling

Applied AI

AI tied to a real problem.

RAG and Text-to-SQL in production in BTG's onboarding assistant. Training and deploying models on Amazon SageMaker and using Bedrock in the PUC-Rio course.

Applications
  • LLMs
  • RAG
  • Text-to-SQL
Machine learning
  • scikit-learn
  • LightGBM
AWS
  • Amazon SageMaker
  • Amazon Bedrock

Data

Data that supports decisions.

In the BTG real estate project, I worked on data processing and reconciliation with Spark and Databricks. In the AI assistant, I integrated queries to PostgreSQL and MySQL.

Databases
  • PostgreSQL
  • MySQL
Processing
  • Pandas
  • NumPy
  • Apache Spark
  • Databricks
Analysis
  • Power BI
  • Excel

Frontend

Interfaces for the people using them.

React and TypeScript frontend for BTG's AI assistant: chat, history, feedback and admin dashboards. I also built this portfolio in Astro, with three languages, light and dark themes and accessibility tested on every change.

Web basics
  • TypeScript
  • JavaScript
  • HTML5
  • CSS3
  • Astro
React ecosystem
  • React
  • TanStack Query
  • Zustand
  • Vite

Cloud & DevOps

From code to production.

I prepared the AI assistant's delivery with Docker, Kubernetes and Azure DevOps, including monitoring in Datadog. I used AWS services in the real estate project and in the PUC-Rio hands-on activities.

Containers
  • Docker
  • Kubernetes
Cloud
  • AWS (S3, EC2, RDS, Secrets Manager, ECR)
Delivery and operations
  • Azure DevOps
  • Git/GitHub
  • GitHub Actions
  • Vercel
  • Datadog

Quality

Confidence to change.

I wrote automated backend, interface and integration tests. For the AI assistant, I used reference questions to evaluate answers and track the effect of changes.

Python
  • pytest
  • Hypothesis
JavaScript
  • Vitest
  • Playwright
Accessibility and performance
  • WCAG 2.2
  • axe-core
  • Lighthouse

Learn. Build.
Repeat.

My education, the courses I have completed and what I am studying now.

Growing

  1. Backend with Java

    Java, object-oriented programming and Spring Boot in the DIO · Itaú bootcamp.

  2. AI engineering

    Agents and multi-agent systems with LangGraph, protocols such as MCP and observability for LLM applications.

  3. English

    Ongoing study at Kumon, focused on reading, grammar and building vocabulary.

Education and courses

  1. Bachelor's in Software Engineering

    Universidade Estácio de Sá

    Jan 2025 – Dec 2028

  2. Artificial Intelligence and Data Science in the Cloud: AWS in Practice

    PUC-Rio

    Apr 2026 – Sep 2026

  3. Santander Jornada Tech AWS

    Santander Open Academy · AWS

    Apr 2026 – present

  4. Java, Spring Boot & AI Bootcamp

    DIO · Itaú

    Oct 2026 – present

  5. English

    Kumon

    in progress

Let's build
something useful.

Want to talk about an opportunity or a project? The fastest way to reach me is by email or LinkedIn.