Job Opportunity
Galebreaker | Welcome
View
opportunity
Welcome
What sets us apart?
For over 35 years Galebreaker have helped agricultural, industrial and commercial businesses perform at their best in any weather or climate.
Family-owned and UK-based, we are the biggest investors in research and development in our industry – allowing us to continuously produce world-leading fabric engineered solutions that solve some of the biggest challenges our clients face.
With all manufacturing taking place in the UK, our attention to detail and commitment to the customer is unmatched.
That’s how confident we are about what we do.

Our commitment to customer service
Galebreaker has three divisions: agriculture, industrial and commercial. The business is structured in this way so that we can provide the bespoke solutions and industry-specific expertise that each sector deserves. The agriculture division works with farmers, veterinary professionals and leading building designers to provide the ideal housing environment for livestock. The industrial division works with engineers, manufacturers and petrochemical businesses to ensure the safety of workers and equipment. The commercial division works with essential businesses within warehousing, manufacturing industry, providing workplace partitioning, weather protection and access solutions.
The board
The development of the company is thanks to the skill and expertise of our team, which has grown over the years, under the guidance of our Board. The Board includes Managing Director – Jeremy Scudamore, Commercial Director – Jamie Wilde, the outgoing Financial Director – Stephanie Smith, and Technical Director – Andrew Gardner under the Chairmanship of John Berry. With the support of our strong Management Team, we have a dependable production team, an innovative technical and engineering team, European and UK sales teams, a UK-based team dedicated to customer support, and a committed finance and administration team.
The Board at Galebreaker has plenty of ingredients for success; strong leadership, commercial experience, financial capability and technical knowledge, all responsible for the long-term success and sustainability of the business. Each member is driven to generate value for all our stakeholders – our customers, our suppliers, our employees, as well as the wider community.

Every quarter the board set out our strategy, and with clear direction and communication ensure that our culture is aligned with our Purpose – to guard against the elements, and our Values – to create a truly great place to work. As a Board we are passionate about what we do, we aim high, we champion innovation, we respect and encourage each other, and we are responsible – responsible for creating a Galebreaker family that cultivates strong partnerships and delivers long-term sustainable growth.
The following has evaluated to null or missing: ==> propsUtil.get(ucmLocaleKey) [in template "64056#64102#365043" at line 28, column 19] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign locale = propsUtil.get(ucmLoc... [in template "64056#64102#365043" at line 28, column 1] ----
1<div id="outer-footer" class="updatedFooter" style="padding-left: 0px; width: 1640px;">
2 <div id="inner-footer-expert" class="">
3 <div id="footerLogo">
4 <#--<#if FooterLogo.getData()?? && FooterLogo.getData() != "">
5 <#assign footerLogoHTML = "${FooterLogo.getData()}"/>
6 <#if (footerLogoHTML?length > 0)>
7 ${footerLogoHTML}
8 <#else>
9 <img src="https://www/hays.co.uk/cs/HaysMicroSites/assets/img/hayslogo.gif" id="defaultLogo" alt="Hays
10 footer logo">
11 </#if>
12 </#if>-->
13 <#assign haysLogo = propsUtil.get("HAYS_LOGO_WEB2")/>
14 <img src="${haysLogo}" id="defaultLogo" alt="Hays
15 footer logo" style="max-width:200px!important;margin:0px 15px;">
16 </div>
17 <div id="footerLogo-Links">
18 <#if Link.getSiblings()?has_content>
19 <#list Link.getSiblings() as cur_Link>
20 <#if cur_Link.getData()?? && cur_Link.getData() != "">
21 <#assign linkData = "${cur_Link.getData()}"/>
22 ${linkData}
23 </#if>
24 </#list>
25 </#if>
26 </div>
27 <#assign ucmLocaleKey = themeDisplay.getLocale()+"."+siteType+"."+"ucmLocale">
28<#assign locale = propsUtil.get(ucmLocaleKey)/>
29<#assign apiUrl = propsUtil.get("WEB72_API_DOMAIN")/>
30
31<#assign lr74CutoverCountryCode = propsUtil.get("LR74_CUTOVER_COUNTRY_CODE")/>
32<#if lr74CutoverCountryCode??>
33<#list lr74CutoverCountryCode?split(",") as countryCode>
34 <#if countryCode = themeDisplay.getLocale()?keep_after_last("_") >
35 <#assign apiUrl = propsUtil.get("API_DOMAIN")/>
36 </#if>
37</#list>
38</#if>
39
40<#attempt>
41
42<#if httpUtil.URLtoString(apiUrl+"/o/HaysContentStructure/getcontentstructure/expertFooter/"+locale)??>
43<#assign response = httpUtil.URLtoString(apiUrl+"/o/HaysContentStructure/getcontentstructure/expertFooter/"+locale)>
44<#assign responseObj = jsonFactoryUtil.createJSONObject(response)>
45<#if responseObj?? && responseObj.results?? && responseObj.results?has_content>
46<#assign getResponseResultArray = responseObj.getJSONArray("results")>
47<div id="footer-bottom">
48 <#if getResponseResultArray.length() gt 0>
49 <#assign siteUrl = getResponseResultArray.get(0).siteUrl>
50
51 <#if getResponseResultArray.get(0).getJSONArray("GroupHeading")?? && getResponseResultArray.get(0).getJSONArray("GroupHeading").length()?? && getResponseResultArray.get(0).getJSONArray("GroupHeading").length() gt 1>
52
53 <#assign groupHeadingArr = getResponseResultArray.get(0).getJSONArray("GroupHeading")>
54 <div class="row single-col gpHeading">
55 <div class="col col-12">
56 <nav>
57 <ul>
58 <#list 0 ..< groupHeadingArr.length()?number as i>
59 <#if groupHeadingArr.get(i).Link?starts_with("/")>
60 <#assign linkUrl = siteUrl + groupHeadingArr.get(i).Link>
61 <li>
62 <a href="${linkUrl}" target="">${groupHeadingArr.get(i).GroupHeading}</a>
63 </li>
64 <#else>
65 <li>
66 <a href="${groupHeadingArr.get(i).Link}" target="">${groupHeadingArr.get(i).GroupHeading}</a>
67 </li>
68 </#if>
69 </#list>
70 </ul>
71 </nav>
72 </div>
73 </div>
74 <#elseif getResponseResultArray.get(0).getJSONArray("FooterLink")??>
75 <#assign FooterLinkArr = getResponseResultArray.get(0).getJSONArray("FooterLink")>
76 <div class="row single-col">
77 <div class="col col-12">
78 <nav>
79 <ul>
80 <#list 0 ..< FooterLinkArr.length()?number as i>
81 <#assign linkUrl = FooterLinkArr.get(i).FooterLink?replace("href=\"/", "href=\""+siteUrl+"/" ) >
82 <li>
83 ${linkUrl}
84 </li>
85 </#list>
86 </ul>
87 </nav>
88 </div>
89 </div>
90
91 </#if>
92 <div class="row single-col">
93 <div class="col col-12">
94 <p class="last">${getResponseResultArray.get(0).CopyrightHTML}</p>
95 </div>
96 </div>
97 </#if>
98</div>
99</#if>
100</#if>
101<#recover>
102
103</#attempt>
104
105 <div id="copyright-text">
106 <#if CopyrightText?? && CopyrightText.getData()?? && CopyrightText.getData() != "">
107 ${CopyrightText.getData()}
108 </#if>
109 </div>
110 </div>
111</div>
112<script>
113$(document).ready(function(){
114 if((Liferay.ThemeDisplay.getLanguageId() != "en_GB") && (location.href.indexOf("/web/") != -1)) {
115 console.log("link update required on the site");
116 $('a').each(function(index) {
117 var layoutRelativeUrl = Liferay.ThemeDisplay.getLayoutRelativeURL();
118 var getSiteUrl = layoutRelativeUrl.substring(0, layoutRelativeUrl.lastIndexOf("/"));
119 var linkVal = $(this).attr("href");
120 if((typeof linkVal !== "undefined") && linkVal.indexOf("https") == -1 && linkVal.indexOf("/")!= -1 && (linkVal.indexOf("/") === linkVal.lastIndexOf("/"))){
121 var updatedLink = getSiteUrl + linkVal ;
122 $(this).attr("href", updatedLink)
123 console.log("link updated - " + updatedLink);
124 }
125 });
126 }
127});
128</script>