A shortlist in 72 hours, contributing inside two weeks, and a 30-day guarantee if the fit is wrong.
72-hour shortlist · 30-day replacement guarantee · Month-to-month
Somebody asks how many active customers you had last month. Three teams answer, and the numbers differ by eleven per cent. The meeting stops being about the business and becomes about whose figure is right.
This is not a BI tool problem, and it is not carelessness. It is that "active customer" has been defined three times — once in a dashboard filter, once in a spreadsheet somebody maintains, once in a query pasted into a report two years ago. Each definition was reasonable when written. One excludes internal accounts, one counts anybody who logged in, one uses a calendar month in local time while another uses UTC.
The analytics engineer exists to make that definition live in exactly one place, in version control, tested, with everything downstream referring to it rather than restating it.
It is a distinct job. Data engineers move and land data. Analysts ask questions of it. The transformation layer between them — where raw tables become the concepts the business actually argues about — is its own discipline, and leaving it unowned is why the numbers disagree.
This role lives between the pipeline and the dashboard, and we screen it as its own discipline.
Window functions, careful joins, and an understanding of grain. Most modelling bugs are a join that quietly multiplied rows.
Staging and marts layering, ref discipline, and whether their project is navigable by somebody who did not build it.
Uniqueness, nullability and relationship tests placed where silent failures actually happen, rather than applied uniformly for appearances.
When incremental is worth the complexity, and how they handle late-arriving records without quietly losing them.
Whether they can get finance and product to agree one definition and write it down. Half this role is not technical.
A live conversation in English, every time. Reconciling metrics means disagreeing with stakeholders politely and repeatedly.
The cost of an unowned transformation layer is not wrong dashboards. It is that nobody trusts any of them, which is much more expensive.
Once two reports disagree in public, every subsequent number gets checked against a spreadsheet before anybody acts on it. Analysts stop answering questions and start reconciling. Decisions slow down or get made on instinct, and the warehouse you are paying for becomes a thing people quote from cautiously rather than rely on.
Underneath that, the technical debt has a specific shape. Logic that should be in one model gets copied into each dashboard, so a change to how refunds are treated requires finding every place the rule was written and hoping you found them all. There are no tests, so when an upstream system starts sending nulls in a column that was never null, nothing fails — the number simply moves, and somebody notices weeks later during a board pack review.
Warehouse spend goes the same way. Models rebuilt in full every hour because nobody made them incremental, or a dashboard hitting the warehouse directly with a five-hundred-line query on every page load. The bill grows in a way that looks like data growth and is actually structure, which is why cost reviews never find it.
The signature version of this is a metric that quietly changes meaning. Somebody edits a filter to fix one report. The definition now differs from the one used in last quarter's numbers, nothing records that, and two quarters of trend data are no longer comparable.
Analytics Engineer (2–4 years). Builds and maintains models in an established project. Comfortable with SQL, dbt structure and basic testing. Follows the layering convention rather than setting it.
Senior (4–7 years). Owns the model architecture, sets the staging and marts layering, decides what becomes a shared metric, and manages warehouse cost as a design concern rather than an invoice.
Lead (7+ years). Owns the analytics platform, negotiates metric definitions with the business and makes them stick, sets testing and review standards, and handles contracts with upstream teams whose schema changes break everything downstream.
Standing up dbt. Moving transformation out of scattered queries and scheduled scripts into a tested, version-controlled project. The most common first engagement.
Metric consolidation. Reconciling competing definitions and getting agreement on one. More stakeholder work than SQL, and consistently underestimated.
Warehouse cost reduction. Incremental models, sensible scheduling, and stopping full refreshes nobody needs. Usually pays for itself quickly.
Migration onto a new warehouse. Often paired with data engineers handling ingestion while the analytics engineer rebuilds the models.
Supporting a BI team. Giving BI developers clean, documented tables so dashboards stop carrying business logic of their own.
Week one. They pick one contested number and trace it end to end, from the dashboard back to the raw table. That exercise produces the real map of your data estate, including the parts nobody documented. Expect a written account of where the definition forks and which fork is being used where.
Weeks two to four. One metric properly modelled: defined once, tested, documented, and repointed so the dashboards that disagreed now read from the same model. Expect tests on the things that would silently break it — uniqueness on the grain, not-null on the columns joins depend on, and a check that the row count has not moved more than it should overnight.
The warning sign is somebody who starts by rebuilding everything. A full re-architecture proposed in week two means they have not yet found out which of your reports anybody actually reads. The valuable first move is one number the business argues about, made trustworthy.
Hiring a data engineer and expecting this work. Different discipline. Data engineering is pipelines, orchestration and reliability; analytics engineering is modelling and definitions. Strong data engineers often find the modelling layer unrewarding, and it shows in the output.
Letting the BI tool hold the business logic. Calculated fields inside a dashboard are invisible to everything else, untestable, and lost when the report is rebuilt. If a rule matters to more than one report, it belongs in the warehouse. This is the single most common cause of numbers disagreeing.
Skipping tests because the data looks fine. Data quality failures are silent by nature: a join fanning out and doubling revenue does not raise an error, it raises the number. A handful of tests on grain and nullability catches most of it, and teams that skip them find out from a board pack instead.
Treating metric definitions as a technical decision. Whether a refund reduces revenue in the month of sale or the month of refund is a business question with a finance answer. An analytics engineer who picks one without asking has created a number that is defensible in SQL and wrong in the meeting.
Rates depend on seniority, warehouse platform, and engagement length. Tell us the role and we will give you a firm number.
Tell us the role and we will send a shortlist within 72 hours.
Tell Us the RoleTell us the role. Three to five profiles within 72 hours.