I built an AI contract analyzer in 6 weeks – here’s what I learned about prompting Claude for structured output

Six weeks ago I had an idea. Today it’s a live product
with real users.

fynPrint reads any contract (PDF or DOCX), flags risky
clauses in plain English, and writes the negotiation email
for you.

The stack:

  • Next.js 14 + TypeScript + Tailwind (App Router)
  • Supabase (PostgreSQL + encryption at rest)
  • Clerk for auth
  • Claude Sonnet 4.6 API with zero data retention
  • Stripe (credit-based pricing)
  • Vercel

The hardest part – prompting Claude for consistent
structured JSON:

Getting reliable JSON output with risk scores, confidence
levels, and plain-language explanations per clause took
a lot of iteration. The key things that worked:

  1. Be extremely specific about the exact JSON structure
    you want. Include field names, types, and examples.

  2. Tell Claude explicitly what NOT to include in low-risk
    clauses to reduce output tokens and speed up response time.

  3. Add “Return ONLY valid JSON. No markdown, no code
    fences, no preamble.” at the end of every prompt –
    without this you’ll get inconsistent formatting.

  4. For the negotiation email, pass only the selected
    high-risk clauses back to Claude, not the full analysis –
    keeps the second API call fast and cheap.

Pricing decision:
Went credit-based ($2.99 per analysis) instead of
subscriptions. Most freelancers don’t sign contracts every
week – a monthly subscription felt wrong for that use case.

Looking for beta testers:
If you’re a developer who freelances and signs client
contracts, I’d love your honest feedback on the analysis accuracy.
5 free credits – just sign up at fynprint and DM me.

Happy to answer questions about the architecture or
prompting approach in the comments.

Leave a Reply