Work term 01Fall 2025

Testing and R&D at Guap

Guap

Software Engineer Intern

Toronto, ON

Introduction

This report details my first Co-op work term at Guap, a Canadian fintech startup, which I completed during the Fall 2025 semester. It highlights both the technical work I contributed and how the experience helped me grow as a software engineer in a real-world environment.

During the first half of the term, I worked on research and development for Guap’s ATM platform, exploring alternative ATM providers and building test prototypes to evaluate their technical fit. In the second half, I focused on improving the reliability of Guap’s mobile app by building automated tests and integrating them into the development workflow.

Throughout the term, I strengthened both technical and foundational skills, including collaborating with a small engineering team, communicating technical ideas clearly, and adapting to real-world software development practices.

Guap

The employer

Guap is a Canadian-founded, US-based fintech startup focused on building infrastructure that connects cash-based systems with digital financial services. The company operates in the areas of financial technology, distributed systems, and software engineering, with an emphasis on creating reliable and accessible tools for moving between physical cash and digital currencies.

Guap’s work combines backend services, mobile application development, and integrations with physical financial hardware such as ATMs, with active physical infrastructure deployed in the Caribbean.

As a startup with a small, distributed engineering team of six people spanning four different countries, the team works closely across roles, allowing developers to contribute to both research-oriented projects and production systems. In addition to technical work, I also gained exposure to startup operations such as marketing and financial planning, providing broader insight into how engineering decisions interact with business priorities.

This environment offers opportunities to work with modern development tools, collaborate directly with other engineers, and gain exposure to the full lifecycle of real-world software systems, from early planning to deployment and maintenance.

Product
StableTeller Kiosk & Mobile App
Industry
Fintech / Blockchain
Size
6 Members
Guap ATM Withdrawal
ATM withdrawal screen

Job description

During my work term at Guap, I worked as a Software Engineering Intern supporting the design, testing, and evaluation of the Guap StableTeller platform. The StableTeller is a kiosk-based system that enables users to convert physical cash into digital value and vice versa, providing access to digital financial services for cash-reliant and unbanked users.

My role focused primarily on research and development for ATM hardware integration and automated testing for the accompanying mobile wallet app. One of the most interesting aspects of my role was working on early-stage research and engineering validation rather than only production feature development.

During the first half of the term, I evaluated alternative ATM providers, such as Genmega, by building TypeScript-based prototypes and mock test harnesses to simulate cash deposit and withdrawal workflows. This work required understanding device-level behaviour, designing testable abstractions, and evaluating technical trade-offs.I learned TypeScript entirely on the job and applied it directly to this research work.

In the second half of the term, I shifted focus to mobile wallet app testing and quality infrastructure. I built automated tests using Jest, React Native testing tools, and Maestro. I integrated these tests into a continuous integration pipeline using GitHub and GitHub Actions, which I also learned on the job. This work improved test reliability and reduced the need for manual testing during development.

Throughout the term, I collaborated closely with the engineering team using Slack for communication and Trello for task planning, tools I was already familiar with from CIS*3250 (Software Design III). Most of the technical skills required for the role, including hardware-oriented testing, mobile test automation, and CI pipeline development, were learned on the job.

The position required working independently, communicating technical findings clearly, and adapting to real-world software development practices.

Genmega SDK system context and control flow
ATM system context & control flow. Mapping the system architecture allowed me to reason about control flow between on-device hardware components and cloud services, providing a clearer mental model of how transactions propagate through the kiosk network.
ATM UI for Driver Evaluation
ATM UI for driver evaluation. This prototype interface allowed for early-stage validation of user flows, enabling us to refine hardware interaction logic before committing to expensive physical assembly.
Unit Test Harness Output
Unit test harness output. This output shows the successful execution of the automated unit test harness, covering service, hook, and use-case layers. Running these tests locally allowed me to validate application logic and edge-case handling without requiring repeated interaction with physical ATM hardware.
Unit Test CI Pipeline
Unit test CI pipeline. This CI pipeline prevented untested changes from being merged, reducing regression risk and shifting quality control earlier in development.

Learning goals

Goal 01Complete

Improve Written Communication

Progress100%
100%
Skills I wanted to learn
I wanted to improve my ability to clearly document technical work, including research findings, test results, and design decisions, for both technical and non-technical audiences.
Why this mattered
Clear written communication is essential in professional software teams, especially when documenting research outcomes or explaining complex systems to stakeholders. Strengthening this skill will directly benefit future co-op roles that require technical reporting, design documentation, or cross-team collaboration.
Reflection
This goal was successfully completed. Through regular written updates in Slack and Trello, as well as formal documentation, I became more confident in producing clear and structured written communication with less revision.
Goal 02Partial

Strengthen Problem Solving & Testing Skills

Progress75%
75%
Skills I wanted to learn
I aimed to improve my debugging, logical reasoning, and automated testing skills, particularly when working with unfamiliar systems and tools.
Technologies and tools involved
I wanted hands-on experience with TypeScript, automated testing frameworks, and continuous integration tools, as these are widely used in modern software engineering roles but were not a major focus in my prior coursework.
Why this mattered
Developing strong testing and debugging skills is critical for building reliable software systems. These skills will help me contribute more effectively in future work terms where code quality, test coverage, and system reliability are important.
Reflection
This goal was partially completed. I made significant progress learning TypeScript and implementing automated tests, but the complexity of the systems meant there is still more to learn. Nonetheless, my ability to reason through issues independently improved over the term.
Goal 03Complete

Develop Effective Teamwork & Collaboration Skills

Progress100%
100%
Skills I wanted to learn
I wanted to learn how to collaborate effectively within a small engineering team, including communicating progress, raising blockers, and contributing to shared goals.
Technologies and tools involved
I aimed to gain practical experience using Slack, Trello, and GitHub in a professional team setting to support collaboration and version control.
Why this mattered
Strong collaboration skills are essential in all software engineering roles. Gaining experience working within a real engineering team prepares me for future co-op positions that rely on teamwork and shared ownership of systems.
Reflection
This goal was successfully completed. I became comfortable participating in team discussions, coordinating tasks, and collaborating with others to meet project deadlines.
Goal 04Complete

Improve Time Management & Personal Organization

Progress100%
100%
Skills I wanted to learn
I wanted to develop better time management and task prioritization skills while balancing internship responsibilities with academic commitments.
Technologies and tools involved
I used Trello and personal planning notes to organize tasks and track progress.
Why this mattered
Effective time management is critical in professional environments where multiple tasks and deadlines must be handled simultaneously. This skill will directly benefit future work terms with increased responsibility.
Reflection
This goal was successfully completed. I consistently met deadlines and improved my ability to prioritize tasks and manage my workload independently.
Goal 05Partial

Global Understanding of Fintech Systems & Financial Accessibility

Progress60%
60%
Skills I wanted to learn
I wanted to better understand how fintech platforms use software and blockchain technology to enable secure transactions and support financial inclusion.
Technologies and tools involved
I was interested in learning about blockchain-based transaction systems and financial hardware integration because these technologies play a growing role in modern financial services.
Why this mattered
Understanding how software systems interact with real-world financial infrastructure will be valuable in future roles within fintech or distributed systems.
Reflection
This goal was partially completed. I developed a strong high-level understanding of the platform and its impact, but further hands-on experience would be needed to fully master the underlying systems.

Additional takeaways

Beyond formal learning outcomes established at the start of the term, these insights reflect lessons learned through daily practice.

The Necessity of Design

While coursework emphasizes upfront design, this term provided my first experience with its practical necessity. I realized that the most critical engineering often happens before a single line of code is written, as early architectural choices directly dictate the ease of downstream testing and integration.

Bridging Theory and Practice

Observing abstract concepts like idempotency and caching in a production setting helped ground my academic knowledge. Idempotency moved from a theoretical term to an essential requirement for reliable test harnesses, while caching became a vital tool for optimizing CI workflows rather than just a real-time performance trick.

Asynchronous Collaboration

I learned that in professional teams, communication often happens through code, tests, and commit history. This makes clarity in implementation and documentation far more essential than direct conversation.

Conclusion

My first Co-op work term at Guap offered a practical look at how software teams operate. By working on both independent research for the ATM platform and automated testing for the accompanying mobile wallet app, I learned how to balance different types of engineering tasks while contributing to the team's goals.

The most valuable part of the experience was taking ownership of specific technical challenges. Navigating R&D and building quality infrastructure showed me the importance of creating reliable systems that actually hold up in a real-world setting.

I'm leaving this term with a lot more confidence in React Native Testing, TypeScript, and CI/CD, and a better understanding of what it takes to be a useful member of a software team.

Acknowledgements

I would like to thank the entire team for their support and guidance throughout my work term at Guap:

  • Ari, for providing me with such a unique opportunity; I truly valued your drive to keep the team at the forefront of emerging tools and the understanding you showed whenever personal challenges surfaced
  • Alex, for ensuring a smooth onboarding process and helping me get up to speed with the team's tools and workflows
  • Mateus, for consistently taking the time to answer my questions and help troubleshoot issues
  • Emille, for offering a sounding board for ideas and providing thoughtful feedback during discussions
  • Alexandra, for sharing noteworthy perspectives on startup marketing and bringing positive energy to our daily standups
All reports