Back to all positions

Fullstack Software Engineer

Location

London / Remote

Description

We’re hiring a full stack software developer to join our team at Tract. The ideal candidate for this role is someone who can unblock us on the backend, who is also comfortable with jumping into other parts of the codebase from time to time. We don’t have any hard rules about years of experience and we definitely don’t care about institutions or particular qualifications. However, there are only three of us full time on the team at the moment so we’re looking for someone who can bring themselves up to speed without too much handholding from us and who is comfortable with taking on a lot of responsibility for their sections of the codebase.

If you think Tract looks like somewhere you would like to work but don’t think you’re ready for this particular role, feel free to get in touch and we’ll bear you in mind as we grow and further roles open up.

Technology stack:

  • We use Go and Postgres for as much as we can. For instance:
    • We use River for managing our background tasks.
    • We use sqlc to generate Go, Python, and TypeScript interfaces for our queries.
    • We run our migrations using Goose.
    • We use PostGIS for geospatial data.
    • We use pgvector for embeddings.
  • We do however increasingly use NextJS server-side actions for some of our backend processes.
  • We fall back to Python for scraping and some machine learning/llm stuff, because of the ecosystem.
  • We provision our infrastructure using Terraform and try to avoid getting locked in to any particular cloud service. Most of the provisioning takes place on AWS.
  • Our frontend is written in TypeScript with React/NextJS.
  • This is all glued together with things like Docker and Github Actions.
  • We try to keep our documentation in either Notion or the repo itself. We manage issues and plan out our cycles with Linear.

Tract is essentially a platform of data ingestion pipelines on one side, a big database in the middle, and then a set of UIs on the other side. We have some fairly complicated queries for finding intersections, recursively stepping back through the ancestors of the current set of local planning authorities, performing retrieval augmented generation, and so on.

We have a lot of data in our system already but this is only a fraction of of what is on our road map. We want to go deeper on British planning data and also to expand into other jurisdictions. We need to make sure that what we are building can scale to support tens of thousands of local governments. If we do that successfully we should find ourself with a tool that can be used to interact with all sorts of bureaucratic interfaces.

Projects on the roadmap

This is a deliberately vague list of projects on our road map to give you a sense of what you might work on over the next year at Tract.

Scraping and data pipelines

We’re running some of this project in the open, so you can take a look at it in more detail here. People have been trying to do this for years. We’ll talk in more detail about what we want to build on top of the data we pull in if you interview, but you can see an early example of us opening planning data up in our free tool, Scout. There’s a huge amount more that we want to layer on to this, including helping developers and planners make more informed decisions about the future based off things in the planning pipeline. For this to remain accurate and up to date, we need robust data pipelines that can refresh themselves as our sources change on an unpredictable timetable.

Scaling Tract’s infrastructure

For our platform to remain flexible and responsive to user needs it’s essential that we can surface the relevant information for any plot of land, or polygon that may intersect several plots of land, while keeping performance high.

Building “the platform for planning”

Tract was founded with the mission of making it easier to get stuff built, and with the belief that making planning permission easier to obtain is the most effective way of doing that. We want to help people produce planning applications more quickly, to have greater confidence in their validity, and to help them navigate the political challenges of taking something through the system. Joining up the expressive power of LLMs with the richness of the data we ingest is part of how we do this. But for users to trust what we produce we have to give lots of thought to how we surface the information we show them, and how anything produced by an LLM can be validated and linked back to a reference.

Example stretch goal

There are still many datasets that push the limits of what automated systems can parse automatically. One example is the long tail of maps that live as mere images in PDFs or individual files. Many of these have important boundaries and labels drawn on to them. Digitising these requires building a state-of-the-art map rectification tool. This is the sort of project that would transform the work of geospatial researchers around the world.

Summary

You might be a good fit if:

  • You embody our cultural values.
  • You like writing prose as well as code.
  • You are familiar with the technologies described in our technology stack
  • You are interested in modern approaches to NLP, such as using RAG and LLMs to help pull structured output from large corpora of text.
  • You are familiar with the various conceptual primitives of geospatial data.
  • You are okay with ambiguity, and take a proactive approach to resolving uncertainties.

The salary for this role is between £80k and £100k per year, plus generous equity. We’re planning on raising again in the next 12 months. As an early employee, you’ll have a lot of influence in helping us reach the targets we need to hit. If we get there, we plan on increasing everybody’s salaries by at least 50%.

All of our roles come with the following benefits:

  • Regular team events and off-sites
  • Proper budget for equipment
  • And the standard stuff like pensions, a generous equity plan, Cycle to Work scheme, decent maternity and paternity, etc.

Applying for this job

Send an email to [email protected] with the subject: “Job application: Full Stack Engineer”. The more information you can give us about your experience with technologies like the ones discussed above the better.