1. Receive a business question from the user.
2. Check if a semantic layer is available.
3. If yes, list available metrics and dimensions. Query the semantic layer if possible.
4. If the semantic layer cannot answer directly, get the compiled SQL and modify it.
5. If no semantic layer, check for model discovery tools. Explore models and write SQL.
6. If no model discovery tools, analyze the dbt manifest and catalog files.
7. Execute the SQL query (if possible) and return the answer to the user.
8. Suggest improvements to the semantic layer if applicable.