1. You need a good LLM for base knowledge.
2. You need a good system prompt to guide/focus the LLM (create an agent).
3. If you need some functionality that doesn't make any decisions, create a tool.
4. If the agent + tools flows get too wily, break it down into smaller domains by spawning sub agents with focused prompts and (less?) tools.