Sure. I'm a software engineer from Sao Paulo, Brazil. Most of my background is in Odoo, where I spent six years working with Python, PostgreSQL, integrations, and business-critical systems in production.
What transfers well to this role is the backend depth: data modeling, debugging, performance work, and dealing with real operational complexity. One example is a reporting issue where I fixed an N+1 query pattern and reduced the runtime from about 30 seconds to under 3.
More recently, I've been expanding into modern fullstack through my Expense Tracker project, using FastAPI, async SQLAlchemy, Next.js, and TypeScript. I'm looking for a mid-level role where I can bring that backend experience into a broader stack and keep growing.
I've learned a lot in my current role, and I'm genuinely grateful for it. It gave me strong production experience and a lot of ownership.
At this point, I want to work on a broader product and engineering stack outside the ERP space. That's why I've been intentionally building up FastAPI and Next.js on the side. I feel ready to make that transition now.
I'm mainly looking for three things.
First, meaningful backend or fullstack problems with real business complexity. Second, a team that cares about code quality and good technical conversations. And third, a remote environment where async communication is valued, because that's where I do my best work.
In the medium term, I want to become a strong senior fullstack engineer in the international market.
I'm being deliberate about entering at mid-level now, because I'd rather earn that progression in this stack than claim it too early. Longer term, I want to have technical influence through architecture, code quality, and mentoring, not through management.
One thing I've had to improve is asking for help earlier when I'm stuck on a technical problem.
My default used to be going too deep on my own before surfacing the issue. Now I timebox that much better. If I'm not making real progress, I write down what I tried, what I think is happening, and I bring that to the team. It's made me faster and more collaborative.
Situation: I built a webhook integration for a payment flow, and at first it looked fine in testing.
Task: Later, we found cases where the external system thought the event had been processed, but our database transaction had not completed correctly.
Action: I changed the flow so we only acknowledged the webhook after a successful commit. Then I added better logging, retry handling, and a reconciliation check.
Result: The issue did not recur, and it changed how I think about observability. Since then, I treat visibility in production as part of the feature, not an extra.
Situation: We had a financial report that was taking more than 30 seconds to run for a client team that used it often.
Task: I was asked to improve the performance without changing the result.
Action: I analyzed the queries, found an N+1 pattern, and refactored the data access so the report used a single efficient query path instead of repeated lookups.
Result: The runtime dropped to under 3 seconds on the same dataset, and the feature went from being avoided to being used daily.
I try to slow the conversation down first.
If I disagree, I start by understanding the reasoning, because sometimes the other person has context I don't have. Then I make my case with tradeoffs, not ego.
A good example was a migration where I thought skipping integration tests was too risky. I explained the rollback cost versus the small amount of time needed to add tests. We added them, and they caught issues before release.
Situation: I was asked to automate billing exceptions, but the request was vague and the stakeholders were not aligned on what that meant.
Task: My job was to turn that into something concrete and useful.
Action: I looked at historical data, mapped the real exception types, documented the patterns, and proposed a smaller first version so we could validate the logic before automating everything.
Result: We solved the most common cases first, aligned the stakeholders early, and avoided a lot of rework.
Situation: When I started the Expense Tracker backend, I chose SQLAlchemy 2.0 async, which was new to me.
Task: I needed to understand it well enough to make good architecture decisions, not just get something working.
Action: I used the official docs, checked real examples, and went into the source code when the docs were not enough. Then I documented the decision and the session pattern before building the core flow.
Result: The implementation was stable from the start, and later I could explain the session lifecycle clearly instead of treating it like magic.
For me, it's the combination of a hard problem and real user impact.
I enjoy technical depth, but I care more when I understand why the work matters. I also really value teams where code review is thoughtful and engineering discussions are taken seriously.
The main way I learn is by building real things.
That's why I built the Expense Tracker. It forced me to make architecture decisions, deal with mistakes, and document tradeoffs. I also read docs and source code, but what makes things really stick for me is applying them in a real project.
I always customize this answer, but the structure is simple.
First, mention one concrete thing about the product, company, or engineering culture. Second, connect that to your own background. Third, explain why this kind of environment fits how you work best.
A simple version is: "What stood out to me was [specific thing]. Given my background in [relevant area], I think I could contribute well there. And from what I've seen, the way your team works is the kind of environment where I do my best work."
I'd like to understand the range you have budgeted first, so I can answer in the right context.
If it's helpful for me to go first, based on the role scope and market, I'm targeting $X-$Y USD. If your range is in that area, I think we can have a productive conversation.
My notice period is 30 days, which is standard in Brazil. So realistically I could start around 4 to 5 weeks after signing.
I prefer to leave a role properly, with handoff and documentation done well. If your timeline is tighter, I'm open to discussing it.
Yes, mostly in a practical day-to-day way.
In my current work, I often became the person junior developers came to for debugging, architecture questions, and PR feedback. One concrete case was helping a junior engineer understand module boundaries in Odoo, which improved the quality of their PRs and reduced the amount of revision needed.
Situation: We were close to shipping a module migration without integration tests because of time pressure.
Task: I felt that was too risky, but I was not the decision-maker.
Action: I made a simple case based on effort versus rollback cost, instead of arguing emotionally. I showed why a small amount of testing time would likely save much more time if something broke in production.
Result: We added the tests, they caught issues before release, and the team treated testing more seriously in similar migrations after that.
I try to treat feedback as information, not as judgment.
If someone pushes back on my approach, I first want to understand the concern. If I still disagree, I explain my reasoning with tradeoffs or data. And if the team decides differently, I'm comfortable aligning and documenting the tradeoff clearly.
That's a fair concern.
Odoo gave me real backend depth in production: data modeling, debugging, PostgreSQL performance, integrations, and business-critical systems. What I'm adding now is the modern fullstack layer, and the Expense Tracker is where I'm doing that work seriously.
I'm targeting mid-level because I'm being honest about the transition. I'd rather come in at the right level and grow fast than oversell myself.
You're right that it's not the same as having real users in production yet.
What I can say is that I built it with production-style decisions in mind: authentication, migrations, test coverage, containerization, and documented tradeoffs. The missing part is real-world usage at scale, and that's exactly the kind of experience I'm trying to build in my next role.
I understand why you'd ask that, but I don't see this move as a title downgrade.
I was senior in a specific ecosystem. In this stack, I'm entering a new domain where I still have things to prove. What keeps me engaged is strong work and a strong team, not just title level.
The framework itself may not transfer directly, and I'm not pretending it does.
What does transfer is the engineering work underneath it: debugging production issues, optimizing PostgreSQL queries, handling integrations, making systems safe across migrations, and working closely with business stakeholders. That's the part of my experience I'm bringing with me.
I chose a personal project because I wanted end-to-end ownership.
I wanted to make the architecture decisions myself, deal with mistakes, and understand the consequences. That was the fastest way for me to build practical judgment in the new stack. I'm still open to open source, but for this phase, full ownership was the priority.
Yes. My written English is strong, and that's a big part of how I work already: documentation, async communication, and technical writing.
In spoken English, I'm comfortable working professionally. I may pause sometimes to choose the right word, but I communicate clearly and I ask for clarification when needed. I'd rather do that than pretend I understood something I didn't.