Construction Company Websites: Project Portfolios, CRM, Technical SEO and AI Visibility
A practical website guide for contractors and property developers: verifiable project portfolios, unit data, CRM enquiries, multilingual SEO and AI visibility.
· TankDev Engineering

A prospective buyer opens a development page after seeing a campaign. The architectural images look convincing, but the buyer cannot tell whether the floor area is net or gross, which drawing is current, or whether the selected unit is still being marketed. An enquiry arrives at the sales office without a project reference. Meanwhile, a procurement manager visiting the same company’s website wants evidence of industrial contracting capability, not an apartment brochure. These are different buying journeys.
A construction website should connect defensible project information to an accountable enquiry process. This guide is for contractors, design-and-build businesses and property developers commissioning that system. The project, data and calculations are illustrative. They are not an unpublished TankDev construction-client case study or a claim of measured sales uplift.
1. Decide which business and buying journey the site serves
| Business model | Evidence the visitor needs | Useful next step |
|---|---|---|
| Main contractor / specialist contractor | Comparable work, exact responsibility and delivered scope | A scoped procurement or project enquiry |
| Residential or commercial developer | Project, location, layouts, area definitions and current sales information | A project-specific enquiry or appointment request |
| Sales office / authorised marketing partner | Clear relationship to the project and an accountable contact | Routing to the appropriate sales representative |
State the company’s actual role on each project. Design, groundworks, main contracting, specialist installation and marketing are not interchangeable credentials. A subcontractor should not present an entire development as if it were the developer. Accuracy also improves lead quality: a corporate buyer looking for an industrial construction partner needs different evidence from someone searching for a home.
Define a qualified enquiry before designing the form. A buyer may need to identify a project, unit type and preferred contact method. A commercial client may need to describe the work category, location, approximate scope and target programme. Ask for enough information to route the request; use a later secure step for detailed documents. If a person must assess the scope, do not label the first form as an instant fixed quotation.
2. Turn the project portfolio into verifiable evidence
Give each meaningful project a durable page with a structured publishing record: project category, location, your role, work scope, lifecycle status, dated progress updates and approved media. Distinguish planned, active and completed work. Keep a target completion date separate from actual completion; otherwise an old campaign can silently become a current promise.
| Field | Practical publishing approach | Avoid |
|---|---|---|
| Company role | Name the exact package or responsibility | Calling every associated development “our project” without qualification |
| Area and capacity | Separate net/gross definitions, basis and revision | An unexplained “120 m²” |
| Visual evidence | Label architectural visualisation, show unit and site photography; record dates | Presenting a rendering as an existing finished building |
| Progress | Approved, dated milestones with an accountable source | An unexplained percentage-complete counter |
| Documents | Identify the approved revision and publication scope | Uploading internal correspondence, personal data or obsolete plans |
Do not invent structural-safety assurances, unconditional completion promises or guaranteed investment returns as marketing copy. A website cannot establish engineering compliance or a buyer’s financial outcome. Obtain the basis for technical statements from the responsible team and preserve the relationship between the approved statement and its supporting revision. Publishing a document is not a substitute for assessing what it actually proves.
A completed development can remain a useful portfolio page. Update its status and calls to action rather than deleting it simply because a sales campaign ended. Link to genuinely relevant current work where appropriate. Individual sold units must not retain an active availability claim. Treat URL retention, portfolio value and sales availability as related but separate decisions.
3. Model projects, buildings, layouts and individual units
Company(id, legal_name, role, verified_profile_urls)
Project(id, company_id, slug_key, lifecycle, publication_revision)
ProjectTranslation(project_id, locale, slug, title, approval_state)
Building(id, project_id, code)
UnitType(id, project_id, layout_label, approved_plan_revision)
Unit(id, building_id, unit_type_id, external_id)
UnitArea(unit_id, area_kind, value_m2, measurement_basis, source_revision)
PublicUnitView(unit_id, display_status, source_version, observed_at)
MediaAsset(id, project_id, kind, captured_at, revision, publication_rights)
Inquiry(id, project_id, unit_id?, intent, assigned_team, state)
InquiryRequest(scope_id, idempotency_key, request_hash, inquiry_id)
CrmDelivery(inquiry_id, provider, external_id?, state, next_attempt_at)
Outbox(event_id, aggregate_id, event_type, payload)
UNIQUE(building_id, external_id)
UNIQUE(scope_id, idempotency_key)
Net/gross areas are separate facts, not one ambiguous 'size' field.
Public availability is a projection; it cannot allocate or sell a unit.A layout is not an individual unit. The same two-bedroom layout can occur in different buildings, on different floors and with different aspects. A layout page explains shared characteristics and approved drawings. A unit record identifies a specific inventory item and its relationship to the sales system. Use stable internal and external identifiers rather than treating a marketing slug as the integration key.
Store net and gross floor areas as separate facts, including the declared measurement basis and source revision. Do not derive one by subtracting an assumed percentage from the other. A plan revision may require review of the website summary, downloadable brochure and translated description together. Keep the public summary distinct from restricted technical files; record who approved each publication and when.
4. Make one system authoritative for sales status
If the sales office changes a unit’s status while a web editor maintains a separate spreadsheet, the public catalogue will eventually disagree with the operation. Agree whether the CRM, sales ERP or a dedicated unit service owns that status. The website should receive a limited public projection. Buyer identity, negotiated prices, deposits and internal sales notes do not belong in that projection.
-- Illustrative PostgreSQL projection update, not a sales transaction.
-- source_version must increase per unit at the authoritative source.
INSERT INTO public_unit_view
(unit_id, display_status, source_version, observed_at)
VALUES (:unit, :status, :version, :observed_at)
ON CONFLICT (unit_id) DO UPDATE SET
display_status = EXCLUDED.display_status,
source_version = EXCLUDED.source_version,
observed_at = EXCLUDED.observed_at
WHERE public_unit_view.source_version < EXCLUDED.source_version;
-- A delayed v41 event cannot overwrite v42.
-- A zero-row update means duplicate/stale input, not a new sale.
-- Detect version gaps; reconcile against the source periodically.
-- If data is stale, hide the availability claim and request confirmation.The sequence in this example must come from a real source-system contract, not a guess based on server clocks. If the provider does not expose ordered versions, agree a change cursor or periodic authoritative reconciliation. Track update lag and the last successful comparison. When information becomes stale, remove the strong availability claim and offer a confirmation enquiry instead.
“I am interested in this unit” is an enquiry, not a sale or a binding allocation. A real allocation workflow needs explicit authority, concurrency rules, expiry, cancellation and any required human decision in the sales system. Disabling a browser button cannot coordinate two representatives working on the same unit. Do not build a more consequential transaction than the business has actually specified.
5. Deliver enquiries to CRM without losing their meaning
Project / layout page
-> server-validated project and enquiry intent
-> durable enquiry + receipt
-> outbox / delivery worker
-> CRM acknowledgement + responsible team
-> first contact -> meeting -> proposal -> outcome
Homebuyer enquiry != contracting RFQ != job application
Received != accepted by CRM != unit allocated != sale completed# Architectural pseudocode; use your provider's real API contract.
with db.transaction():
previous = find_request(scope_id, idempotency_key)
if previous:
return same_receipt_or_409(previous, request_hash)
project = load_public_project(project_id)
require_project_is_published(project)
unit = optional_unit_in_project(unit_id, project.id)
# Validate phone/email and intent; do not trust browser labels.
inquiry = create_inquiry(project.id, unit, intent, permitted_contact_data)
save_request(scope_id, idempotency_key, request_hash, inquiry.id)
write_outbox("inquiry.received.v1", {"inquiry_id": inquiry.id})
# UNIQUE(scope_id, idempotency_key) resolves concurrent admission.
# A uniqueness conflict rolls back; load the original request and compare hash.
return receipt(inquiry.id, "received") # Not "CRM accepted" or "unit reserved".
# Worker: provider idempotency/upsert reference -> CRM acknowledgement.
# On unknown outcome: query the external reference before retrying.
# Enforce object authorization on every inquiry or document read.An email notification is not evidence that a request has an owner. Route by project, intent and relevant business unit; record the first-contact target, unsuccessful contact attempts and delivery failures. A CRM outage must not erase a submitted enquiry. Retrying a form should not create a second opportunity, while legitimate interest in a different project must not be blindly merged away.
A transactional outbox connects the local write to downstream delivery. It does not automatically produce exactly one effect in an external CRM. Use the provider’s idempotency or external-reference/upsert contract and reconcile uncertain outcomes. Our API and system integration guide explains the general patterns; the construction-specific task is keeping the enquiry attached to the correct project, unit and sales responsibility.
6. Publish drawings, visualisations and BIM with clear boundaries
Treat media dates, revisions and publication permissions as data. Replacing a drawing while keeping its old filename can leave a CDN, a downloaded sales pack and the website showing different revisions. Versioned asset paths and one approved link from the current project page make the trail easier to follow. Removing a link from a page is not sufficient access control for a sensitive file.
buildingSMART’s IFC documentation describes IFC as an open standard for exchanging BIM data. An IFC file does not automatically provide a publication-ready sales catalogue. Decide which attributes are suitable for the public site, how model identifiers map to project/unit records, and which revision has been approved.
Review internal annotations, sensitive details, personal information and the permitted publication scope before exposing a model. If the visitor needs to understand a layout, begin with a readable two-dimensional summary and explanatory text. Load a heavyweight 3D viewer on demand. An optional visual experience should not prevent someone from reading essential information or making an enquiry on a modest phone.
7. Localise project pages, not just the navigation
| Content | Turkish | English |
|---|---|---|
| Portfolio | /tr/projeler | /en/projects |
| Project | /tr/projeler/avlu-konutlari | /en/projects/courtyard-residences |
| Layout | /tr/projeler/avlu-konutlari/daire-tipleri/a | /en/projects/courtyard-residences/layouts/a |
| Actual service capability | /tr/hizmetler/endustriyel-yapilar | /en/services/industrial-construction |
The project identifier stays the same across languages; titles, slugs, explanatory content and approvals are localised. Explain dates, area units and the conditions attached to any published price in terms the target visitor understands. Wait for the English copy to be ready rather than publishing a Turkish fallback as an English page. Translated pages should describe the same approved project revision.
A location page needs a real purpose: accurate project access information or an honest account of services delivered in a region. Repeating a generic page under dozens of district names adds little decision value. Google’s spam policies address doorway pages targeting similar searches and funnelling people to the same destination. Do not create fictional offices or completed projects to fill those pages.
8. Technical SEO for project catalogues and filters
- Deliver readable HTML, one descriptive H1, distinct metadata and an appropriate HTTP response for each published project. Do not trap essential information inside a video, PDF or 3D viewer.
- Give equivalent language pages their appropriate self-canonical URLs and reciprocal hreflang. Keep sitemap entries and internal links consistent with those choices.
- Do not make every combination of bedrooms, aspect, floor, area and price a separate indexable landing page. Publish selected categories with useful content and define a crawl/index policy for the remaining parameters.
- When a unit sells or a project completes, update status, active calls to action, availability/price claims and relevant links together. Keep personal enquiry tracking and customer documents outside public indexing and shared caches.
Google’s guides to canonicalisation, localised pages and faceted navigation address different problems. A canonical preference is not a magic instruction that fixes unbounded filter crawling. A crawler blocked by robots.txt may not be able to read a noindex directive on the blocked page.
A drawing PDF may be discoverable in search, but it does not by itself explain current project status or the next step. Combine a concise page summary, a labelled layout preview and an accessible download. Google’s image guidance considers page context and descriptive information; keyword-filled filenames alone are not a strategy.
9. Separate company, development and apartment entities
Organization describes company identity. GeneralContractor can be appropriate for a business that actually performs that role. ApartmentComplex describes a residential complex, while Apartment can describe an appropriate individual dwelling. A developer is not automatically an estate agent, and a project is not the company that publishes its page.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "GeneralContractor",
"@id": "https://builder.example/#company",
"name": "Example Construction",
"url": "https://builder.example/en/",
"areaServed": {
"@type": "City",
"name": "Ankara"
}
},
{
"@type": "ApartmentComplex",
"@id": "https://builder.example/#courtyard-project",
"name": "Example Courtyard Residences",
"url": "https://builder.example/en/projects/courtyard",
"address": {
"@type": "PostalAddress",
"addressLocality": "Ankara",
"addressCountry": "TR"
}
},
{
"@type": "WebPage",
"@id": "https://builder.example/en/projects/courtyard#webpage",
"url": "https://builder.example/en/projects/courtyard",
"name": "Example Courtyard Residences: project information",
"about": {
"@id": "https://builder.example/#courtyard-project"
},
"publisher": {
"@id": "https://builder.example/#company"
}
}
]
}This fictional example remains a code sample. The WebPage publisher relationship identifies the organisation publishing the information; it does not prove property ownership or a construction appointment. Select types that fit the real role and visible facts. Adding a specialised schema type cannot establish delivery performance, a search position or an assistant recommendation.
Do not mark stale availability or a generic “from” price as a firm offer for every unit. If a price is published, make its currency, applicable unit/conditions and freshness source understandable. Google’s structured-data policies distinguish correct implementation from guaranteed presentation. Schema vocabulary validation and testing a supported Google rich-result feature are different checks.
10. Help AI systems understand your construction business accurately
SEO concerns discovery, technical eligibility and answering the searcher’s task. GEO studies information and source visibility in generated answers. Findings from the GEO paper do not establish a guaranteed recommendation rate for your construction company. A brand mention, a citation to a project page and a supplier recommendation are different observations.
Google’s AI-features guidance says established SEO remains relevant and no special AI file or schema is required. That is guidance for Google’s features, not proof that every assistant selects sources identically. Aim for accessible and verifiable information about your company.
- Keep the official company name, website, contact details and genuine offices/service areas consistent.
- Publish the actual project role, delivered scope, status and dated evidence; obtain appropriate permission to use references.
- Connect genuine profiles that distinguish similarly named businesses. Do not use sameAs as a list of unrelated authoritative websites.
- Observe realistic buyer questions such as “industrial construction contractors in Ankara”, recording the assistant, search mode, date, source URL and answer context.
The business whose visibility matters in this section is your construction company. TankDev is the software provider building the supporting website and systems. Our SEO/GEO case study on TankDev’s own site documents our technical approach, not a construction-client outcome. The Google visibility guide covers the underlying mechanisms.
11. Performance: the route from imagery to a completed enquiry
Large architectural galleries and autoplay video can consume network and processing capacity before the visitor reaches a useful fact. Reserve space for the lead image and load secondary media as needed. Test layout enlargement, filters and validation messages on a phone. An impressive desktop animation does not compensate for an enquiry that a mobile visitor cannot submit.
Core Web Vitals good-experience thresholds are LCP ≤ 2.5 seconds, INP ≤ 200 milliseconds and CLS ≤ 0.1, assessed at the 75th percentile. Separate laboratory tests from field observations. A performance score cannot establish a particular increase in property sales or contract wins. Monitor durable enquiry acceptance and delivery as well as page usability.
12. A ready-made theme or a custom system?
| Need | Ready-made product/theme | Custom development |
|---|---|---|
| A few company pages and portfolio entries | Can be sufficient with sound content and maintenance | Needs a reason that justifies added cost |
| Projects, buildings, layouts and units | Review plugin/product boundaries | Model relationships and publication rules explicitly |
| CRM/ERP or multiple sales offices | Provider API and export conditions are decisive | Design permissions, failures, retries and reconciliation |
| Customer document portal or BIM publishing | Verify access and revision capabilities | Requires its own security and operational scope |
A theme is not automatically poor, and bespoke code is not automatically fast or secure. Compare maintenance ownership, provider accounts, data export and acceptance scenarios. A simple portfolio may not need a sales ERP; a live unit catalogue with representative routing may need more than a redesigned template. Our business web application guide gives the broader decision framework.
13. Where Essential and Advanced fit your construction website
As checked on 8 November 2026, the English package page lists Essential from $1,000 and Advanced from $3,000. The Turkish offer lists TRY 50,000 and TRY 150,000 starting prices. These are separately published market offers, not exchange-rate conversions. TankDev develops construction-company websites on this foundation; agree project/page counts, languages, content responsibilities and integrations in the proposal.
| Workstream | Essential | Advanced |
|---|---|---|
| Custom code, responsive design, administration | Foundation for approved company/project content | Same foundation |
| Technical SEO, Schema.org, sitemap/canonical/robots | Publishing foundation for agreed pages | Same foundation |
| Performance, baseline security, Search Console, technical report | Published foundation work | Same foundation |
| Entity model, external profiles, GEO page architecture, comparison report | No separate visibility layer | Additional visibility work and 90-day post-delivery follow-up |
| Live units, CRM/ERP, BIM or customer portal | Separately scoped | Separately scoped |
Essential can be a starting point for a clear, manageable company and project presentation. Advanced adds work on business identity, profile consistency and observations of AI visibility. It is not a packaged sales-automation system or a promise of a certain number of customers. Evaluate the current CRM/ERP and approval process before selecting custom modules.
14. Measure qualified demand rather than form volume alone
Invented monthly funnel for explaining the method:
6,000 relevant sessions -> 180 durable enquiries -> 60 qualified enquiries
Assumed channel spend: $2,400
Channel cost per durable enquiry: $2,400 / 180 = $13.33
Channel cost per qualified enquiry: $2,400 / 60 = $40
These costs exclude website development and ongoing operation.
Assess sales outcomes later against the same matured enquiry cohort.A submitted form is not a meeting or a sale. Separate homebuyer enquiries from contracting RFQs and job applications; segment by project, source, market and intent. Do not count browser, server and CRM events for the same request as three conversions. A long sales cycle makes comparing this month’s campaign spend with this month’s closures from old leads especially misleading.
Use an agreed set of decisions and measures: relevant project visits, qualification rate, first-contact time, CRM delivery failures, meeting progression and eventual cohort outcomes. Price, inventory, location and market conditions have effects beyond the website. Replace “a new website increases sales by X%” with a documented baseline and a change record.
15. Acceptance checks for the proposal and handover
- Content: verify project roles, area definitions, plan revisions, visualisation/photo labels and translated equivalents.
- Data: test delayed events, newer status protection and withdrawal of stale availability claims.
- Enquiries: test duplicate submissions, CRM timeouts, invalid project/unit combinations and separation of recruitment traffic.
- Access: ensure private documents, internal sales notes and another customer’s enquiry cannot be read without authority.
- Delivery: check mobile layout/form journeys, canonical/hreflang, source code, account ownership, backups and the support owner.
Bring your business model, project count, an approved sample plan, current CRM/ERP and two representative enquiry journeys to the first discussion. Compare Essential and Advanced features or describe your construction website requirements. The goal is a dependable path from accurate project information to an accountable commercial follow-up.
Construction website questions
01How much does a website for my construction company cost?
TankDev’s English offer lists Essential from $1,000 and Advanced from $3,000. The Turkish offer lists TRY 50,000 and TRY 150,000 starting prices. Agree the applicable offer, project/page counts, languages and separately scoped CRM, unit-data and other modules.
02How should I display a sold unit?
Update the status from the authoritative source and revise active sales calls to action and any availability/price claims together. A useful project portfolio page can remain online with its accurate status.
03Can the website connect to my current CRM or sales software?
This depends on provider API access, permissions, identifier mapping and failure behaviour. Durable receipt, CRM delivery, duplicate handling and representative assignment need an explicit contract.
04Are architectural images and floor-plan PDFs enough?
Not necessarily. Your role, current project status, area definitions, drawing revision and enquiry journey also need readable page content. Distinguish visualisations from actual site photographs.
05Does Advanced include unit management and BIM?
Those are separately scoped. Advanced adds entity, profile and GEO-oriented visibility work; CRM/ERP integration, BIM publishing and custom portals are not automatically included.
06Should I create a page for every district?
Only where genuine projects/services and useful, distinct information justify it. Publish real scope and evidence rather than duplicating generic text with a different place name.
07Will an English website bring overseas customers?
It can help visitors understand your work, but it does not guarantee enquiries. Localisation, relevant acquisition, accessible communication and the sales team’s follow-up capacity must work together.
08Is my construction company guaranteed to be recommended by ChatGPT or Gemini?
No. Consistent identity, genuine project scope and verifiable information support accurate understanding of your company. Assistants control their source selection and recommendations. No website or visibility package can guarantee recommendations or increased sales.
Sources and limits
Sources and package scope were checked on 8 November 2026. Code is architectural illustration, not a completed CRM/BIM connector or a load-test result. Company/project names, funnel volumes and costs are fictional. The business discussed in the FAQ is your construction company; TankDev provides the development service.
- Google: Organization structured data
- Schema.org: GeneralContractor
- Schema.org: ApartmentComplex
- Schema.org: Apartment
- Google: structured-data policies
- Google: canonical URLs
- Google: localized versions
- Google: faceted navigation
- Google: image SEO
- Google: Web Vitals
- Google: AI features
- Google: spam policies
- buildingSMART: IFC introduction
- AWS: transactional outbox
- GEO research
Related notes
- How to Design API and System Integration: A Reliable Order-to-Accounting Flow
- Why Is Your Website Not Selling? A 2026 Guide to Next-Generation AI- and ERP-Integrated Web Apps for SMEs and Enterprises
- Why Isn't My Business Showing Up on Google? Website Architecture, Indexing, Entity Signals, Technical SEO, and GEO