Inspiration
Dorado did not begin as an abstract AI idea. It came from problems I was already dealing with every day in Mazatlán.
I have helped operate a portfolio that grew from 18 to around 34 vacation-rental properties. My responsibilities included guest communication, maintenance requests, inventories, keys and access, coordinating technicians and vendors, and preparing information for property owners.
Before working in property operations, I also worked in hospitality and financial-service sales. Those experiences taught me that the way a business responds to a person can determine whether a conversation becomes a sale, a satisfied customer, or a lost opportunity.
In property management, I kept seeing valuable conversations arrive through WhatsApp and get mixed together with urgent repairs, incomplete questions, repeated messages, and leads that nobody had enough time to follow up on properly.
A guest might write, “The AC is not working.” A remote owner might ask about maintenance and property management in the same message. Someone else might only write “mtto urgente,” use local slang, or switch between Spanish, English, and Spanglish.
Behind each message could be a guest who needs help, an owner who could become a client, or an opportunity that will disappear if nobody responds quickly.
I am not a traditional software engineer. My background is in operations, hospitality, sales, marketing, and solving real problems with limited resources. That became an advantage: I was not trying to build AI just because it was interesting. I wanted to build something that I would actually use.
That is where Dorado came from.
What it does
Dorado is a bilingual AI lead-response and operating system for small service businesses.
Its first use case is property management and hospitality in Mazatlán, especially for businesses communicating with Mexican customers and with owners, travelers, or investors from the United States.
Its assistant, Sofia, receives a customer message and tries to understand the real need and business opportunity behind it.
Dorado can:
- Understand Spanish, English, Spanglish, informal language, and abbreviations such as “mtto.”
- Detect whether someone needs maintenance, a rental, property administration, a sale, business automation, or another service.
- Recognize when one message contains several needs at the same time.
- Extract relevant facts such as location, urgency, property count, budget, dates, and the requested service.
- Identify missing information.
- Ask the most useful next question instead of sending a generic answer.
- Score and prioritize each opportunity.
- Detect situations that require immediate human attention.
- Maintain a structured record of the conversation.
- Continue responding with a deterministic fallback when the AI provider is temporarily unavailable.
- Transfer sensitive or important decisions to a human operator.
Sofia is designed to communicate like a capable member of the team, not like a robotic FAQ. She introduces herself naturally, adapts to the customer’s language, and moves the conversation toward a useful next step.
Dorado does not invent property availability, prices, contracts, financial returns, or legal outcomes. Decisions involving final quotes, payments, negotiations, safety, availability, and contractual commitments remain under human control.
How we built it
We built Dorado using Node.js and Express as the main application layer.
The Gemini API provides the intelligence behind the lead analysis. Gemini receives normalized conversation context and returns structured information that Dorado can validate and use to determine intent, urgency, missing information, lead score, next action, and response.
The system includes:
- A structured Gemini decision layer.
- Bilingual lead-qualification rules.
- Lead scoring and human-handoff logic.
- WhatsApp integration through Whapi for early real-world testing.
- A protected web demo endpoint that works independently from WhatsApp.
- Duplicate-message protection.
- Conversation memory.
- Health and operational-status endpoints.
- Event logging and technical evidence.
- A deterministic fallback engine.
- A suite of 25 automated tests covering critical behaviors.
- Deployment configuration for Google Cloud Run.
I used AI tools as technical copilots during development, and I want to be transparent about that.
However, the operational problem, customer journeys, business rules, safety boundaries, testing scenarios, and decisions about what the system should and should not do came from my own experience.
AI helped me turn that operational knowledge into working software faster. It did not replace the work of defining the problem, reviewing the output, testing failures, or deciding whether a response would actually be useful to a customer.
The final deployment target is Google Cloud Run, allowing Dorado to operate independently from a personal computer. The architecture also separates the intelligence layer from the messaging provider, so the communication channel can be changed without rebuilding the core system.
Challenges we ran into
Our biggest challenge was learning the difference between a demo that works once and a system that remains useful when something fails.
During live WhatsApp testing, Gemini reached a free-tier rate limit at exactly the wrong moment. The incoming message reached our webhook correctly, but the person did not receive the intelligent response we expected.
It was frustrating, but it exposed a real weakness that a perfect local demo would not have shown.
We also found an invalid field in the Gemini structured-output request. Because the request format was incorrect, every AI call was falling back, even though the resulting symptoms initially looked like several separate bugs.
It appeared that scoring, maintenance detection, urgency recognition, personality, and escalation were all failing independently. In reality, they shared one root cause.
After identifying and correcting the request format, we improved validation and expanded our tests so the same problem would be easier to detect in the future.
Instead of hiding these failures, we used them to improve Dorado. We created a deterministic fallback so a customer is not silently ignored when Gemini is temporarily unavailable.
We also separated the business logic from WhatsApp after encountering trial and capacity restrictions from the messaging provider. This means the intelligence can still be demonstrated and tested through the protected web endpoint.
Another major challenge was teaching the system to understand how people actually communicate.
Real customers do not write perfect prompts. They abbreviate words, omit important information, mix languages, change subjects, repeat themselves, and include several requests in one message. Dorado needed to work with that reality instead of expecting perfectly structured input.
Finally, we built this with a very small team, limited resources, and a short deadline while continuing to handle real responsibilities outside the competition. That forced us to focus on the parts that demonstrate genuine intelligence and practical business value.
Accomplishments that we're proud of
I am proud that Dorado moved beyond being an idea, document, or mockup and became a functioning system that has processed real messages.
Some of the accomplishments we are most proud of include:
- Turning day-to-day property operations knowledge into a reusable AI workflow.
- Building a bilingual system for Mexican and U.S. customers.
- Teaching Dorado to understand abbreviations, incomplete messages, urgency, and multiple intentions.
- Connecting Gemini to a real WhatsApp messaging workflow.
- Building a protected demo that judges can test without depending on WhatsApp.
- Creating resilience for AI failures instead of pretending those failures will never happen.
- Building 25 automated tests around important system behavior.
- Adding duplicate-message protection, structured logging, health checks, and conversation memory.
- Maintaining human control over prices, availability, payments, safety, and negotiations.
- Creating an architecture that can expand beyond real estate without discarding the work already completed.
For me personally, one of the biggest accomplishments was proving that I could build a real AI product without starting as a conventional developer.
I brought the operational knowledge and learned enough about APIs, webhooks, structured outputs, testing, security, deployment, debugging, and AI behavior to turn that knowledge into a functional product.
We did not have a large development team or a large budget. What we had was a real problem, direct operational experience, motivation, and the willingness to keep fixing what did not work.
What we learned
The most important lesson was that the quality of an AI product is not measured only by how intelligent its best answer sounds.
A useful business system must also behave responsibly when the model reaches a quota, the messaging provider fails, a customer repeats a message, the input is unclear, or the AI returns information in an unexpected format.
Reliability, validation, logging, fallback behavior, and human handoff are part of the product. They are not secondary technical details.
We also learned that a focused system grounded in real operational experience can be more valuable than a broad assistant that knows many things but does not move the customer toward a decision.
Gemini works best in Dorado when it is not asked only to “answer a message.” We ask it to:
- Understand the customer’s intent.
- Extract useful facts.
- Identify missing information.
- Evaluate urgency.
- Determine whether a human is needed.
- Recommend the next action.
- Produce a natural response.
- Return structured information that the application can validate.
I also learned that AI-assisted development still requires ownership.
AI can help write code and suggest architectures, but somebody still needs to understand the customer, recognize when a response sounds unnatural, test uncomfortable situations, question incorrect assumptions, and decide what is safe to automate.
The biggest lesson was simple: building quickly is useful, but only if we keep verifying what is actually working.
What's next for Dorado
The immediate next step is to complete the Google Cloud Run deployment and make the protected demo continuously available.
We also plan to connect persistent CRM storage so conversations and opportunities survive server restarts and can be reviewed through an operational dashboard.
After deployment, the next goal is to run a focused pilot with an independent property owner, property administrator, or local service business.
We want to measure real outcomes such as:
- Average response time.
- Qualified opportunities captured.
- Conversations recovered through follow-up.
- Correct human escalations.
- Maintenance requests coordinated.
- Appointments or commercial conversations generated.
- Revenue connected to opportunities identified by Dorado.
- Time saved for the business operator.
Our first market will remain property management, hospitality, and remote property ownership between Mazatlán and the United States.
This includes Mexican operators serving English-speaking customers and U.S.-based owners who need reliable local coordination for their properties.
The business model will begin with affordable paid pilots. Once Dorado proves measurable value, we can offer implementation fees, monthly managed-service plans, and additional operational coordination.
From there, the same lead engine can support other businesses that depend heavily on WhatsApp, including:
- Cleaning companies.
- Maintenance providers and contractors.
- Spas and wellness businesses.
- Restaurants.
- Tour operators.
- Clinics.
- Real-estate professionals.
- Marketing agencies.
- Other local service businesses.
The long-term vision is not to replace the people operating these businesses.
The vision is to give small businesses an AI operating layer that makes sure valuable conversations are understood, prioritized, followed up on, documented, and transferred to the right person before the opportunity disappears.
Built With
- api
- express.js
- gemini
- gemini-api
- google-cloud
- google-cloud-logging
- google-cloud-run
- google-spreadsheets
- javascript
- node.js
- rest
- restapi
- whapi
Log in or sign up for Devpost to join the conversation.