Mateus Pereira

I ship features across web, mobile and backend, and I track bugs down to their root cause.

Since June 2024 I've been one of the most active engineers at Pivot, a US startup, working across its React and React Native apps, its Node.js and Go services, and its CI pipeline. I work remotely from Florianópolis, Brazil. I started my career at Serodonto, where I launched its React Native app for dental clinics.

1,800+
merged pull requests at Pivot
1 in 5
of all pull requests merged there
296
fixes merged since October 1

See my workRésumé (PDF)Email

Selected work

Pivot

Collaboration app. US startup, since June 2024, contract, remote.

Pivot combines chat rooms, video calls and shared pages in one app. The engineering team is small, and my work there covers product features, backend services, and the tests and CI that every change goes through.

  • React
  • React Native
  • TypeScript
  • Node.js
  • Go
  • gRPC
  • Playwright

01Video calls

Breakout groups

I built it

Hosts split a live call into smaller groups and start them all at once.

  • People are assigned to groups automatically
  • One button starts every group
  • Traced late joiners landing in every group to the roster logic and fixed it
Splitting a live lab into two groups and starting them.

02Page editor

Blocks for the page editor

I built the blocks

Pages in Pivot are made of blocks, a bit like Notion. I added three of them and made saving safe while people type.

3blocks: Section, Event and Tabs

  • Stopped server echoes from replacing the text being typed
  • Fixed caret jumps and Japanese and other composed input
  • A regression test keeps it fixed
Building a page from the slash menu: a Section with an Event inside, then Tabs.

03Backend

Notifications

Built with Pivot's CEO

The service behind the bell icon, in Node.js and gRPC. Someone else built the inbox screen shown here.

4,943notifications in 14 days in production

  • More than ten gRPC methods; I designed the data model and pagination
  • I wrote the reminders service
  • Push notifications through Expo
Pivot inbox with one unread notification: 'Amara Okafor replied in a thread you follow in Study Group · Hash Tables', with a message preview and timestamp.
A reply in a thread, as it shows up in the inbox.

04Video calls

Calls and recordings

I built it

Calls are where people use Pivot together in real time, so a glitch reaches everyone in the room.

  • Audio recordings, the recordings player and hidden recordings
  • Zoom on a shared screen for each viewer, reordering people, fullscreen video
  • Audio level normalization, a quiet microphone warning, camera desync recovery
Dragging a participant to a new spot on the call.
Student view of a shared slide on linear probing (hash slots k7, k4, k1, k2) zoomed to 120%, with participant tiles below.
A viewer zoomed in on a shared slide.
Recordings tab of a Pivot video room: an Upload recording button, sort control, an Include hidden recordings toggle and a recording card with title and duration.
Recordings for a room, with the toggle for hidden ones.

05Realtime

Live chat that holds up

Root cause fixes

About 60 users in Sentry were losing messages until they reloaded. I traced it to a sync collection that was never initialized.

~1,000repeated database reads a day removed

  • Messages now arrive without a reload
  • Added a cache for known misses after spotting the same lookups repeat
Pivot chat room for a study group: messages from several students, thread reply counts under two of them, a date divider and the message composer.
A study group chat, the kind of room these fixes keep in sync.

06Core product

Spaces, home and onboarding

I built it

The first screens every new user sees, which I built in my first months and kept extending.

  • Sign up, onboarding, creating an organization and the home page
  • Browsing spaces and space settings
  • Duplication, labels, sharing, join requests and member permissions
Pivot home page: a greeting, latest activity with a thread reply, rooms to continue, and the user's spaces.
The home page.
A space's header with its more menu open, showing Settings, Version history, Deleted blocks, Duplicate, Hide space, Delete and Leave space.
Duplicating a space.
Members tab of a space: six members with role, join date and status, tabs for groups, roles, requests and invites, and an Add new member button.
Members, roles and join requests.

07Marketing site

The public website

Next.js

I rebuilt parts of pivot.app.

  • The home page globe
  • The integrations page and the customer stories layout
  • Pages for project management and creators
Pivot marketing home page: headline 'One home for what you're making and the people making it' beside a dotted globe with floating poll and progress cards.
Home page, with the globe.
Pivot integrations page: headline 'Connect Pivot to the tools you already use' above a row of integration logos with Zapier highlighted.
Integrations.
Pivot customer stories page with organization size filters and case study cards.
Customer stories.

Beyond features

Work I started or led myself, outside any feature ticket.

Product quality
  • Self started

    50+accessibility changes

    Accessibility

    I found the apps fell short of accessibility standards and started fixing them unasked: keyboard access, screen reader labels, recording captions, and a lint that only lets the issue count go down.

  • Self started

    80+layout fixes

    Phones and small screens

    Tables that turn into cards, menus that wrap, long names that no longer push the page off screen. The web app now holds up on a phone.

  • 296fixes merged since October 1

    Bugs, fixed at the root

    Across the editor, chat, calls, spaces and CI. I trace each one with Sentry and logs and leave a test where it could come back.

  • 0% → 93.6%of interface text translatable

    Ready for other languages

    I built the frontend i18n layer and did most of the rollout, including a 33,000 line pull request.

    Spanish
    98.4%
    Portuguese
    98.4%
    Italian
    97.4%
    French
    97%
    German
    96.9%
    Keys translated per language, of 4,938.
Developer tools
  • 30tools for coding agents

    Local Lab MCP server

    Lets an agent start Pivot's stack, call its RPCs, diff the database and check a screen against a local copy of the Figma designs, while refusing anything off the developer's machine. I wrote most of it.

  • 1command per red pull request

    PR Ops

    A CLI I wrote most of that gathers required checks, failing jobs and the flaky tests named in CI logs.

Serodonto

Software for dental clinics. Brazil, August 2023 to April 2025, intern, then junior developer.

Serodonto is clinic management software used by hundreds of dental clinics, in the browser and on phones. I worked on both, first as an intern and then as a junior developer.

01Web app

The clinic app, in the browser

Team of about 10

A React progressive web app that clinics and radiology centers open on any computer to follow patients, share exams and take courses. I built it with a team of about ten developers; my part was the opportunity indicators screen, which isn't shown here.

Serodonto web app patient list for a radiology clinic: search, referral and clinic filters, and a sortable table of exams with date, age, clinic, due date, an Atendido status tag and a share button. Patient and dentist names are pixelated.
Patient list. Names are pixelated.
Serodonto web app Academy page: sidebar navigation and course cards grouped into Radiologia and Gestão e Treinamento, some marked Em breve.
Academy, the course catalog.

About

At Pivot I move between React components and Go services depending on what a feature needs. When something breaks, I look for the root cause and leave a regression test behind, as with the editor caret bug above.

I'll finish a B.S. in Information Systems at the Federal University of Santa Catarina (UFSC) in December 2026. Florianópolis is one or two hours ahead of New York, and I already work US hours.

Portuguese is my first language; I work in English every day.

Tools I use most: TypeScript, React, Next.js, React Native, Node.js, Go, gRPC, Playwright, PostgreSQL.

Write to me

I'm looking for a frontend or full stack role at a product company, working remotely. Email is the best way to reach me.

mateus.sle.per@hotmail.com