Since 2019

Our experience in action

Every project is a footprint of what we build alongside the people who trust us. Scroll down and walk through them one by one: the challenge, the solution and the architecture behind each.

01 / 12Our own product · Multi-site operations platform

CheckBiz360

The challenge

A company with several branches knows what each one bills, but not how it works: who complies, what actually got done, which paperwork is signed and what each site really costs. That information exists, scattered across systems that don't talk to each other, and by the time it reaches management it is already history.

The solution

A platform on two pillars. Compliance: time records with timestamping, immutability and traceability, HR documentation with read receipts, and tasks backed by evidence. Intelligence: reliability and efficiency indices, behavior patterns per employee, real cost per branch and anomaly detection.

FlutterRiverpodFirebaseNode.js · TypeScriptNext.jsMulti-tenantStripe
CheckBiz360: the analytics dashboard on a desktop monitor and the clock-in app on a phone
Lugh: the service search site on a desktop monitor and the booking app on a phone
02 / 12Services marketplace · From zero to launch

Lugh

The challenge

Hiring a service for your home is still a blind exchange of messages: you ask over WhatsApp, you wait, and price and schedule do not show up until the end. Whoever is looking cannot compare, and whoever is offering loses hours closing appointments.

The solution

A marketplace that puts price, duration and availability up front: you compare and book from the app, with no negotiation first. We defined the flows, the design system and the content architecture, with a landing page rendered at build time: flat HTML, no hydration cost and SEO ready from day one.

ViteBuild-time renderingGSAPDesign systemTechnical SEO
03 / 12Internal back office · Fleet analytics

Entregalia

The challenge

Running a fleet of couriers means depending on the data each delivery platform returns, in different formats and with different cut-offs. Without a common view there is no way to know which city performs, which contract is being met or where money is being lost.

The solution

An analytics platform that syncs and normalizes each courier's data and consolidates it by day, week, city and company. Every sync is logged with its result, so any figure can always be traced back to the run that produced it.

Node.jsMongoDBScheduled syncAggregated metrics
Entregalia: the fleet dashboard on desktop and the courier app on a phone
SilverBack Training
04 / 12Training app · iOS and Android

SilverBack Training

The challenge

A training method with a following, scattered across spreadsheets, WhatsApp and loose videos. The coach was the bottleneck: growing meant more of his hours, not more students.

The solution

A dedicated iOS and Android app with sequential programs by level, a video library covering the technique for every exercise, progress tracking and recurring subscriptions. The method delivers itself and the coach stops being the middleman.

iOSAndroidFirebaseSubscriptionsVideoBack office
05 / 12Healthcare · Patient area

Clínica Baviera

The challenge

In a large clinic network, the patient calls for everything: confirming an appointment, requesting a report, retrieving a consent form. Every call is clinical staff time spent acting as a middleman with a system the patient cannot consult.

The solution

A patient area on web and app: appointments, downloadable clinical documentation and protected access with biometrics. Documents open inside the application itself, without leaving for an external viewer, and delivery runs through three environments with continuous integration.

FlutterReactAzure Static Web AppsBiometricsPDFCI/CD
Clínica Baviera
FGCSIC
06 / 12Science and innovation · Institutional portal

FGCSIC

The challenge

A foundation running three very different lines —scientific talent, innovation and investment— with more than a dozen programs of its own underneath, each with its own call, deadline and audience. Telling all of it in one place without losing the visitor, and in two languages.

The solution

A bilingual institutional portal with a custom theme: each line with its own entry point, the programs as cards in a single family, a dedicated content type for calls and events with their deadlines, and the transparency and whistleblowing obligations built into the navigation rather than hung off the footer.

WordPressCustom themeWPML · ES/ENCalls for applicationsTechnical SEO
07 / 12Certification · Campus and app

GROUND

The challenge

A movement method that certifies instructors all over the world and was running on disconnected tools: the course on one side, the students on another, the events on the website, and no way for someone in another city to find a certified instructor.

The solution

A complete ecosystem: an online campus for the certification, management of editions and students by group, an agenda of events and workshops, a directory of where to train filterable by country and city, and a dedicated training app with three separate environments.

FlutterFirebaseLMSMulti-environmentGeographic directory
GROUND
Moana Deals
08 / 12Real estate · Deal platform

Moana Deals

The challenge

In the buying and selling of real estate assets the information does not flow: the seller does not reach the right investors, the investor does not find deals in any order, and the documentation of each transaction circulates by email, with no control over who sees what.

The solution

A platform that brings the three parties —who sells, who invests and who collaborates— into the same circuit: asset listing, document preparation, virtual data room and access tiered by profile, with a pricing model tied to closing.

WordPressRoles and permissionsListingsData room
09 / 12Industry · Training campus

Molecor

The challenge

Proprietary industrial technology, factories and distributors in several countries, and technical training that depended on someone travelling to deliver it. The knowledge lived in the people, not in a place you could go to.

The solution

A dedicated training campus in Spanish, English and Turkish, with structured courses, bulk student enrollment and organization by group to separate teams, subsidiaries and distributors. Training stops depending on anyone's calendar.

LMSMulti-language ES · EN · TRGroup managementBulk enrollmentCloud
Molecor
JabSolutions: the company site on desktop and on a phone
10 / 12Brand · From zero to digital presence

JAB Solutions

The challenge

An excavation and heavy machinery company opening a second line of business, lubricant distribution, with nothing digital behind it: no website, no Google listing, no browsable catalog. And with a name —Excavaciones JAB— that no longer said what it did.

The solution

Diagnosis and brand building from scratch: a brand platform with the two lines under one parent, a visual system and color identity, messaging that positions the distribution service above the product being distributed, and the minimum digital assets to be findable, credible and contactable.

Brand strategyVisual identityMVP websiteCatalogGoogle Business ProfileUTM tracking
11 / 12Booking platform · Online payment

ITV A-42

The challenge

A vehicle inspection station lives on appointments, and giving them out by phone costs staff, fills slots badly and collects nothing up front. Every call ties up someone at the station and every empty slot is lane capacity lost.

The solution

A complete booking and payment platform: the customer picks the inspection type, sees the price, books a slot and pays online; they can cancel without calling. Behind it, a back office where the station manages prices, bookings, users, email templates and contacts.

Next.js 15React 19MongoDBRedsysStripeNextAuthSocket.IOBack office
ITV A-42: the appointment booking on desktop and on a phone
JCHammer: the technical catalogue on desktop and on a phone
12 / 12Industry · Catalog and dealers

JCHammer

The challenge

A manufacturer of professional tools that does not sell to the public but through authorized dealers. Its site had to convince the professional that they want the tool and then, right away, take them to the right dealer, with no cart in between.

The solution

A technical catalog site with a custom theme: each tool with its specifications and its options, the brand story that carries the engineering argument, and the dealer network as the destination of all navigation.

WordPressCustom themeTechnical catalogDealer network
Next footprint

Shall we build yours?

Tell us where you are and how far you want to go. We answer in under 24 hours.

hola@encodebiz.com · +34 623 519 591
01 / 12Our own product · Multi-site operations platform

CheckBiz360

CheckBiz360 is our own product: an operations platform for multi-branch companies, built on two pillars. Compliance, so that what the law requires is covered and defensible. Intelligence, so that the same daily operation becomes a basis for management decisions.

The starting point

Time tracking is the way in, not the product. It is what forces a company to install something, which is why the market is full of tools that record hours and stop there. The problem we cared about starts right after that.

An organization with several branches knows what each one bills and does not know how it works. The pain points we found, repeated across every client we spoke to:

  • Records that are hard to defend: unvalidated clock-ins and frequent manual corrections, which turn any inspection into a manual reconstruction.
  • HR documentation —payslips, contracts— sent by email, with no read receipt and no way to prove it arrived.
  • Operational tasks taken as done because someone says so, with no evidence that they were carried out.
  • Branches that are impossible to compare: each one «seems» to work well because there are no homogeneous metrics and no real cost per site.
  • Decisions about people —promotions, extra staffing, shift changes— made on impressions, with no measured pattern behind them.
  • Anomalies spotted only once they show up in the month's results.

The goal

That daily operations are recorded once and serve both purposes: complying and deciding. Attendance, execution and documentation come in through the employee app as part of their day; they come out through the dashboard as indices that can be compared across branches.

The operational intelligence module is what closes the loop, and what makes this more than a time clock. It builds a reliability index and an operational efficiency index —real cost against historical—, constructs each employee's behavior pattern, which is what beats a one-off report, and on top of it produces an operational assessment with a diagnosis and a promotion-candidate signal. Anomaly detection warns while there is still time to correct.

The design constraint was that none of this could ask anything extra of the person doing the work. Clocking in had to stay a two-second gesture.

What the platform does

The functional scope is split into modules that share the same entity-and-branch structure:

  • Time tracking: three validation layers —geofence, schedule and device—, clock-in from the app, remotely with its own time zone or by QR with a token and supervisor validation; breaks with automatic deduction, manual shifts, and a review and approval flow.
  • Tasks: creation with custom fields, individual or bulk assignment, photo and video evidence, priorities and deadlines, validation with acceptance or reasoned rejection, and a scoring scale that feeds the worker's efficiency index.
  • Document management: payslips and contracts with their monthly cycle and legal retention, private documents with role-based visibility, read receipts and a push notification that opens the document directly.
  • Operational intelligence: operations dashboard with the reliability and efficiency indices, behavior patterns, cost analysis with per-branch rates and anomaly detection.
  • Entity and branches: tax details and time zone at entity level, propagated to each site; geofence, breaks, tolerance and rate per branch; and a global view that compares them all.
  • Employees and security: four roles —worker, supervisor, manager and owner— with a permission matrix, two-factor authentication, biometrics, trusted devices and multi-entity access with a switcher.
  • Compliance: time records under Spain's RDL 8/2019 with timestamping, immutability and traceability; data processing in line with GDPR; and reports ready to present in an inspection.

The challenges

The first was trust in the data. A clock-in works as evidence only if it can be reconstructed: where it happened, on which device, at what real time and what was changed afterwards. Hence the three validation layers and an immutable history where every change leaves a trace, so a specific working day can be proven in seconds.

The second was analysis. Comparing is not putting numbers side by side: you have to normalize different realities —shifts, calendars, team sizes, per-site rates— before the comparison means anything. And the interesting signals are not in a single day but in sustained change, so the engine works on patterns rather than isolated incidents.

The third was the organizational structure. Multi-entity and multi-branch at once forces you to decide what is configured at the top and propagated, what is adjusted per site, and what happens to historical records when a branch is deactivated. That decision shapes the entire data model.

The fourth was architectural. A product that is at once a field app, a document manager, a management dashboard and a subscription platform does not fit in a single service without becoming fragile.

How it is built

The mobile app is Flutter with Riverpod for state and injection, GoRouter for declarative navigation and Freezed for immutable models. It leans on Firebase for authentication, Firestore, storage, notifications and Crashlytics, and on Geolocator and Google Maps for location validation.

Behind it there is a monorepo of microservices in Node and TypeScript, with each domain in its own service —clock-in, sync, analytics, reports, tasks, documents and sales— on top of a shared common package. That way the intelligence layer can evolve and deploy without touching the one that records, which is the one that cannot afford a failure.

The management dashboard and the SaaS layer are Next.js with React 19, with Firebase Admin on the server and Stripe for subscriptions.

02 / 12Services marketplace · From zero to launch

Lugh

Lugh connects people looking for an everyday service with professionals ready to provide it, with 18 active categories in Madrid. The project went from concept to production with us.

The starting point

The idea existed and had personality, but no digital translation. Before scaling anything it had to become a product you understand at first glance, because in a services marketplace the friction of the first visit is the whole business.

The pain in this sector is well known: the price is opaque until someone answers, availability is invisible, and both sides end up managing everything over messaging. Nobody can compare and everyone loses time.

The goal

That the decision could be made before talking to anyone. Price, duration and schedules visible up front, comparable across professionals, and direct booking from the app. Everything else in the product was organized around that rule.

In parallel, acquisition had to work from day one: a marketplace lives on searches with local intent, and that requires the landing page to be fast and readable for a crawler.

The challenges

Defining the content model so that 18 categories with very different realities would fit the same page without any of them feeling forced, and so that adding the nineteenth would not mean rebuilding anything.

The other challenge was performance. A landing page with animation and personality usually gets paid for in client-side JavaScript, and that penalizes exactly where it hurts most: the first load from a search result.

How it is built

The landing page is written as components, in section modules, but rendered to HTML at build time. What gets served is a flat document with all the content inside before a single line of JavaScript runs: no hydration cost and SEO intact.

All editorial content lives apart from the markup, in its own data layer, so the team changes copy, categories or areas without touching components. On top of that, a system of brand tokens —typography, color, spacing— keeps everything coherent as the product grows.

Client-side behavior is deliberately small: navigation, an accessible FAQ accordion, GSAP animations and the search simulation on the phone in the hero.

ViteBuild-time renderingGSAPDesign systemTechnical SEO
03 / 12Internal back office · Fleet analytics

Entregalia

Entregalia is the analytics layer of a delivery operation: it takes each courier's activity data, normalizes it and turns it into metrics that can be compared by city, company and period.

The starting point

A delivery fleet works for several platforms at once, and each one hands over its information its own way. The operations team ended up rebuilding by hand, in spreadsheets, something that should have been a query.

The cost of that is not only time: decisions —where to add people, which contract to review, which city does not add up— were made late and on data nobody could verify.

The goal

A single source of truth about fleet activity, updated on its own, in which every figure is traceable. Not a pretty dashboard on top of dubious data, but the opposite: reliability of the data first, then the reading.

The challenges

Syncing with external sources is the fragile part of a system like this: they fail, return partial data, repeat records or change format without warning. A process that just writes down whatever it receives ends up quietly corrupting the history.

The second challenge was identity. The same courier shows up with different keys depending on the source, and consolidating metrics over badly resolved identities produces numbers that look right and are not.

The third was the shape of the queries. Operations' real questions cross courier, city, company and period in combinations that change every week.

How it is built

The core is a Node service on MongoDB with three pieces: the courier register, the consolidated metrics and the sync history. That third piece is what holds up trust in the system: every run leaves a record of when it ran and how it ended, so when a number looks odd you can go back to its origin instead of arguing about it.

Courier identity is resolved with a unique key of our own, independent of whatever each source uses, and the register keeps its sync status so the cases that need manual intervention can be isolated.

Metrics are stored already aggregated by courier and day, with the week and the city code materialized alongside the record. The indexes are built for the combinations operations actually queries, so the usual questions are answered without scanning the whole collection.

Node.jsMongoDBScheduled syncAggregated metrics
04 / 12Training app · iOS and Android

SilverBack Training

SilverBack Training (SBT) is Samuel Torres' training platform: up to ten complete, sequential programs with daily planning and videos explaining the technique, plus a premium tier with its own video content.

The starting point

The method worked and had an audience, but it was delivered by hand. Routines lived in spreadsheets, questions in messaging apps and videos in loose links that had to be sent again to every new student.

That model has a very clear ceiling: each extra student costs the coach hours. And it makes the method itself fragile, because the progression —what comes after what— lives in one person's head instead of in the product.

The goal

Turn the method into a product. Get the progression coded into the app, so the student knows what today holds without asking, and turn income from per-session into recurring.

With one condition: the technique could not get lost along the way. In this kind of training, doing a movement badly is worse than not doing it, so the explanatory video could not be an extra — it had to sit right next to every exercise.

The challenges

Modeling the progression came first. Sequential programs, with levels, that can be combined with each other: the data model had to let a student be at different points in several programs at once without tangling the tracking.

The second challenge was video. A library that grows constantly has to be served fast on mobile and on limited data, and the delivery cost cannot scale with every new student.

The third was the subscription. Two tiers, two stores —App Store and Google Play— and an access state that has to be the same on both platforms and in the back office.

How it is built

A native app published on the App Store and Google Play, with a decoupled backend on Firebase: the app and the dashboard share the same data source, so publishing a new program or fixing a routine reaches everyone without shipping a release.

Content management was solved with a custom back office on WordPress, so the team publishes and edits without depending on us. The app consumes the content; the back office produces it.

Premium access is resolved as a state of the user, not as a property of the store, so the same student keeps their tier when switching device or platform.

05 / 12Healthcare · Patient area

Clínica Baviera

Clínica Baviera's patient area, on web and mobile app: appointment lookup, access to your own clinical documentation and report downloads, with biometric authentication on the device.

The starting point

The digital touchpoints were spread across legacy systems, with different teams maintaining each piece. For the patient that meant almost any task ended in a phone call.

The cost sits on both ends of the line: the patient who cannot resolve something simple on their own schedule, and clinic staff spending time looking up and reading out loud data that already existed in a system.

The goal

Give the patient direct access to what is theirs —their appointments and their documents— without opening a new support channel along the way. In a healthcare environment that means access has to be simple and strict at the same time: easy to use daily, impossible to use as someone else.

The challenges

The first was the clinical documentation. These are PDFs, sometimes heavy, that the patient needs to view, save and sometimes share with another professional. Handing them over to the operating system's external viewer broke the experience and took the document out of the secure context of the application.

The second was authentication. Asking for full credentials on every open makes people give up; asking for nothing is unacceptable with health data.

The third was process. A patient area in production is not deployed blind: any change has to be verifiable beforehand against data that is not real.

How it is built

The mobile app is Flutter, with PDF rendering built into the app itself, an appointment calendar, camera and file picker for submitting documentation, and biometric access through the device's local authentication. Nothing forces you out of the application.

The web area is React with Redux, with its own PDF viewer and generator, and is published as a static app on Azure Static Web Apps.

Delivery runs through three environments —development, staging and production—, each with its own continuous integration pipeline and its own domain, with branch promotion as the only route to production. We also built the consent form that goes with the patient area.

FlutterReactAzure Static Web AppsBiometricsPDFCI/CD
06 / 12Science and innovation · Institutional portal

FGCSIC

Fundación General CSIC is a private non-profit created in 2008 by the CSIC and its founding trustees. It promotes public-private collaboration in research and innovation and puts to work the knowledge generated at the CSIC and other public R&D bodies.

The starting point

FGCSIC does not do one single thing. It runs three lines —Science and Talent, Innovation, and VBB Investment— and under each one there are programs with their own name and identity: ComFuturo, Proyectos Cero, InspiraTech, Buenas Prácticas Científicas, enValor, Nexofy, Bosque Innova, competitive intelligence, support for technology-based companies.

That is the real problem with a portal like this: each program has its own audience, its own calendar and its own call, but they all share an institution. Solve each one as a standalone page and the site becomes a disconnected directory; make them too uniform and none of them is understood.

On top of that the audience is twofold —researchers on one side, companies on the other— and the foundation has transparency and whistleblowing obligations that cannot be tucked away.

The goal

That someone arriving in search of a specific call finds it, and that someone arriving without knowing what the foundation is understands its three lines in one scroll. Both entry points had to work without competing with each other.

And that the team could open a new call or publish an event without asking for a deployment: in a foundation that lives on deadlines, content expires on its own.

The challenges

The content model came first. The programs are similar enough to share a template and different enough that a rigid template would deform them. It was solved by treating them as a family with a common structure and optional blocks, rather than as independent pages.

Calls and events are content with an expiry date, and they need their own type: deadlines, open or closed status, and an archive that stays consultable afterwards. It is not a blog post with a date on top.

Bilingual did not mean translating the interface: the English version has its own content path, with what matters to an international audience, and that means managing equivalences between languages and declaring the alternates properly for search engines.

Accessibility and the longevity of the URLs, which in a public institution are not an extra: links to calls are cited in official documents and have to keep working years later.

How it is built

WordPress with a custom theme, not a commercial template: the structure of lines, programs and calls needed specific components that no template solved without a fight.

The bilingual side runs on WPML, with the Spanish and English pair declared through hreflang —x-default included— so each search engine serves the right version and the two do not compete with each other in the results.

Calls and events live in their own content type, with the deadline as a first-class field, and the search and the news and resources sections feed from there. Transparency and the whistleblowing channel are in the main navigation, which is where they have to be.

WordPressCustom themeWPML · ES/ENCalls for applicationsTechnical SEO
07 / 12Certification · Campus and app

GROUND

GROUND is a bodyweight training method that certifies instructors in eight-week editions. In its first three editions it passed 200 certified instructors teaching the method around the world.

The starting point

Certifying instructors in several countries at once breaks any improvised setup. The training has a calendar and cohorts; the students have to progress in order; in-person events move from city to city; and instructors who are already certified need to appear somewhere findable.

Without a platform behind it, every new edition is run as if it were the first, and the accumulated value —the instructor network— is not recorded anywhere.

The goal

That an edition of the certification could be opened, taught and closed without technical intervention, and that on finishing, the instructor would become part of a public, searchable directory.

And that the method could be practiced between editions from anywhere, which meant delivering it as a training app too.

The challenges

The first was cohort management. An eight-week certification is not an always-open course: students start together, progress on a calendar and their access to the content depends on the edition they are in. That requires separating the groups and controlling who sees what, and when.

The second was enrollment. Each edition brings in many students at once, and adding them by hand is not viable.

The third was the directory. «Where to train» has to be filterable by country and city and stay up to date as new instructors are certified, without turning into a list someone edits by hand.

The fourth, the app: publishing on two stores while development continues means being able to test without touching real student data.

How it is built

The campus is an online learning platform with group management, which is the piece that allows each edition to be treated as a cohort with its own access to the content, plus bulk student enrollment by import so that opening an edition is not manual work.

The training app is Flutter with Firebase, built with three completely separate environments —development, staging and production—, each with its own Firebase project and its own app identifier. It can be tested in real conditions without risk to production data.

The public site holds the agenda of events and workshops and the instructor directory filterable by country and city, fed by the certification data.

08 / 12Real estate · Deal platform

Moana Deals

Moana Deals is a real estate transaction platform: it makes it possible to find, analyze and close deals in a single environment, with an investor network, document preparation and virtual data rooms.

The starting point

A real estate deal moves a lot of sensitive documentation between people who do not know each other. In practice that was handled by email: attachments forwarded on, overlapping versions and no traceability of who accessed what.

On top of that, the two ends of the market were not meeting in any orderly way. The seller depended on their personal network to reach investors and the investor received deals with no criteria and no common format.

The goal

Put the three figures in the process —seller, buyer and partner— inside the same circuit, each one seeing exactly what corresponds to them, and get the documentation out of email and into a controlled space.

The challenges

Access control was the backbone of the project. Having registered users is not enough: the information about an asset opens up in layers, and who can see the full documentation depends on the point the deal has reached. The permission model shapes everything else.

The second challenge was the asset record. The properties listed are very different from one another and the buyer needs to compare them, so the record had to be rigid enough to allow comparison and flexible enough not to leave out what is particular to each deal.

The third, that the platform had to be operable by a business team, not a development one: listing an asset or opening a data room cannot require a deployment.

How it is built

On WordPress, using its roles system as the basis for access control and extending it for the three business roles, so the team administers users and deals from a dashboard they already know.

The asset record was solved with a custom field model, common to all listings, which is what makes the filtered search and the comparison between opportunities possible.

Page building was left in the team's hands with a visual builder, so that new campaigns and sections do not depend on us.

09 / 12Industry · Training campus

Molecor

Molecor develops and manufactures oriented PVC pipe technology, with an industrial presence in several markets. The training campus takes its technical knowledge to teams, subsidiaries and distributors without relying on in-person training.

The starting point

An industrial company with technology of its own has a transmission problem: installing and maintaining its product correctly requires specific training, and that training travelled with the people who delivered it.

With several countries involved, that means impossible calendars, content told differently depending on who explains it, and no way to know who has received what.

The goal

A campus where the technical content was structured as training —with order, progression and a record of who has completed it— and available in each market's language.

And that day-to-day operation, which in a corporate campus is mostly enrolling people and organizing them, would not require manual work for every student.

The challenges

Multi-language came first, and it was not only translating the interface: Spanish, English and Turkish coexist with training content specific to each market, so the platform has to serve different versions of the campus on a shared base.

The second was segmentation. A factory employee, a subsidiary and an external distributor should not see the same catalog, and that separation had to be manageable from the dashboard, without touching code.

The third was onboarding students: the groups come in batches, with their data already in the company systems, and enrolling them one by one was not viable.

How it is built

An online learning platform on WordPress, with the courses, lessons and assessment module at the core and a group layer on top that resolves who gets access to which catalog.

The multi-language rollout was organized as per-market installations —Spanish, English and Turkish— on a common base of theme and functionality, so each market can have its own content without them evolving separately.

Onboarding students was solved with bulk import from files, metadata included, and user synchronization against the company identity system, so that enrollment is not manual work repeated every edition.

LMSMulti-language ES · EN · TRGroup managementBulk enrollmentCloud
10 / 12Brand · From zero to digital presence

JAB Solutions

JAB Solutions is the parent brand that organizes two different businesses —excavation and construction services, and industrial lubricant distribution— under a single promise. The project started with the diagnosis, before writing a line of code.

The starting point

The company worked and did not exist digitally. The initial diagnosis found six gaps that fed each other:

  • Digital invisibility: no website, no Google listing, no social profiles or content.
  • A confused proposition: the name «Excavaciones» did not reflect the move into distribution.
  • Product dependency: the risk of communicating the brands being distributed instead of trust as a distributor.
  • Commercial friction: no browsable catalog and no quick quoting flow.
  • No social proof: cases, photos and reviews were missing.
  • No data: no measurement of leads, channels or cost per opportunity.

The goal

Build a credible, memorable brand that represented the distribution service —advice, availability, speed, after-sales— and did not depend on the product brands. The promise was set in three words: availability, technical advice and fast response.

In parallel, the digital goal was deliberately modest and measurable: to be findable, credible and contactable. Nothing more, and none of it half-done.

The challenges

The brand challenge was holding two very different lines —construction and distribution— without the parent turning generic or either one being subordinated. It was solved with a parent brand and secondary versions for each line.

The color identity had to say both things at once: an industrial orange for strength, machinery and action; a professional blue for the reliability and the technical vocation of the distribution arm; and a neutral to hold both without noise.

The digital challenge was one of sequence. On a contained budget, order matters: findability and trust first, paid acquisition next, and only scale coverage when the actual logistics can serve it.

How it was solved

A single-page MVP website, extendable in blocks: proposition and call to quote at the top, services block, distribution block with a catalog by brand, viscosity and application, the transition from Excavaciones JAB to JAB Solutions, cases and contact.

Around it, the assets that get that site visited: a Google Business Profile listing with categories, hours and services; a WhatsApp Business profile with catalog and quick replies; a downloadable PDF catalog with usage sheets; and a presence on social media.

And underneath, measurement from day one: campaign tagging, form conversions and WhatsApp clicks attributed by channel. Paid acquisition is built on top of that, starting with the immediate operating area and opening coverage in phases only when the cost per opportunity and the logistics capacity allow it.

Brand strategyVisual identityMVP websiteCatalogGoogle Business ProfileUTM tracking
11 / 12Booking platform · Online payment

ITV A-42

ITV A-42 is a vehicle inspection station next to exit 59 of the A-42, in Olías del Rey (Toledo), with over 2,500 m² of facilities and two inspection lanes. We built its appointment and online payment platform, along with its full back office.

The starting point

The business of an inspection station is lane capacity per time slot. When the appointment is given by phone three things happen at once: it consumes staff time that should be on the lane, the calendar fills unevenly and there is no payment commitment, so no-shows are free.

On top of that the price depends on the type of vehicle and inspection, and explaining it over the phone is slow and error-prone.

The goal

That the full cycle —check the price, pick a slot, pay, receive confirmation and be able to cancel— would happen without anyone at the station intervening, and that the team could change prices, hours or email copy without asking us for a deployment.

The challenges

Payment was the critical point. Collecting online in Spain means integrating the standard bank gateway, and a redirected gateway is confirmed by the bank's notification, not when the user returns to the site: if the booking depends on the browser coming back, payments are lost and appointments get duplicated. Confirmation had to hang off the bank's notification, not the user's journey. And with the refund accounted for from the start, because a cancellation with money already taken is the norm, not the exception.

The second challenge was calendar concurrency. Two people looking at the same slot at once is the usual case in the good time bands, and a slot sold twice gets paid for at the counter.

The third was the integration with the station's own system, which speaks a classic web services protocol. The new platform had to get along with what was already there instead of replacing it.

The fourth, that almost all the operational content —prices, slots, emails— changes often and could not live in the code.

How it is built

Next.js 15 with React 19 on MongoDB, with session authentication for the management area and internationalization of the copy from the start.

Payment is handled by the Spanish bank gateway and its notification, payment and refund circuit, with the booking confirmed against the bank's notification. It coexists with an alternative card integration for the remaining cases.

The calendar updates live over sockets, so the availability one user sees reflects what another has just booked. Location relies on an embedded map, and communication with the customer on a system of email templates editable from the dashboard.

The back office covers the whole operation: status dashboard, bookings and their orders, rates, users with creation and editing, email templates, newsletter and a contact inbox. Cancelling an appointment is public and requires no account, which is how people expect to be able to cancel.

Next.js 15React 19MongoDBRedsysStripeNextAuthSocket.IOBack office
12 / 12Industry · Catalog and dealers

JCHammer

JCHammer has manufactured professional roofing tools since 2003 —magnetic hammer, magnetic hatchet, cutting roller, double-head hammer, cab mount— born from its inventor's real experience on site.

The starting point

The product has a strong argument: balance, ergonomics and structural stability, which translate into more control and less fatigue over a day on a roof. But that argument is understood in the hand, not in a photo.

And there is a business-model constraint that shapes the whole site: sales go through authorized dealers. The site does not close the deal, so it cannot be measured in carts or optimized like a store.

The goal

That a professional understands why this tool is different and ends up at the dealer that serves them. All the navigation was designed pointing at that destination, rather than at a buy button that does not exist.

The challenges

Communicating a physical advantage through digital means. The difference is in the use, so the product page had to lean on concrete specifications, options and photography in a real working context, not on adjectives.

The second challenge was the absence of a checkout. With no purchase conversion, the structure of the site has to be built to carry the user to the distribution network without it feeling like a dead end.

The third, that the catalog grows: the tool family expands and each one brings its variants, so adding a product could not mean rebuilding templates.

How it is built

WordPress with a custom theme instead of a commercial template: the catalog has a specific page structure —tool, specifications, options, use— that no generic template solved without a fight.

Page composition relies on reusable blocks, so the team can put together a new product page or a campaign section from the pieces that already exist.

No e-commerce, by model decision: the site is catalog and lead generation, and the dealer section is the point all navigation converges on.

0%Preparing the scene