Skip to main content
Project Management

Building Technical Specifications That Clients Actually Approve

6 min read

Practical tips for building technical documentation that gets client approval on the first try

technical specificationsclient approvalproject managementUAE developmentFreelancer advice

I spent three and a half weeks writing the perfect technical specification document for a logistics client in Dubai. Everything was in there: API endpoints mapped out to the decimal, database schemas with color-coded status codes, even flowcharts for the user approval process. They came back with one sentence: "This is nice, but where’s the part where the user gets a notification when their package is out for delivery?"

Spoiler: it was in there. Buried under six subsections of "Mobile App Push Notifications" in Appendix B.

That’s when I realized documentation isn’t just about showing what you know. It’s about making the client feel like part of the process.

Start With What the Client *Sees*

Most of my clients here in Abu Dhabi aren’t opening the spec to debug routing logic. They care about how the system behaves when someone’s using it. So nowadays, I start specs with User Journeys First.

For example, in Tawasul Limo’s bilingual booking app, I opened the doc with scenarios:

  • A user selects a car in Arabic, fills the form, and receives a confirmation call in Arabic.
  • A driver gets dispatched via Firebase push, checks the route in the app, and updates the booking status.

This forces technical decisions into context. When the client sees the notification flow in action, they’re less likely to miss it during review.

Split the Document into Bite-Sized Layers

Technical specs have to serve two masters: the client who wants clarity, and the developer who needs precision. Here’s how I organize mine:

  1. High-level architecture: A whiteboard-style sketch of the full stack. For Laravel systems, I draw this: frontend → API layer (Laravel Sanctum) → database → external services (Firebase, AI APIs).
  2. Core features: One page per major module. In Greeny Corner’s plant care app, the AI identification section covered image upload limits, response time expectations, and failover behavior.
  3. Technical details: The last section, not the first. APIs, database ERDs, third-party integrations—hidden until the client signs off on the business flow.

This layers the complexity. Clients don’t drown in JSON response structures upfront. They see the forest before the trees.

Use Examples, Not Just Explanations

Clients approve faster when they can see the app in action through your words. In a recent spec for a bilingual UAE e-commerce project, I added a "User Story Examples" appendix.

For the checkout flow:

  • Scenario 1: A customer selects a payment method in Arabic. The app switches the currency to AED automatically with the country code from the phone’s locale.
  • Scenario 2: A refund is processed. The system sends an English email to the customer but shows the Arabic status in the app’s order history.

This works better than "currency localization will dynamically update based on user preferences." Clients need verbs, not just adjectives.

Version Changes in Real Time

I used to draft specs in Google Docs and send version 0.1, then 0.2, then 1.0… and lose track of comments halfway. Last year, I switched to using GitHub Pages for internal drafts.

Why?

  • Every change gets a commit hash.
  • Clients highlight a paragraph and comment directly in the browser.
  • When they say “this part is confusing,” I can link the confusion to a feature decision.
  • Version comparisons are easier than scrolling through WhatsApp threads.

For Reach Home Properties’ bilingual real estate platform, this reduced the feedback loop from 10 days to 2.

The *One* Thing That Reduces Revisions

Meetings. Not Zoom calls where everyone stares at a static screen, but actual in-person whiteboard sessions.

Here’s what changed for me after What I've Learned From 7 Years of Working with UAE and GCC Businesses:

  • I book 90-minute sessions with key stakeholders, not tech deep dives.
  • I start by drawing the app’s core workflow, wrong intentionally.
  • When the client corrects me, we fix it together.

That’s the document that gets approved on the first try. They own the mistakes I make during the session because they caught them.

Why UAE Clients Demand Bilingual Clarity

I’ve learned the hard way that Arabic language support isn’t just about translating buttons. In a recent spec for a government contractor, the client wanted the app to format dates based on the device’s language.

In the technical specification, I called out:

  • moment.locale('ar') vs English date formatting
  • Right-to-left text handling in React Native TextInput components
  • Special characters in Arabic names (e.g., "محمد") needing UTF-8 validation in Laravel forms

This wasn’t a corner to cut. For PostgreSQL Full-Text Search for Arabic and English: A Practical Guide, I even included sample search queries in both languages to show the backend logic.

QA Shouldn’t Be Its Own Phase

Let clients test the specification itself. How?

I include a QA Plan in the doc. Not after development—during the initial approval stage.

In it:

  • What edge cases the team will test (e.g., invalid phone number in UAE format +97150...)
  • How they’ll verify third-party integrations (Firebase analytics tracking specific actions)
  • Who in the client’s team owns sign-off (usually product manager + IT director)

It forces the client to mentally step through the process before writing a single line of code.

The Inevitable Chaos

No matter how bulletproof the spec, there’s always the client who says "Oh, can we also add this just here" three weeks into development.

I had that happen with a logistics company in Dubai needing driver app updates mid-project. Their original spec included geolocation tracking, but they wanted real-time GPS updates instead of the scheduled 15-min intervals we’d documented.

So we re-wrote the document. That’s why I always build versioning into the spec itself—changes get tracked, no confusion, no "you never said this!" moments.

Frequently Asked Questions

How do you handle unclear project scope before writing the spec?

I don’t write anything until the client answers three questions:

  1. Why does this project matter in one sentence?
  2. Who will use it daily?
  3. What happens if it’s delivered wrong?

Once I have that, I structure the spec around solving their actual problem.

What tools do you use for technical specs?

My stack is GitHub Pages for versioning, Mermaid for diagrams (not Lucidchart), and Postman for API documentation. Clients don’t get Word docs anymore—it’s too slow to keep updated.

How do you explain technical debt to non-technical clients?

I compare it to building a house. If we rush the foundation today to launch faster, we’ll spend more time fixing cracks later. Most business owners in UAE/GCC countries get that analogy.

Should clients review every section of the spec?

Absolutely not. They need to check:

  • Core user flows
  • Key integrations (e.g., payment gateways, SMS APIs)
  • Compliance points (data sovereignty, GDPR, Arabic language support if relevant)

Developers handle the rest.

If you need help structuring a specification document that gets approval on the first try—or if you’re mid-project and drowning in feedback—book a free consultation.

I’ve written 40+ specs for UAE and GCC businesses. I’ll show you how to get from “This looks good” to “This is exactly what we need.”

S

Sarah

Senior Full-Stack Developer & PMP-Certified Project Lead — Abu Dhabi, UAE

7+ years building web applications for UAE & GCC businesses. Specialising in Laravel, Next.js, and Arabic RTL development.

Work with Sarah