Medellín, Colombia · UTC−5 · Remote operation across Latin America and the United States hello@quarl.co EN · ES
quarl ES

Custom software development

Ten years building systems that ended up in production with real users: loyalty platforms, marketplaces, healthcare, e-commerce and financial-sector applications.

2M+ users on the largest platform we built · 10 years of software engineering · 5 sectors: loyalty, healthcare, proptech, retail and financial

  • TypeScript
  • NestJS
  • React
  • Next.js
  • Python
  • .NET Core
  • PostgreSQL
  • Azure
  • AWS
Contact us Ways of working Free, no pitch · the proposal lands in 48 hours

Built on

  • TypeScript
  • React
  • Node.js
  • NestJS
  • Python
  • PostgreSQL
  • Docker
  • GitHub Actions
  • Sentry

An engineering team that has already been on the other side.

Ninety seconds: who we are, how we work and what you get at the end.

How it goes from the call to the handover

01

Discovery with whoever runs the process

Over video, with the people doing the work by hand today. We work from Medellín with companies across Colombia, and remotely with teams in the United States and the rest of Latin America: what we need to see is the screen, not the office.

02

Proposal in 48 hours, already split into phases

Each phase with its own scope, price and date. The client sees where they can stop before signing the first one, not after. If the scope changes along the way, it gets quoted and approved before anyone builds it: it never shows up as a new number on invoicing day.

03

Construction with weekly deliveries

Every week there is something you can open and use, even if it still does little. It is the only way a drift shows up in time.

04

Handover, documentation and 90 days of warranty

The code, the infrastructure and the credentials have been in the company name since the start. If something does not do what the proposal says, it gets fixed at no cost.

01

What we build

Typical scopes

We build with AI assistants — Claude in the editor and in review — and it shows in the timeline, not in the result: the code is reviewed the same, the tests run the same, and what ships holds up the same.

What we build Internal web applications

The five failures

What we almost always find in a project that got out of hand

If any of these sound familiar, they are fixable, and it is almost always cheaper than starting over.

  • It has been at 90% for three months

    That 90% was measured on finished screens, and what is left are not screens: they are the exceptions living inside all the previous ones. Each one sends the team back into code everyone considered closed. We fix it by measuring progress in complete end-to-end cases, not in delivered screens.

  • Nobody can deploy without the person who left

    The steps live in someone’s head, the credentials on their laptop, and the deploy happens by hand on a Friday afternoon. We fix it by moving the deploy into the repository, so it becomes a command anyone on the team can run.

  • The database models the screens, not the business

    It was designed from the form inwards, so a single business rule ends up spread across twenty places and changing it means touching all of them. It is the most expensive thing to fix late and the cheapest to get right at the start.

  • Every change breaks something else

    With no automated tests nobody dares touch what already works, so the team builds around it instead of inside it. The system grows on the outside and hardens on the inside, until adding one field costs two weeks.

  • The vendor holds the keys

    The repository, the domain or the cloud account ended up in the name of whoever built it, and that surfaces the day you want to change teams. Caught early it takes a day; caught late it is an awkward negotiation.

Previous work

Systems in production

  • Real estate marketplaceProptech · United States

    Search homes by area on the map, filter by several criteria at once, message the landlord live and pay rent without leaving the platform. · More than 10,000 tenants and landlords

  • Full e-commerce

    Catalog, cart, checkout and order tracking, on web and mobile, over a microservices API built from scratch. · Zero to production in six months, launched on schedule

  • Legacy modernization in financial services

    Critical queries rewritten and bottlenecks removed in modules already running, without replacing the system. · On inherited code, inside the client team

A RAG system in production: three years, two million users

We built and operated the assistant for a loyalty platform serving more than two million active users across ten countries.

We built the full pipeline: document ingestion and normalization, chunking, embedding generation, vector store on Azure AI Search and Pinecone, and retrieval with grounded generation on LangChain.

We held it above 99% availability for three years.

RAG systems →

Frequently asked questions

01

How do you decide between custom and buying a product?

On the first call we review what you need and what exists on the market. If a product covers 80%, we tell you which one and how to adapt the rest. We would rather lose a large project than build you something you will not want to maintain. Custom is justified when the process is your advantage, when systems do not talk, when licensing no longer works, or when there is a real regulatory constraint.

02

How is it quoted?

Price is driven by the complexity of your operation rather than the number of screens: how many processes have to be modelled, how many systems it integrates with, and what availability or regulatory requirements apply. The proposal arrives with fixed scope, price and date within 48 hours of the call, and that call is free.

03

How do you handle large projects?

Split into phases with independent deliverables. You can stop between phases, and we have to demonstrate value in each one. It is more demanding for us and far less risky for you than a six-month contract with delivery at the end.

04

What if scope changes?

It is quoted separately and approved before execution. It never appears as a surprise on the final invoice. Scope changes are normal in any real project; what is not normal is finding out at payment time.

05

Do we own the code?

Yes, always. Code, documentation, infrastructure and credentials stay in your company’s name. We include 90 days of warranty after handover — if something does not do what the proposal says, it gets fixed at no cost — and after that the operations contract is optional and quoted separately. We do not work with arrangements where the client depends on the vendor to keep operating.

06

Do you work with our internal team?

Yes. We can take the full project, join your team as reinforcement, or pair with your engineers with the explicit goal of leaving capability behind. If you already have technical people, the last format usually delivers the most value over the medium term.

07

What stack do you use and why?

TypeScript with Node.js and NestJS for backend, React and Next.js for web, Python when there is a data or AI component, .NET Core when the client environment calls for it, PostgreSQL as the default database. The choice is justified by the case, not by preference — and if your team already works with something, we respect it.

08

Do you include AI in software projects?

When it adds value, yes, and with the same measurement discipline we apply to purely AI projects. What we do not do is add AI because it is fashionable: if a well-built query solves the problem, that is the right solution and it costs a fraction.

Fifteen minutes. A concrete answer.

It gets fixed, it gets built, or it is not worth it. And if the diagnostic does not reach three actionable findings, it is not charged.

Message on WhatsApp