Full Stack Developer – Contractor
Closing date: 28 May 2026, 00:00 BST
Location: Remote
Vacancy type: Contractor
Global Canopy is a data-driven not for profit that targets the market forces destroying nature. We do this by improving transparency and accountability. Our focus is on open data, aligned metrics and strong regulation, to help powerful organisations stop nature-related impacts and realise opportunities for positive action.
Purpose
Global Canopy (GC) is seeking to contract a full stack developer to start the development of the GC Assessment Platform. This will be a new system to replace two legacy tools currently used by the Corporate Performance programme to conduct and manage the assessments that form the foundation of our Forest 500, Forest IQ and related data products. The platform will be used for the full assessment lifecycle: methodology setup, data entry, internal review, company engagement, and data export.
The contractor will work on the development of the platform as the main developer, but within a small team that is working on related projects. There is a product requirements document (PRD), an Asana project defining the features and user stories that need to be implemented, and a software requirements specification (SRS) providing more technical detail. The developer will work using our preferred tech stack, re-using modules and patterns from existing work wherever possible.
What work do we want the contractor to do?
Context: We are seeking to address accumulated technical debt and improve usability and performance by replacing two key tools used by the Corporate Performance programme:
Original Data Collection Tool:
The collection and review of data on companies and financial institutions is an integral part of the work of the CP programme. This work is carried out by researchers using the Original Data collection tool. This is a website that internal users log into to input assessment data, compare it with data from past assessments, and perform some basic data quality checks. Multiple different sets of assessments are run through this internally-used website every year, including those for Forest 500, Floresta 250 and Forest IQ.
Comment Platform:
The comment platform is an externally-facing website that allows assessed entities (companies and financial institutions) to view their Forest 500, Forest 500 Finance and Floresta 250 assessments before the assessments are made public. If they disagree with any of the findings, assessed entities can comment on them on an indicator by indicator basis. Global Canopy then reviews these comments, if necessary updates the indicator answers, and then responds. Currently it is a 2 step conversation, i.e. assessed entities can make one comment and GC can respond once. This comment process is an important quality control and engagement step.
The functionality of these two tools will be amalgamated into a single Assessment Platform as described by our PRD and SRS.
Role
You will be responsible for starting the implementation of the Assessment Platform. You will cover the whole spectrum of development: infrastructure creation, backend and frontend. Our tech stack is as follows:
- AWS infrastructure defined and deployed using terraform.
- Python using FastAPI on EC2 and Lambda for backends.
- Next.jswith TypeScript on AWS Amplify for the frontend.
- PostgreSQL on RDS for the database.
- Pytest, jest and Playwright for testing.
Key tasks and activities include:
- Setting up infrastructure using terraform
- Configuring authentication and access control
- Building the repository layer over the existing PostgreSQL schema
- Backend API development
- Building the Next.jsfrontend application
- Writing unit, integration and end to end tests
- Documenting work done
Expected Outputs
- Platform infrastructure provisioned in terraform and deployed via CI/CD pipelines, covering all AWS components defined in the SRS (EC2, API Gateway, Cognito, S3, SQS, Lambda, networking).
- CI/CD pipelines in GitHub Actions for PR validation, deployment, and release management.
- Authentication and authorisation system using Cognito, with separate internal and external user pools, invitation flows, and role-based access control enforced at the API layer.
- Backend API in FastAPI with a data access layer over the existing database schema and endpoints for core functionality.
- Background worker functions for asynchronous tasks.
- Next.js frontend on Amplify with the foundational pages for both the internal workspace and company portal, prioritised in consultation with the project lead.
- Monitoring, structured logging, and CloudWatch alarms as defined in the SRS.
- Automated tests covering implemented functionality.
- Developer documentation sufficient for another developer to set up the environment and continue the work.
The developer will be embedded within the existing team at Global Canopy, and will liaise closely with our Data Systems Lead and Full Stack Developers. The specific scopes and priorities will be defined as the work progresses in an agile fashion.
About You
Skills and experience:
- Strong full-stack web development experience using Python and TypeScript, with at least five years of professional experience building and shipping web applications.
- Hands-on experience with FastAPI or a similar Python web framework.
- Proficient in React, ideally with strong experience in Next.js, including server-side rendering and client-side data fetching patterns.
- Comfortable writing SQL directly against PostgreSQL – the project will use SQLAlchemy Core for query building but not as a full ORM.
- Extensive practical experience with AWS infrastructure, ideally including EC2, Lambda, API Gateway, Cognito, S3, and SQS. Experience defining infrastructure with Terraform is strongly preferred.
- Ability to set up and maintain CI/CD pipelines using GitHub Actions.
- Experience implementing authentication and role-based access control in web applications, ideally using Cognito or a similar identity provider.
- A commitment to code quality, including writing automated tests (pytest, Jest, Playwright) and structuring code for maintainability by future developers.
- Ability to work independently with minimal supervision, making sound architectural and implementation decisions guided by the product and technical specifications provided.
Desirable but not essential:
- Experience working with legacy databases – adapting a new application to work against an existing schema rather than designing from scratch.
- Familiarity with Docker and Docker Compose for local development and deployment.
- Experience working in or with non-profit, research, or data-driven organisations.
Other information
Our budget allows for a maximum of £500 per day including VAT for 66 days, expected to be worked at 4-5 days per week. (Note that for applicants based outside the UK, the £500 maximum includes the reverse VAT charges we would be subject to, so is equivalent to £400 per day.) Due to the close collaboration with existing team members required, applicants must be within 2 hours of UK time. We would like this work to start as soon as possible. There is the possibility for extension if we are successful with further funding applications.
How to Apply
Submit your application via the link below:
- A short cover letter – outlining your interest in our work, and how your expertise, experience and working style maps to our requirements
- An up-to-date CV
- Your day rate in GBP
- Your availability
- Brief answers to the following questions (please aim for no more than 100 words per answer):
- Describe a project where you had to implement role-based access control across both an API and a frontend, with different user types seeing different things. What went well and what would you do differently?
- Describe a time you built a web application against an existing database schema that you couldn’t freely modify, or alternatively where you had a dependency on a legacy system that could not be changed. What problems did you run into and how did you work around them?
- What’s the most complex piece of infrastructure you’ve set up from scratch on AWS? Describe what you built, why you made the choices you did, and what you’d change if you did it again.
- Describe a time a technical decision you made early in a project turned out to be wrong. What was the decision, what went wrong, and how did you deal with it?
Expressions of interest will be considered as they are received, and we will run a rolling interview process, so early application is encouraged. There will be a single one-hour interview with our Data Systems Lead and other tech team members.
By submitting your application, you consent to us holding your data in line with our policies. GC is under no obligation to engage anyone as a result of this search. Individual contracts will be negotiated when we initiate the work.