M Meddalwedd

Home/Services

Services

Software development, and everything it depends on.

We build business applications in C# and .NET. Where the data underneath is the hard part — too large, too messy, or too important to handle casually — we take that on too, and we keep the whole thing running afterwards.

01 — Software development

Applications built to still make sense in fifteen years

The bulk of what we do. Over twenty years of commercial development sits behind it, and our crime analytics platform has been in continuous service since 2011 — which is the only way to find out whether the decisions taken at the start were the right ones.

C#, .NET and ASP.NET Core MVC

Authentication, subscription billing, admin tooling, search, content, document generation and all the unglamorous parts in between. We work in ASP.NET Core MVC on .NET 10, with SQL Server behind it, and we have shipped applications at every size from a single-purpose tool to a platform of 40 controllers and 238 views serving thousands of paying subscribers.

Layering is not decoration. Domain models, data access, services and presentation are separate projects with real boundaries, so business logic is never trapped inside a controller and a change in one place does not require archaeology in four others. It costs a little at the start and is the reason a decade-old system is still straightforward to change.

We also take on applications somebody else started — systems that worked fine at first and have since outgrown their original shape. That work is less glamorous than a rewrite and usually a great deal cheaper.

What we build

Web
ASP.NET Core MVC applications
Data
SQL Server schema and performance
Commerce
Subscription billing and payments
Output
Generated PDF and reporting
Mobile
Android with .NET MAUI
Rescue
Applications that have outgrown themselves

Tested where it counts

Unit, integration and end-to-end suites across our estate — 274 test files and counting — concentrated on the logic that would cost a customer something if it broke. We are not interested in coverage as a number; we are interested in sleeping through deployments.

02 — Data engineering

Getting data into a shape you can build on

Most data problems are not analysis problems. They are loading problems, shape problems and consistency problems, and they do not go away after the first import.

1

Ingestion that expects to fail

Scheduled pipelines that handle the source being late, malformed, silently revised or simply absent. Retries, change detection, validation and an audit trail for every load, so that when a number moves you can say why.

2

Schema and query design at scale

We work routinely with tables in the hundreds of millions of rows, where the difference between a good and a bad execution plan is the difference between a product and a timeout. Indexing, partitioning and query tuning are design work, not something done afterwards.

3

Reference and geospatial data

Postcodes, coordinates, administrative geography, population and deprivation. We maintain our own UK postcode toolkit, so we know what it takes to keep reference data correct rather than merely present.

4

Keeping it current

A dataset loaded once is a demo. Ours run on monthly cycles, unattended, with dry-run modes and logs you can read after the fact. That is the part most projects underestimate.

03 — Hosting & operations

We run what we build

Our own products are live, paid for and depended on. That is a strong incentive against clever shortcuts, and it is the main thing we offer that a build-and-hand-over supplier cannot.

Azure, end to end

Compute, scheduled work, storage, telemetry and identity. Deployment and environments set up so that releasing is dull, which is the highest praise a deployment process can receive.

Observable in production

Structured logging, distributed tracing and real telemetry throughout. When something misbehaves at 2am we would rather read what happened than guess at it — and so would you.

Secure and current

The whole estate runs on .NET 10. We upgrade deliberately and stay close to the current release, because falling behind is a debt that compounds quietly and is paid all at once.

Cost and resilience by design

Decided up front rather than discovered on the first invoice. We would rather tell you what a thing will cost to run before it is built than explain the bill afterwards.

04 — Data analysis

From records to a number somebody can defend

Our own platforms exist to answer questions that carry consequences — is this area safe enough, is this vehicle a risk. The same discipline applies to your data: warehouse it properly, model it honestly, and make the answer something a person or an agent can rely on.

One platform, from raw source to answer

We work across the Microsoft data platform rather than at one end of it. Sources land and are staged, modelled into a warehouse designed for the questions people actually ask, and surfaced through Power BI semantic models that everything else — reports, exports and agents — can share. One definition of a measure, used everywhere.

That modelling stage is also where a dataset gets understood before anything is built on it. We profile it, find the gaps and outliers, and test whether a scoring model behaves the way it should. It is far cheaper to discover that data cannot support a question in a model than in production.

The open datasets we work with

What this covers

Platform
Microsoft Fabric and Azure
Warehousing
Dimensional models and incremental loads
BI
Power BI semantic models and reports
Scoring
Weighted models and national benchmarking
Agents
Grounded on governed data
Output
Reports, board packs and generated PDF

Warehousing

Dimensional models built around the questions a business actually asks, with incremental loading, history kept where history matters, and a layered path from raw landing to trusted output.

Microsoft Fabric

Lakehouse and warehouse workloads, pipelines and orchestration in one place, with storage and semantic layer joined up rather than stitched together across half a dozen services.

Business intelligence

Power BI semantic models, measures and reports, with access controlled at the row level so the same report can safely be handed to a board, a region and a single site.

Agent integration

Making your data answerable in natural language, grounded on the governed model rather than on a guess. An agent is only as trustworthy as the semantic layer beneath it — which is why we build that first.

A score nobody can interrogate is a score nobody should trust

Where we publish a score, we publish how it is calculated — sources, weightings and benchmarks. Clients working in safeguarding and duty of care have to show their reasoning to a governor, an inspector or a court. So should their suppliers.

How we work

Engineering practice

These are habits, not aspirations. They come from running our own software in production for years.

Layered by default

Domain models, data access, services and presentation are separate projects with real boundaries. It costs a little at the start and pays for itself many times over by year ten.

Tested where it counts

Unit, integration and end-to-end suites across the estate — 274 test files and counting. Concentrated on scoring logic, ingestion and anything a customer would notice breaking.

Observable in production

Structured logging, distributed tracing and real telemetry throughout, so a problem is something you read rather than something you reproduce.

Current, not legacy

The whole estate runs on .NET 10. We stay close to the current release, deliberately.

Methodology in the open

Where we publish a score, we publish how it is calculated. If our reasoning cannot survive being looked at, it should not be shipped.

Built to be handed over

Documented, conventional and readable. Nothing we write should require its author to be in the room.

Get in touch

Tell us what you are trying to build.

A dataset you cannot get value out of, an application that has outgrown its original shape, or something that needs building from nothing. We would be glad to hear about it.

info@meddalwedd.co.uk