
Breaking the coding doom loop: lessons from my intern project
Tell me if this sounds familiar. You get a project idea that you’re excited about, create a new GitHub repository, and dive headfirst into coding. Instead of coming away with your new pride and joy, you end up with just another repo in your archive. Well, this has happened to me too, too many times! With my university projects, I could always produce a good piece of work. But university… Continue reading

Thinking on paper the software engineering way
Starting your first engineering job feels like a race against time. Handle coding, survive testing, run through a slew of inductions and find time somewhere in there to meet your teammates. Organisation tools are everywhere. But with a schedule spread across Google Calendar, Notion, and the odd Slack notification, nailing the daily admin can become a chore in its own right. The purpose of a planner is to break down… Continue reading

Combining text with numerical and categorical features for classification
Classification with transformer models A common approach for classification tasks with text data is to fine-tune a pre-trained transformer model on domain-specific data. At FreeAgent we apply this approach to automatically categorise bank transactions, using raw inputs that are a mixture of text, numerical and categorical data types. The current approach is to concatenate the input features for each transaction into a single string before passing to the model. For… Continue reading
We're hiring! Check out our vacancies 👈

How the Ruby Interpreter Creates Methods on the Fly
(And why it matters!) I was lucky enough to attend last year's EuRuKo, the travelling European Ruby conference. A theme of the conference (for me) was Ruby's infamous embrace of metaprogramming, which I've had little exposure to in my day-to-day as a Rails dev. The approach to this discussion was inspired by this great talk by Masafumi Okura on Code Reading, and much of the detail comes from the book… Continue reading

Restructuring our analytics team
In late 2022, we restructured our analytics team by aligning each analyst to a different area of the business. In this blog post I’ll talk about what we changed, why we changed it, and how we feel the changes have gone so far. If you’ve been through a similar process (or even the opposite process!), are considering it, or have any other thoughts, we’d love to chat! Please drop us… Continue reading

Using API Gateway, Lambda, SageMaker and DynamoDB to build a categorisation service in AWS
I’ve talked previously about the value of combining rules-based and machine learning approaches to categorisation. In short, rules-based approaches make it easy to do customer-level personalisation that complements a machine learning model trained to find patterns across customers. In this post I’ll talk about how we used AWS to build an expense categorisation service that combines machine learning with a rules-based approach. This service forms part of the Smart Capture… Continue reading

Combining machine learning with rules-based personalisation
One of the ways we use machine learning at FreeAgent is to help automate data entry. Keeping on top of your accounts can involve slightly tedious manual tasks like categorising bank transactions or managing your expenses. Machine learning can help here by automating aspects of these tasks so our users can nail their daily admin and focus on bigger things. Personalisation with rules In 2020 we launched our first operational… Continue reading

The architecture of FreeStyle, our design system
We embarked on a journey to create a design system at FreeAgent over 2 years ago. In this blog post I will describe how we structure our design system code and how it’s being used across different codebases. Technologies we use Our main design system consumer is the FreeAgent web application, a Ruby on Rails application. As a result, we write our components using the Ruby on Rails ViewComponent framework… Continue reading

Ease into Ruby with a Python background
Starting your first role as a software engineer and having no knowledge of the programming language used in your organisation sounds like a nightmare at first, as thoughts of the imposter syndrome that many of us seem to suffer from these days start to take over. But worry not. At FreeAgent the environment is very friendly and relaxed, allowing you as a new joiner to focus on learning and integrating… Continue reading

Factories: don’t stop production!
Why this post? Have you ever come across a situation where you need to write a test that uses some model objects, but found that those have endless dependencies on the existence of other objects, from the same model or otherwise? Have you ever come across a test where you only care about a specific attribute of a model object, but you find yourself having to populate every single one… Continue reading