Open to full-time roles in ItalySelect freelance projects in parallel

Design, code and communications. One person, the whole product.

20+ years across design, front-end and digital communications, now paired with the modern AI stack. I take a product from brief to production on my own — an AI-first workflow that has cut my delivery times by 60–70%.

Marcelo Caliman, digital product designer and developer
0+

years of experience

0

products built, 4 live in production

0M+

R$ processed through campaigns

0

editions of an annual summit

What I bring

Real AI-powered speed

A landing page with Stripe in 2 days. An MVP in 1–4 weeks. The workflow is documented: 6 products built with AI-first tooling, 4 live in production.

End-to-end autonomy

From brief to production deploy I can own the whole chain — design, front-end, back-end, infrastructure. Inside a team, that is one less handoff between disciplines.

Design + tech + communications

Since 2011 I have led the technical side of a communications agency: campaign pages, live content and the platform behind them, alongside a team running donations, monitoring and calls. Those campaigns have processed R$100M+.

Built to survive the day

The interesting part is never the happy path. Checkouts that cannot drop a transaction, pages that hold when the traffic arrives all at once, launches operated live rather than deployed and hoped for.

Most agencies still quote 3 months for what I ship in 2 weeks.

INTERNAL TOOLS

Built overnight when the need emerges

The admin and client portal you're using? I built them for myself in 2 days. Same speed I deliver to clients.

BACKOFFICE · LIVE

mcaliman backoffice

admin.mcaliman.com

Built end-to-end · 2 days · 52 commits

Client management system with authenticated admin area, CRUD for projects and milestones, Stripe invoicing, and a public client portal with magic link auth. The same system you're seeing proof of in the case study above.

Next.js 16SupabaseMagic Link AuthStripe InvoicingMulti-subdomain routing
OFFSHORE TOOL · DEPLOYED

AncoPlat

ancoplat.duckdns.org· private

Built end-to-end · 2 days · Solo + reviewing engineer

Static analysis tool for offshore mooring lines, replacing a legacy desktop workflow. Elastic catenary solver with seabed contact and Coulomb friction, validated against MoorPy across 9 benchmark cases. Handles multi-segment lines, attachments, inclined seabed, platform equilibrium under environmental load, and watch circle envelopes. Built with one offshore engineer reviewing the physics.

PythonFastAPIReactTypeScriptSciPyValidated vs MoorPy
AGENCY WORK · CLIENT DELIVERY

Deadlines that do not move

Contractor at GrupoBrasil, a Brazilian communications agency, since 2011, leading the technical side.

Making of UTCAL Summit 2024 · UTC América Latina's channel

UTCAL SUMMIT · 13 EDITIONS

UTCAL Summit

UTC América Latina · industry association

13 consecutive editions · 1,000+ attendees and 40+ sponsors each

The annual congress of UTC América Latina, the regional utilities telecom and technology council. The agency runs its communications and production end to end; I lead the digital delivery — event site, programme pages, visual identity and paid social, against a date set a year out that cannot slip.

Event siteProgramme pagesVisual identityPaid social
Fundo de Bolsas campaign page on Charidy: a dark navy hero announcing that every donation is multiplied four times, a row of five preset donation tiers, and the campaign's own results panel below.

Fundo de Bolsas · campaign page, matching tiers, donation flowcharidy.com/fundodebolsas2025

Client campaigns on Charidy · each one opens on charidy.com in a new tab

CAMPAIGN ENGINEERING

Donation campaigns

Charidy · US fundraising platform · GrupoBrasil is its Brazilian representative

40+ campaigns · R$100M+ processed

I build the campaign pages and integrate the donation flow; alongside me a team handles donation management, monitoring and the call desk. What transfers to any product team is the engineering underneath: a checkout that cannot drop a transaction, pages that hold when the traffic arrives all at once, and a launch day operated live rather than deployed and hoped for.

The money is raised by the campaigns and the organisations behind them; Charidy is the platform. Mine is the layer it passes through.

Campaign pagesDonation flow integrationHigh-traffic launchesLive operations
EPTCA home page: the headline "Distribuir Qualidade Para Preservar a Vida" beside a photograph of an operating room, with a language switch and an immediate-quote button in the header, and the four product categories below.

Home · bilingual, quote-firsteptca.com

Live client site · each screen opens on eptca.com in a new tab

CATALOGUE & QUOTING

EPTCA Medical Devices

EPTCA · medical-device distributor · a GrupoBrasil client I run end to end

4 medical specialties · quote builder · PT / EN

The site and the catalogue behind it: the product range across four medical specialties, searchable and filterable, each item able to open a quote. The quote page is a builder rather than a contact form — items go into a list and leave as a single request with the buyer’s details attached. Next.js, bilingual, and mine end to end: the build, the upkeep and the Google Business Profile.

Next.js siteProduct catalogueQuote builderBusiness Profile
CAMPAIGN COMMUNICATIONS

The pieces that carry a campaign

A platform only works if people arrive at it. The same hands that build the page produce the announcements, the save-the-dates and the institutional pieces that bring the traffic — for the agency's clients and for the products.

  • Sinagoga de Ipanema Charidy campaign announcement, "campanha aberta"
  • UTCAL Summit 2026 card announcing a joint session of the UTC global advisory committee
  • EMET Charidy campaign piece, kosher food support for families in need
  • UTCAL save-the-date for an artificial intelligence symposium in Rio de Janeiro
  • Doativa announcement for early access to the beta: build a campaign in minutes, with a ready link and a tracking dashboard
  • Betar Rio 2024 Charidy campaign announcement
  • UTCAL webinar card with AWS on specialising language models for utilities
  • Lar da Esperança Charidy campaign save-the-date
  • EPTCA institutional piece marking thirty years supplying medical devices
  • Chaverim Chazak Charidy campaign save-the-date
  • UTCAL webinar card with Genesys on what ANEEL resolutions 1137 and 1148/2025 change for the electricity sector, with the five speakers
  • Escola Beit Menachem Charidy campaign on early childhood education
  • UTCAL seminar on digital transformation in utilities, Florianópolis
  • EPTCA institutional piece marking thirty years, set in an operating theatre
  • UTCAL webinar card with Cisco on protecting critical utility infrastructure
  • Doativa email-marketing header on collecting donations with a clean page

Built with the tools that move fast

Three toolsets, all in daily use: one builds the product, one takes it to an audience, and one keeps a project moving when other people are involved.

Code

Next.js
React
TypeScript
Tailwind
Vercel
Supabase
Stripe
Anthropic
Bolt logoBolt
v0 logov0
VS Code logoVS Code
shadcn/ui logoshadcn/ui
GitHub

Design & communications

Figma
Canva
Adobe CC
WordPress
Mailchimp

Planning & collaboration

Trello
Notion
Slack

How I work

Discovery

Understand the problem

Define scope, sketch architecture, identify risks early. No wasted cycles.

1–3 days
Build

Design, code, and integrate

Iterating daily with live previews. Design and development happen in parallel.

1–4 weeks
Ship

Deploy to production

Transfer ownership, go-live support, and documentation included.

1 day
CLIENT EXPERIENCE

A real-time window into your project

No more email chains or status check-ins. Every client gets a dedicated, secure portal that shows exactly where things stand — and where they're going.

Real-time progress tracking

See every milestone update the moment it happens — from discovery to delivery.

Centralized file sharing

Design mockups, credentials, and deliverables in one secure place. No more searching through emails.

Integrated invoicing

Professional invoices with one-click payment. Full payment history at a glance.

Complete transparency

Every update, every file, every invoice — always accessible at your personal project URL.

CASE STUDY

This site is the proof

Built in 2 days · 52 commits · ~10 hours active work

The landing, admin backoffice, client portal, and Stripe-powered invoicing you're seeing — built from scratch in 2 days with 52 commits and ~10 hours of active work.

52
commitsacross 2 sessions
~10h
active workApr 16 — Apr 17, 2026
3
systemslanding · admin · portal

52 commits · hover to inspect

Landing & Redesign
22:28feat: initial landing page with EN/IT, Zoho SMTP, full design
23:06feat(seo): add Open Graph, Twitter cards, and locale-specific metadata
23:11feat(hero): add profile photo with responsive two-column layout
23:44feat(projects): add screenshots, rich hover effects, and cinematic reveal
23:50feat(stack): add visual tech stack section with branded logos
23:52feat(banner): add manifesto banner between Pillars and Projects
06:29feat(assets): add project screenshot images
06:53feat(hero): expressive typography, refined photo interaction
06:57feat(process,projects): typographic workflow section, polished card details
07:38feat(icons): add strategic lucide icons to pillars, process, projects, form, footer
07:57fix(techstack): local SVGs for Bolt/v0/Cursor/shadcn + restore full opacity
08:08fix(stats): editorial typography treatment, remove cell borders, refined suffix hierarchy
08:19feat(assets): add local SVG/PNG logos for Bolt, v0, Cursor, shadcn/ui
08:19Merge branch 'redesign/expressive'
09:30feat(process): horizontal timeline with proportional duration scale
09:34feat(projects): asymmetric mosaic layout with featured project emphasis
10:02refactor(projects): vertical stack layout with side-by-side screenshot and content
15:41feat(landing): mention client portal in process section with stylized mockup
16:00feat(landing): dedicated client portal section with feature rundown
Admin CRUD
11:03feat(backoffice): Supabase setup, schema, and typed client helpers
12:10feat(admin): sidebar navigation and admin shell layout
12:14feat(admin): clients CRUD with drawer forms
12:20feat(admin): projects CRUD and detail page
12:26feat(admin): milestones, updates, and deliverables management
12:28feat(admin): loading skeletons and error boundary
13:47feat(admin): complete backoffice foundation
15:14feat(admin): bulk create milestones with templates
Auth & Infra
11:46feat(admin): magic-link authentication with email dispatch and session handling
11:56chore: trigger redeploy with new env vars
13:55fix(auth): resolve production magic link redirect and cookie domain for subdomain
14:05fix(proxy): handle all admin subdomain routes correctly in production
14:24feat(auth): 30-day rolling sessions for admin
Client Portal
14:57feat(portal): client project portal with authenticated views at /projeto/[token]
15:05fix(portal): language toggle shows target language instead of current
15:16feat(portal): default to dark theme
15:21fix(portal): unify color palette with admin and landing
15:25feat(portal): human-readable slug in URL while keeping token authentication
15:31fix(portal): resolve dynamic route naming conflict causing Internal Server Error
Polish & Fixes
23:01fix(a11y): heading hierarchy, section labels, dynamic lang attribute
23:02fix(a11y): increase tap targets to 44px minimum (WCAG 2.5.5)
23:11fix(hero): mobile padding and eyebrow line-break
23:12fix(projects): legible stack tags, unified card links, accessible h3
23:13polish: statsbar mobile, IT translations, devDeps, locale metadata
23:57polish: refined hero animation + global motion consistency
07:02polish: global typography rhythm, refined motion, visual consistency
07:18fix(design): correct scale, alignment, and logo visibility across sections
07:20fix(hero): reduce headline size for 2-3 line wrap on desktop
09:43fix(projects): align heights, normalize image ratios, consistent callout styling
12:44fix(admin): client detail page, html tags issue, and credentials deliverable type
13:01fix(admin): resolve route group structure and add missing invoices page
13:46fix(admin): resolve projects page rendering error
15:53fix(landing): rebalance portal callout with feature bullets and unified layout

Key decisions

Local SVGs over icon library

For Bolt, v0, and shadcn/ui logos, swapped the simple-icons package for hand-optimized local SVGs with proper light/dark variants. Small bundle cost for pixel-perfect rendering and brand-accurate colors.

One Next.js app, three domains

Instead of separate projects for landing, admin, and portal, used Next.js middleware to route mcaliman.com, admin.mcaliman.com, and /projeto/[token] from a single codebase. Shared components, shared build, one deploy.

Custom auth over Supabase Auth

Built magic link authentication with JOSE and a custom magic_links table instead of Supabase Auth. Total control over token lifecycle, session duration, subdomain cookies, and email delivery via Zoho SMTP.

Built withNext.js 16 · TypeScript · Tailwind · shadcn/ui · Supabase · Stripe · Vercel · Zoho Mail · Claude Code

This is what 'days, not months' looks like in practice.

Hiring, or building something?

A role, a project or a quick question — it all reaches the same inbox, and I answer personally. If you already have a project scoped, the start-a-project form is the faster route.

Personal reply within 48 hours.