Redesigned GroupMe profiles.
Interests, photo galleries, music previews and swipe navigation, from profile components to release.
Luisa Santo / iOS engineer
I turn product ideas into iOS experiences, from GroupMe's profiles and chat UI to streaming AI features. Previously: Microsoft Teams and the Peacock app launch.
Swift, Objective-C and UIKit. One-page PDF
01 / Selected work
Product UI, asynchronous state, architecture and the details that make an app usable. Each case study separates my contribution from the team's work.
Interests, photo galleries, music previews and swipe navigation, from profile components to release.
Grouping-aware message bubbles, coordinated chat surfaces and light/dark themes.
Intermediate image previews and visible progress while Copilot generates the final result.
Incremental responses, caching and failure handling in the iOS client.
Contextual feedback and optimistic poll updates that recover when a request fails.
Separating legacy controller logic into Swift components and view models.
Protected notification previews from unaccepted contacts and changed consumer file/offline behavior without changing enterprise scenarios.
Built reusable page objects and UI-test helpers, then maintained scenario tests and contributed build-pipeline fixes as the app and Xcode changed.
Created AI onboarding animation work and helped engineers, designers and PMs get started with Copilot-assisted code discussions. Shared debugging, review and telemetry practices.
Supported Teams and Skype for Business developer integrations across EMEA. Built escalation and availability-tool interfaces, onboarding resources and shared troubleshooting guidance.
Alongside feature work
I build reusable test infrastructure, address accessibility issues, and help engineers plan, implement and explain their work. These are dated examples, not lifetime totals.
In GroupMe's end-of-2024 suite, alongside reusable page objects and helpers. A historical authorship count, not a coverage percentage.
Distinct issues in seven merged changes in July 2026: VoiceOver roles, headings, selection, announcements and contrast.
In 2024 and 2025: implementation, architecture, review and communicating results. Additional coaching extends beyond these two projects.
02 / Experience
Microsoft, the Peacock launch, and the move from backend engineering to iOS at Talkdesk.
2024 - present
Consumer iOS & AI experiences
Redesigned profiles, chat bubbles, progressive image loading, streaming summaries, contextual feedback and optimistic poll updates. Ownership includes the state, testing and telemetry behind the UI.
2022 - 2024
iOS architecture & product engineering
Post-meeting architecture, community experiences, notification privacy and consumer file handling. Coordinated changes with partner teams while preserving enterprise behavior.
2021 - 2022
Developer support
Technical escalation ownership across EMEA, developer-support tools, onboarding and a shared knowledge base. Collaborated with product engineering and support teams across regions.
Apr 2020 - Mar 2021
iOS Developer
Contributed to the iPhone and iPad app launch, including the highlights section and movie/show details UI in Swift and UIKit.
May 2019 - Apr 2020
Software Engineer
Contributed to a Ruby microservice, then moved to iOS work on push notifications and Interface Builder. Helped onboard new iOS engineers.
Current Microsoft title: Member of Technical Staff.
Taught app development with App Inventor at Girls Code (2018-2020) and block-based programming at Happy Code (2018-2019).
Additional project work involving Sky and Comcast.
Instituto Superior Técnico
MEng, Artificial Intelligence (2020); BEng, Computer and Information Sciences (2018).
Research background
Speech-to-text for archives and space-mission design. The Alpbach programme was organised by FFG and co-sponsored by ESA.
Research internship
Evaluated speech-to-text tools for CERN's archives, comparing feasibility and limitations.
Research details on LinkedInAlpbach Summer School / 2015
Contributed to a preliminary space-mission concept studying gravity's effect on quantum systems. Team Blue received the programme's Best Technical Case recognition.
Read the programme report View the Team Blue photograph on ESAPhoto credit: FFG/Summer School Alpbach/MA Jakob. Photograph hosted by ESA.
AI-assisted engineering
I write the brief, define the rules and decide what evidence is needed. Copilot and review agents help with implementation, debugging and review; I remain accountable for the result.
I describe the user scenario, existing behavior, constraints and acceptance criteria. I separate what must change from what must stay intact, including failure cases and explicit non-goals.
I point to the relevant code, designs, tickets and documentation, using MCP where it helps. I ask for existing patterns and dependencies before a proposed implementation, rather than a guess from a file name.
I maintain copilot-instructions.md and repository guidance for architecture, testing, privacy and review. Reusable rules stay separate from the task brief, so important constraints do not depend on repeating a long prompt.
I require source and API checks, explicit assumptions and an honest account of missing evidence. For a bug, I ask for a reproduction before a fix. These checks help catch hallucinations; instructions alone cannot eliminate them.
I ask for tradeoffs before non-trivial changes, then break the work into reviewable pieces. I challenge the proposed design, inspect the diff and use review agents for another perspective, not as a substitute for my own judgment.
I require actual build and test output, checks for failure and accessibility states, and documentation that matches the result. I keep publication behind human approval and help colleagues adopt the same evidence-first habits.
Illustrative brief for a common mobile interaction, not a verbatim company prompt or a claim that every listed test exists in a shipped feature.
Scenario: A poll vote should appear immediately, even on a slow connection. A failed request must not leave an incorrect vote on screen. Read first: Trace the existing view model, persistence and network action. Identify which layer owns the vote state and find the established error-handling pattern. Before coding: Explain the current behavior, identify assumptions and propose the smallest change. Do not invent APIs or assume a successful network response. Constraints: Reuse existing storage and concurrency rules. Preserve multi-select behavior and accessibility. Keep unrelated refactors out of scope. Acceptance criteria: Test success, failure and rollback, repeated taps, multi-select changes, and leaving the screen during a request. Check out-of-order responses rather than assuming they arrive in sequence. Handoff: Run the relevant checks and report their actual output. Distinguish verified behavior from anything not tested. Do not deploy without approval.
Illustrative public-safe rules. My private instruction files and company-specific guidance are not published here.
# Working rules - Read the repository guidance and relevant implementation before proposing code. - Check APIs against the project's SDK and documentation. State uncertainty instead of filling a gap with a plausible name. - Turn assumptions into questions or tests. Do not change requirements silently. - Preserve existing behavior outside the task and follow the established architecture. - Test failure paths and accessibility, not only the successful interaction. - Report actual command output. A proposed test is not a passing test. - Keep private code, customer data and internal metrics out of public artifacts. - Ask for approval before publishing. Keep the human responsible for the final decision.
Recommendations
“Her proactive approach and eagerness to contribute more to the business made her an invaluable team member.”
“I reviewed many of her pull requests and was impressed by her openness to feedback”
“Luisa played a key role in helping ramp up new engineers by creating valuable technical content on development topics.”
“Her patience and ability to explain complex concepts made my learning experience smooth and rewarding.”
Selected excerpts from professional recommendations. Full recommendations on LinkedIn
03 / How I work
Much of my work is in existing codebases: separating responsibilities, tracing state changes, and checking what happens when a request fails. I work with design, product and partner engineers from the first tradeoff through rollout.
I review code, mentor interns and help colleagues get started with AI-assisted development. I care about whether someone can explain a decision and verify the result, not just produce code.
Outside work, I like fantasy books and retro objects.
Read my CV