One way around pricing a job so you don't end up on the losing end is to bid it as a break down of everything. Make sure you get paid what your time is worth but make sure the customer knows he is responsible for the costs of supplies and materials and that if they decide to make changes after they give you the go-ahead it will cost more.
Bid your labor cost for what it will take to pick up materials, build and finish the project, and deliver it to the customer. I give a not to exceed cost (if you underbid the labor then it is your fault, make sure you cover everything in your labor cost). You also need to add a note for any changes to the original design as bid.
Bid any hardware, finish, and other supplies at cost plus shipping, taxes, and fees. Possibly add a small fee for research and ordering time, this fee can also help cover any price increases.
Bid other materials like wood as "approximately xxx BF of (wood-type) @ $x.xx per BF, = $xxx.xx, actually cost depend on price when purchased".
Also, add a flat rate charge for misc. supplies like shop towels, glue, brushes, screws, fasteners, and any specialty items like mixing cups and stir sticks for epoxies
Example:
Labor: not to exceed 982.42 to build, finish, deliver
Hardware: 72.65 plus any shipping, taxes, and fees
Wood: approximately 115 BF of Red Oak @ $5.45 per BF, = $626.75, actually cost depends on price at time of purchased plus any taxes and fees
Finish: 63.28 plus any shipping, taxes, and fees
Misc supplies: 25.00 for misc supplies -glue, towels, brushes
NOTE: These costs are for the project as designed - any changes will be at additional cost)