allgree.com
Projects

The work, described as problems

Below is work we can name, with the problem each one was actually solving rather than a logo and an adjective. Some client work stays under NDA. For those we've written up the situation and how we approach it instead, further down the page. Some of it predates allgree, shipped by the same engineers under their own names, and some of those engagements are still running; each write-up says in what capacity.

Selected work

Products we designed, built, or took over, and what was hard about each.

FintechBuilt 0→1

RecoWealth

A research advisory platform taken from an idea to a product in market, the part of the advice that comes after 'buy'.

Next.jsTypeScriptNode.jsPostgreSQLRedisAWSGitHub Actions
GovTechBuilt 0→1

Permit Pro

Permit Pro, the parking permit platform from Park Loyalty in the US, replacing counter visits and paper books.

GoPostgreSQLRedisAWSTerraformDocker
Fintech

Marmin

A cloud e-invoicing platform that files compliant tax invoices across several countries from one integration.

Next.jsNode.jsTailwind CSSPostgreSQLRedisAWSDocker
Commerce

DotPe

Scan-Order-Pay: contactless ordering and payment from a QR code on the table.

Next.jsNode.jsRedisPostgreSQLAWSKubernetes
Payments

PayU: Offer Engine

A rules engine that resolves discounts and campaigns at checkout, in the checkout's latency budget.

Next.jsNode.jsRedisPostgreSQLKafkaAWSKubernetes
AI

OpenMic

A platform for AI voice agents that answer and place real phone calls, wired into the tools a business already runs.

Next.jsNode.jsTailwind CSSOpenAIDeepgramElevenLabsPostgreSQLRedisAWS
Marketplace

Yellacon

A mobile marketplace for US households to list and share private parking: driveways, garages, guest spots.

React NativeRedux ToolkitFirebaseGCP
Commerce

Estackk

A loyalty and commerce platform in two halves: the dashboard a merchant runs the business from, and the app their customers use at the counter.

ReactAnt DesignReduxReact NativeNode.jsPostgreSQLRedisAWS
Internal tools

Internal operations tools

Two internal mobile applications replacing the spreadsheets a team was running operations on.

React NativeReduxNode.jsPostgreSQLDocker

The work we can't name

The situations we get brought into most often, how we approach each one, and what you end up holding at the end. Written as approach, not as a result we'd need your trust to claim.

Data & scale

The database became the bottleneck

Queries that were fine at ten thousand rows are timing out at ten million. The obvious suggestion is a new database; the actual problem is usually three queries and a missing index.

PostgreSQLRedisClickHouseGo
How we approach it
  • Find the real hot paths from query logs rather than from opinion
  • Fix indexing and query shape first, since it's often enough on its own
  • Introduce a read model or cache only where the numbers justify it
  • Move the heavy work off the request path into jobs
What you end up with

A written before-and-after of the slow paths, and a migration plan that runs while the product stays up.

AI

The AI prototype needs to become a feature

It works in a notebook and demoed well. Nobody knows its real answer rate, what it costs per user, or what it does when it's wrong.

ClaudeOpenAIpgvectorLangGraphPython
How we approach it
  • Build an evaluation set from real examples and grade the current version honestly
  • Improve retrieval before touching prompts or models
  • Set a cost and latency budget, then find the cheapest model that passes
  • Define the fallback path and put the whole thing behind a flag
What you end up with

A feature with a measured answer rate, a cost ceiling, a defined behaviour when unsure, and a dashboard for both.

Integration

Two systems of record and a spreadsheet in between

A CRM, an internal tool, and someone reconciling them by hand every week. Everyone knows it's fragile; nobody has time to fix it.

TypeScriptPostgreSQLKafkaAWS
How we approach it
  • Map what actually flows between the systems, including the manual steps
  • Decide which system owns each field, because most of the mess is unowned data
  • Build a sync layer with retries, idempotency, and an audit trail
  • Alert on divergence instead of discovering it at month end
What you end up with

The manual reconciliation step disappears, and when something does fail there's a log that says what and when.

Performance

The app got slow and nobody noticed when

It feels sluggish on real devices but fine on the team's laptops. Everyone has a theory and no one has a measurement.

ReactNext.jsPlaywrightOpenTelemetry
How we approach it
  • Measure on representative devices and real payload sizes, not a local build
  • Separate server time, transfer size, and render cost before optimising
  • Fix the largest contributor, re-measure, repeat, with no speculative rewrites
  • Add a performance budget to CI so it can't drift back
What you end up with

Numbers before and after on the journeys that matter, and a check that fails the build when they regress.

Hardening

First enterprise security review is coming

A large customer has sent a security questionnaire and the answers are currently 'we think so'.

TerraformAWSSnykSentry
How we approach it
  • Review access control and find where authorisation is assumed rather than checked
  • Get secrets out of code and into managed storage with rotation
  • Add audit logging on the actions a reviewer will ask about
  • Rehearse a restore from backup, because an untested backup isn't one
What you end up with

The questionnaire answerable with specifics, and the gaps closed before somebody else finds them.

Modernisation

A codebase nobody wants to touch

It works, it's business-critical, and the people who wrote it have left. Every change is quoted defensively because nobody can predict the blast radius.

TypeScriptPythonDockerGitHub Actions
How we approach it
  • Add tests around the parts that change most often: safety before surgery
  • Carve out the highest-churn area first, leave the stable core alone
  • Run old and new side by side and compare outputs before switching over
  • Document as we learn, so the knowledge stops being tribal
What you end up with

Changes stop being scary in the areas that matter, without a rewrite nobody could afford.

Recognise one of these?

Tell us which one is closest and where yours differs. That's usually enough for us to say what the first two weeks would look like.