| Client | Hotel J P Farm, Gwalior Road, Jhansi |
| Industry | Hotel, banquet halls, wedding lawns, restaurant |
| Scope | Brand refresh, design, development, booking engine, payments, SEO, AEO, GEO, security |
| Stack | WordPress with a custom theme and one custom plugin. No page builder, no off-the-shelf booking, SEO, form or security plugins |
| Live | hoteljpfarm.com |

The client
Hotel J P Farm sits on a 2-acre campus on Gwalior Road in Jhansi, near the Polytechnic. One address holds 15 AC rooms in four room types, 2 banquet halls, 2 garden lawns, a swimming pool and a multi-cuisine restaurant. Travellers stay for a night; families come for weddings, ring ceremonies, haldi and mehendi; friends book birthdays and kitty parties.


The problem
Before this project, the hotel had no website. Guests found it through Goibibo, MakeMyTrip and WedMeGood listings, a Facebook page and an Instagram handle.
- Every room booking went through an OTA, with commission on each one, and the hotel did not own the guest relationship.
- Wedding and party enquiries had no home. The details (lawns, halls, rooms, catering) were spread across a flyer and social posts.
- Search showed listings, not the hotel. Someone searching “wedding venue in Jhansi” or “hotel on Gwalior Road Jhansi” landed on third-party pages.
- The logo had been made for print on black, with neon yellow and green, and did not work on a light, modern website.
The brief
The owner asked for four things:
- A full website and domain for the hotel.
- Online room booking with payment on the website itself.
- WhatsApp and call for weddings, parties and every other service.
- Everything custom: no third-party plugins or themes, security included, and the site fully optimised for SEO, AEO and GEO, with keywords like hotel in Jhansi, JP Farm and “near me” searches.
What we built
1. A refreshed brand, not a new one
The hotel’s sun, palms and farmhouse are its identity, so we kept them and redrew them cleanly. We cut the palette to the logo’s own forest green and marigold, set on a warm paper ground. Headings use Marcellus, a classical serif that echoes the logo’s lettering. Body text uses Mukta, which has full Devanagari, so Hindi creatives match the English. The website’s signature shape is the arch: photos sit in round-topped frames that echo the rising sun and the jharokha arches of Bundelkhand.
The kit includes colour and light versions of the mark, an app icon for the favicon and Google profile, colour and type tokens, and rules for voice and photography.


2. A custom theme, built mobile-first

- One-tap Call, WhatsApp and Book room bar on every phone screen, with a floating WhatsApp button on desktop.
- Separate pages for each way people search: Wedding Venue in Jhansi, Banquet Hall and Lawns in Jhansi, Birthday and Party Hall in Jhansi, Restaurant, Rooms, Gallery and Contact.
- Every event page ends with an enquiry form that hands off to WhatsApp. The guest’s details arrive in the hotel’s inbox and admin, then one tap opens WhatsApp with a ready-written message.


3. A booking engine that thinks like an OTA extranet
The hotel already manages rates on the MakeMyTrip and Goibibo extranet, so we built the website’s engine to work the same way. Staff do not have to learn new logic.
- Room types with real inventory: Deluxe ×5, Executive ×7, Family ×2, Premium with Jacuzzi ×1. Live availability by date, with a database lock so two guests cannot take the last room at the same moment.
- EP and CP rate plans with occupancy pricing. Each room has room-only (EP) and with-breakfast (CP) rates for 1, 2, 3 and 4 guests, matching the extranet. Where a room has no CP rate, breakfast is added per guest.
- GST worked out per night. The engine applies 5% or 18% depending on each night’s tariff per room, so a Premium room with breakfast for two moves to the higher slab automatically.
- Pay in full or pay an advance. The guest chooses at checkout. Razorpay handles UPI, cards and net banking, with server-side signature checks and a webhook backup.
- Booking desk inside WordPress: arrivals and departures today, occupancy tonight, a 21-day room calendar, phone and walk-in bookings, status changes, and notes.
- iCal sync feeds for OTAs that support it, to avoid double bookings.
- Branded confirmation emails to the guest and the hotel, with a WhatsApp link to the guest.




4. SEO, AEO and GEO from the first deploy
Search was not left for later. It was part of the build.
- Pages for real search intent: “wedding venue in Jhansi”, “banquet hall in Jhansi”, “birthday party hall in Jhansi”, “hotel on Gwalior Road”, each with its own title, description and clean URL.
- Structured data on every page: Hotel and EventVenue (LocalBusiness) with address, phones, check-in times, amenities and a price range from the live rates; HotelRoom and Offer on room pages; BreadcrumbList; and FAQPage built automatically from the on-page FAQs.
- Answer engine optimisation: 23 question-and-answer blocks written the way guests ask (“Can I book a room online?”, “Do you host weddings?”), each answered in the first sentence.
- Generative engine optimisation: an auto-updating /llms.txt that gives AI assistants the hotel’s facts, rooms and rates, and a robots.txt that welcomes search and AI crawlers (Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot and others) while keeping checkout pages out of the index.
- Clean core sitemap, canonical URLs, Open Graph images for WhatsApp and social sharing, geo meta tags, and descriptive alt text on every photo.
5. Speed as a default
- 28 photos re-cropped for their exact frame and converted to WebP, from multi-megabyte phone and camera originals down to about 30 to 145 KB each. The home hero is 70 KB.
- Every future JPEG or PNG upload is saved as WebP automatically, and oversized photos are scaled on upload.
- Self-hosted fonts, a preloaded hero image, lazy-loaded photos below the fold, no jQuery for visitors, and none of WordPress’s unused front-end scripts.
6. Security without plugins
- Login lockout after repeated failures, generic login errors, and a log of logins and lockouts.
- XML-RPC off, user enumeration blocked, security headers (HSTS, X-Frame-Options, nosniff, Referrer-Policy, Permissions-Policy), the theme and plugin file editor disabled, and comments off site-wide.
- Spam protection on every form (honeypot, time trap, rate limits) with no third-party service.
How we worked
- Day 0, evening: brief, domain advice and discussion of the booking model.
- Day 1: analysis of the hotel’s assets and the plugin bundle it already had (none fitted a hotel, so none were used), brand refresh, theme, booking plugin, 13 pages of copy, menus, room setup and live testing of the full booking flow.
- Same day: rate plans copied from the hotel’s extranet, photos optimised and placed, footer credit and handover.
All content was written from the hotel’s real details. We added no invented reviews, ratings or claims.

Results so far
- A direct booking channel the hotel owns: guests can see live availability and book without an OTA.
- Weddings and parties now have dedicated, search-ready pages with a two-step enquiry flow (form, then WhatsApp).
- One system for rooms, rates and enquiries, managed inside WordPress.
- Ready for search and AI answers on day one: structured data, FAQs and llms.txt live from the first deploy.
Traffic, ranking and booking numbers will be added once there is enough data from Google Search Console and analytics.
Under the hood
| CMS | WordPress |
| Theme | Custom, lightweight, mobile-first (“JP Farm”) |
| Plugin | One custom plugin (“JP Farm Core”): rooms, booking, payments, iCal, enquiries, SEO and schema, security, performance, media |
| Payments | Razorpay (UPI, cards, net banking), full or advance |
| Fonts | Marcellus and Mukta, self-hosted |
| Images | WebP |
| Third-party plugins | None for design, booking, SEO, forms or security |
Want a website that takes direct bookings and shows up in search and AI answers? Talk to Brilad.