This paper presents a new algorithm A for constructing Seifert surfaces from n-bridge projections of links. The algorithm produces minimal complexity surfaces for large classes of braids and alternating links. In addition, we consider a family of knots for which the canonical genus is strictly greater than the genus, (g c (K) > g(K)), and show that A builds surfaces realizing the knot genus g(K). We also present a generalization of Seifert's algorithm which may be used to construct surfaces representing arbitrary relative second homology classes in a link complement.