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.

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



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.



Learning goals
Improve Written Communication
- 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.
Strengthen Problem Solving & Testing Skills
- 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.
Develop Effective Teamwork & Collaboration Skills
- 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.
Improve Time Management & Personal Organization
- 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.
Global Understanding of Fintech Systems & Financial Accessibility
- 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
