How well defined the project needs to be is well enough to get you started and know where you're going to be heading for the next two weeks.
As a Scrum Master, I would simply say that you need to define gross features of your product in an Excel sheet or wherever else, only to keep track of your features. Making them User Stories helps a lot thinking about what feature you need next. Then, prioritize them: The Most Important or Imperative Feature to the Top, and the Least to the Bottom.
After you have listed some of the most important features, select the features you think you can develop bring to the state of Done after a two weeks period, or a month period if you prefer. Then, explode these selected feature so that you can start coding in a few.
While coding, you will certainly think of other elements needed to be develop in order to bring your selected features in a Done state. Done means you have nothing more to do, that is, testings, coding, assembling, documentation is Done!
In any time your selected features list may expand, as long as you meet with the goal, that is, you are able to develop everything you said you were to during the given period.
In short, nothing has to be perfect. Throw in some ideas, share with your comrades and see if what is written makes sense to meet with the demanded product requirements. If so, then you're in! To make it clear, I'll go with a simple Customer Management product. What is needed?
As a user, I may manage the Customers;
As a system, I persist changes to the underlying data store;
As a user, I need to enter my credentials to be able to manage customers;
As a system, I have to authenticate the user against the Active Directory;
Your first draft could be as simple as that! Then, we can see that security is an important part in our system, is it important enough to make the ultimate priority (Y/N)? This will depend on the requirements you have to meet. Let's say that Customer Management is the most crucial thing here. So, in the next Sprint, we need to be able to manage customers in a basic but acceptable way. What is Customer Management?
As a user, I may manage Customers;
-> As a user, I add a customer to the system;
-> As a user, I change a customer details;
-> As a user, I delete a customer;
-> As a system, I flag a deleted customer as being inactive instead of deleting it;
-> As a user, I need to list the customers;
-> As a user, I search the customers data bank for a given customer;
-> ...
This already illustrates enough functionalities to be able to begin developing the application. If your programmers need further instructions, then perhaps one developer who is comfortable with class diagrams may design the Customer class and its properties and methods! But as far as I'm concerned, with this few I have written, I would have enough to get started. Some features may be added or changed along the way. What is important is to focus on what you said was going to be Done. In our example, it is the Customer Management thing. We don't need to care about the user authentication as of now This will come later in the next Sprint.
I hope this helps! =)