AI agents do the grunt work of grant-hunting: they find the calls, draft the applications, flag the deadlines. A person approves before anything ships.
Software is easy.
The hard part is the part nobody will show you until you're already paying for it.
I'm Adam. I build full-stack products end to end: backend, web, mobile, and the AI that ties them together. Then I write the tests that let me sleep.
Coding since 2021. Tech Lead at Vista/pub, then Senior Software Engineer at Euler. These days it's AI agents with a human approving the output, computer vision running on the phone, multi-tenant SaaS.
$ whoami --verbose name Adam Sousa title full-stack engineer · AI products since march 2021 speaks typescript · next.js · nestjs · expo · sql work tech lead @ vista/pub · sr. swe @ euler (eulerapp.com) $ adam --availability ► freelance [ ████████░░ ] open ► full-time [ ████████░░ ] open $ adam --focus | head -1 ► "full-stack products with AI, backend to app."
What I've actually shipped.
Four products I built end to end. Backend, the app, the AI in between.
A Muay Thai coach that watches you through the camera. Pose estimation runs on the phone (the video never leaves it), counts every strike and scores how clean it lands.
Multi-tenant SaaS for political campaigns: a web admin console plus a voter app on the same backend. White-label, and it works offline first.
"The books that shaped the people you admire." A catalog of what they actually read: the data gets scraped, an AI cleans and tags it, you browse by person or by theme.
Six things I believe, said plainly.
How I make calls when nobody's watching the PR.
- ── i.
The boring product wins.
If a teammate can read it on day two, you can still ship on a holiday.
- ── ii.
AI needs a human in the loop.
Agents find the work and draft it. A person decides what actually goes out. That line is the product.
- ── iii.
Privacy by default.
If it can run on-device, it runs on-device. The video never leaves the phone.
- ── iv.
Tests are the spec.
233 routes smoke-tested, 120 domain tests green. When I break something, they tell me before your users do.
- ── v.
Works offline, works under load.
The network is a feature you don't control. Plan for it being gone.
- ── vi.
Write it down or it's a rumour.
PRDs, runbooks, the why-not-X notes. The handover is the work.
The shortest path to a good fit is being honest about a bad one.
- 01Full-stack products from zero: web, mobile, backend.
- 02AI features and agent workflows (Claude).
- 03Mobile apps with Expo / React Native.
- 04Multi-tenant SaaS that survives your second hire.
- 05Owning the whole stack, front to back.
- 01Crypto. Ad tech. Surveillance.
- 02"Just a quick prototype" that ships to prod on Monday.
- 03Pixel-pushing someone else's Figma with no logic behind it.
- 04Throwaway work with no tests and no docs.
- 05Replacing engineers you should just hire.
A short list of things I'd defend in production.
Tools come and go. What I keep: small dependency graphs, and code that stays boring under load.
- TypeScriptprimary
- Next.js / Reactweb
- NestJSbackend APIs
- React Native / Expomobile
- SQLfluent
- PostgreSQL+ Drizzle
- Supabaseauth · db · storage
- Temporaldurable workflows
- Claude / Anthropic SDKagents · enrichment
- MediaPipeon-device vision
- Dockerreproducible
- Railway / Verceldeploys
- Vitest / Jestunit + domain
- Maestromobile e2e
- GitHub ActionsCI