Our Mission

Bringing smart machinery to a new frontier: Farming.


Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quas hic est nostrum officia voluptatem magni.

Drag or Scroll

We are creating intelligent tech that makes a tangible difference.


Lorem ipsum dolor sit amet, consectetur adipisicing elit. Odit cupiditate totam fugit aperiam tenetur pariatur.

Our Mission
Our Wheelhouse

Rewiring the future of agriculture.


Lorem ipsum dolor sit, amet consectetur adipisicing elit. Quas hic est nostrum officia voluptatem magni.

Our Wheelhouse

Blanditiis eligendi aliquid provident saepe recusandae eos, soluta, assumenda voluptatibus, id commodi quod consequuntur inventore, distinctio.

Blanditiis eligendi aliquid provident saepe recusandae eos, soluta, assumenda voluptatibus, id commodi quod consequuntur inventore, distinctio.

Get ready to get your boots dirty.

Lorem ipsum dolor, sit, amet consectetur adipisicing elit. Eveniet, cum suscipit, similique ipsum exercitationem ipsa, accusamus natus laborum fugiat perferendis numquam, aspernatur itaque beatae velit eaque in pariatur ex. Nemo.

Our Culture

We are a People-First Company.


Lorem ipsum, dolor sit amet consectetur adipisicing, elit. Ullam odit minus facilis fugit laudantium maiores at id vitae.

Our Culture

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Laborum ipsum delectus eligendi quas est, voluptatem illum cupiditate.

John Smith

Lorem ipsum dolor sit amet consect.

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Laborum ipsum delectus eligendi quas est, voluptatem illum cupiditate.

John Smith

Lorem ipsum dolor sit amet consect.

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Laborum ipsum delectus eligendi quas est, voluptatem illum cupiditate.

John Smith

Lorem ipsum dolor sit amet consect.

Our Team

Get ready for the greatest adventure of your career.


Lorem, ipsum dolor sit, amet consectetur adipisicing elit. Quos aut, praesentium incidunt cupiditate placeat, perferendis.

Apply Now
Follow Us
gsap.registerPlugin(ScrollTrigger); let duration = 20, sections = gsap.utils.toArray(".gpanel"), sectionIncrement = duration / (sections.length - 1), tl = gsap.timeline({ scrollTrigger: { trigger: ".panels", pin: true, scrub: 1, snap: 1 / (sections.length - 1), start: "left left", end:'+=9000', //markers:true } }); tl.to(sections, { xPercent: -100 * (sections.length - 1), duration: duration, ease: "none" }); gsap.to('.panel-mission .panel-2',{ opacity:1, duration:3 }); tl.to('.panel-mission .panel-1',{ scrollTrigger:{ trigger:'.panel-mission .panel-1', start:'left+=105 left', end:'left+=300 left', scrub:1, }, left:'20%', ease:'none', }); tl.to('.panel-mission .panel-0',{ scrollTrigger:{ trigger:'.panel-mission .panel-0', start:'left left', end:'right left', scrub:1, }, x:'60vw', ease:'none', }); tl.to('.panel-tech .panel-1',{ scrollTrigger:{ trigger:'.panel-tech .panel-1', start:'left left', scrub:1, //markers:true }, left:'2vw', ease:'none', }); tl.from('.panel-wheel .panel-1',{ scrollTrigger:{ trigger:'.panel-wheel .panel-0', start:'0 left', scrub:1, markers:true, }, left:'0vw', ease:'none' }) gsap.registerPlugin(ScrollTrigger); let sections = gsap.utils.toArray(".xpanel"); gsap.to(sections, { xPercent: -100 * (sections.length - 1), ease: "none", scrollTrigger: { trigger: ".xcontainer", pin: true, scrub: 1, markers:1, snap: 1 / (sections.length - 1), end: () => "+=" + document.querySelector(".xcontainer").offsetWidth } }); gsap.to(".orange p", { scrollTrigger:{ target:'.orange', start:'300%', markers:1, }, duration: 2, rotation: 360 }); // helper function that lets us define a section in a timeline that spans between two times (start/end) and lets us add onEnter/onLeave/onEnterBack/onLeaveBack callbacks function addSectionCallbacks(timeline, {start, end, param, onEnter, onLeave, onEnterBack, onLeaveBack}) { let trackDirection = animation => { // just adds a "direction" property to the animation that tracks the moment-by-moment playback direction (1 = forward, -1 = backward) let onUpdate = animation.eventCallback("onUpdate"), // in case it already has an onUpdate prevTime = animation.time(); animation.direction = animation.reversed() ? -1 : 1; animation.eventCallback("onUpdate", () => { let time = animation.time(); if (prevTime !== time) { animation.direction = time < prevTime ? -1 : 1; prevTime = time; } onUpdate && onUpdate.call(animation); }); }, empty = v => v; // in case one of the callbacks isn't defined timeline.direction || trackDirection(timeline); // make sure direction tracking is enabled on the timeline start >= 0 && timeline.add(() => ((timeline.direction < 0 ? onLeaveBack : onEnter) || empty)(param), start); end <= timeline.duration() && timeline.add(() => ((timeline.direction < 0 ? onEnterBack : onLeave) || empty)(param), end); }