Software engineer · Buenos Aires

I make the complex simple.

@react@nextjs@gsap@typescript
Mobile banking
Splash
Yield305
Maturoscope
FindFund
Mercado Pago Point

Software engineer specialised in frontend. I take products from idea to production in very different industries, like banking, payments, real estate and sports, with modern, AI-powered technologies.

Selected work

Complex problems, clear interfaces.

Banking, sports predictions, real-estate investment, innovation, EU funding and payments. Six real products: open any card to read the case.

About

I'm José. An engineer by training, frontend by choice.

I care about the details people feel but rarely name:

  1. 01The timing of a transition.
  2. 02A layout that holds at every width.
  3. 03A page that loads before you blink.
6+years building products in production
UTNInformation Systems Engineer
EN · ESEnglish every day with European clients
Buenos AiresHybrid or on-site
CV ↗Full résumé, PDF
Selected work

Real products for decisions that matter.

Point

Mercado Libre

The checkout for Mercado Pago's card reader, from picking the device to the payment, in five countries.

ReactNode.jsSSRCheckout

FindFund

Synopp

Uses AI to find, among thousands of EU funding calls, the ones a European company can win, and explains why each one fits.

Next.js 16React QueryZustandnext-intl

Maturoscope

Synopp

A self-assessment that shows innovators in any sector how ready their solution is for market, ending in a downloadable report.

Next.js 15RadixRechartsi18next

Yield305

Litebox

Real-estate investment platform embedded in Salesforce: load a property and see whether it works as a fix-and-flip or a rental.

Next.js 14NestJSPostgreSQLAuth0

Splash

Litebox

White-label sports prediction and trivia games for betting operators: 10+ apps on one codebase, in 8 languages.

ReactReact NativeMongoDBAWS

Mobile banking

Banco de Corrientes

MásBanCo, a provincial bank's mobile app with biometric onboarding and payments, built in React Native side by side with design. 500,000+ downloads.

React NativeAdobe XDGenexus
Toolbox
Toolbox × agents

Your stack, already in my hands.powered by agents.

The ones I use every day. And if your project needs another, I’ll learn it.

Every tool lands with the agent that uses it. I set the task, they build, I review.

  • React
  • Next.js
  • TypeScript
  • Tailwind
  • React Query
  • Zustand
  • GSAP
  • Framer Motion
  • NestJS
  • PostgreSQL
  • MongoDB
  • React Native
  • Jest
  • Figma
  • Radix / shadcn
  • next-intl
  • Node.js
  • AI coding agents
  • Clerk / Auth0
  • React Testing Library
  • GitHub Actions
  • Docker
  • Kubernetes
  • Argo CD
AI-native workflow

I ship with a team of agents. I stay the editor.

An AI coding agent runs as an orchestrator and hands work to specialised agents for UX, development and QA. Any provider works: Claude, GPT, Gemini, whatever fits the project. They share memory files, so context survives between sessions. I set the direction, review every diff and own what ships.

Any model works: Claude, GPT, Gemini. The process stays the same.

  • Context lives in files
  • Small diffs, human review
  • Quality is a role, not a phase
agents.log · example run
  1. you → brief: "a dark-mode toggle with a fun transition"
  2. orchestrator → plan: 3 tasks · context saved to memory
  3. ux → circular reveal from the button, respects reduced motion
  4. dev → View Transitions API + fallback · 48 lines
  5. qa → ✓ AA contrast ✓ keyboard ✓ no layout shift
  6. you → diff reviewed · merged ✓
  7. ops → pipeline → Argo CD sync · live in prod ✓
Under the surface

Every pixel has a reason.

What someone using FindFund sees.

What makes it work: data, session, URL state and the AI agent that scores each call.

↔ Scroll or drag the curtain
<Sidebar/> client
FFindFund◔
HomeAnalysesValue propositionsFavouritesCompany profileInvoices
// Sidebar.tsx
const t =
  useTranslations('nav');

return NAV_ITEMS.map((item) => (
  <NavLink {...item}
    key={item.href}
    label={t(item.key)} />
));
JC
José C.Admin · Calvano & Commits
// middleware.ts · Clerk
export default authMiddleware({
  publicRoutes: PUBLIC_ROUTES,
});
Sunday · 25 Oct
Hey José, 3 calls fit you today.
<CreditsCard/> client
Your credits
0Analyses left
3Value propositions
// hooks/useCredits.ts
export const useCredits = (orgId: string) =>
  useQuery({
    queryKey: creditKeys.byOrg(orgId),
    queryFn: () => creditsApi.get(orgId),
  });
Analyse an open call anytimeBuy single report
// optimistic: the UI updates before the server confirms
onMutate: () => credits.increment(1),
onError: (_err, _vars, snapshot) => credits.restore(snapshot),
<OrgCard/> client
Your organisation
⌘Calvano & Commits
SME · Buenos Aires · est. 2 a.m.Manage
// types/organisation.ts
export interface Organisation {
  id: string;
  name: string;
  size: 'STARTUP' | 'SME' | 'LARGE';
  plan: Plan;
}
<AnalysesList/> client
Recent analyses
Europe fundingInterreg funding
// tabs live in the URL: shareable, back-button safe
const [tab, setTab] = useSearchParam('programme');
5 September 2026
Up to 97% match
// services/matching.ts
const candidates = prefilter(calls, profile);
const ranked = await agent.rank(profile, candidates);
return ranked.filter((m) => m.score >= MIN_SCORE);
5 September 2026
Up to 62% matchClosed call
// domain/call.ts · derived, never stored
export const isClosed = (call: Call, now = Date.now()) =>
  call.deadline.getTime() < now;
+ New analysis
// poll while the analysis runs, stop when it's done
useQuery({
  ...analysisQuery(id),
  refetchInterval: (q) => isRunning(q.state.data) && 4_000,
});
<ValueProps/> client
Value propositions
HORIZON EUROPENo days left
Energy performance of smart buildings
HORIZON-CL5-2026-09-D4-01
HORIZON EUROPE115 days left
Valorising Horizon results via innovation ecosystems
HORIZON-BRIDGING-2027-06-02
the light sidethe dark side
Experience

Every job left a mark.

A bank, a product studio, the consultancy I co-founded and now Mercado Libre. Each one shaped how I build.

Now

Mercado Libre

Software engineer · Buenos Aires

I'm on the Point checkout team: the server-rendered flow where businesses buy Mercado Pago's card reader, from picking the device to confirming the payment, in five Latin American countries, working closely with the backend team.

  • React
  • Node.js
  • SSR
  • Redis
  • Datadog
Ongoing

Synopp

Co-founder & tech lead · Paris / Buenos Aires

Technology consultancy for European clients, with products of our own. I lead architecture, estimates and delivery: FindFund, our AI search for EU funding, and Maturoscope, whose GitOps delivery to Kubernetes I built.

  • Next.js
  • NestJS
  • AI agents
  • Docker
  • Kubernetes
  • Argo CD
2022 – 2025

Litebox

Software engineer · Remote

Product studio, building for international clients. First Splash, a white-label sports prediction and trivia platform for betting operators, in React and React Native. Then Yield305, a real-estate investment platform embedded in Salesforce, in Next.js 14 and NestJS, that turns a property's details into its projected ROI, as a fix-and-flip or a rental.

  • Next.js 14
  • React Native
  • MongoDB
  • AWS
  • Jest
2020 – 2022

Banco de Corrientes

Frontend developer · Corrientes

MásBanCo, the bank's mobile app, in React Native and side by side with design in Adobe XD. I integrated biometric onboarding, identity checks and payments with the banking core. More than 500,000 downloads.

  • React Native
  • Adobe XD
  • Genexus

Open to new challenges.

↘ grab one and throw it.

mate-powered
remote-friendly
ships on fridays
hire me →
pixel nerd
dark mode first
EN · ES

Let's build something.

josecalvano1546@gmail.com
Open mail app