Every time you paste your property list into a chat window, you're doing unpaid data entry. Again. The fix is a custom GPT or Claude Project: a chat assistant that already knows your 14 communities, your floor plan mix, your current concessions, your brand voice, and the fact that Marketing never approves the phrase "luxury living" anymore.
Set up takes an afternoon. After that, "write the September email for Brookhaven" produces something that actually knows what Brookhaven is.
What you're actually building
Both ChatGPT (Custom GPTs, requires a paid plan) and Claude (Projects, also paid) do the same core thing: a persistent container with instructions and reference files that get read on every conversation inside it. You're not fine-tuning a model. You're building a very good briefing packet that never gets lost.
The difference between a mediocre one and one your whole team uses is entirely in what you put in the packet.
Step 1: The portfolio file
Open a spreadsheet. One row per community. Columns:
Community name, address, submarket, year built, unit count, floor plan mix (studio/1/2/3 with square footage ranges), current asking rent range by floor plan, current concession, amenity list, parking situation, pet policy and fees, school district if it matters in your market, top three competitors by name, positioning line, the one thing that makes it hard to lease, and the one thing that closes tours.
That last pair does more work than the other twenty columns combined. "Hard to lease: no in-unit washer/dryer in the A-units, and everything within a mile has it." "Closes tours: the courtyard. People walk in and stop talking."
Export to CSV. That's file one.
Step 2: The voice file
Take six pieces of your best real work. An email that got clicks, two social captions, a website community description, a review response you were proud of, a renewal letter. Paste them into one doc under headers saying what each one is.
Then write 200 words at the top explaining the rules the model can't infer. Something like: "We write at an eighth grade reading level. We never use 'luxury,' 'boutique,' 'urban oasis,' or 'nestled.' We use contractions. Subject lines are under 42 characters. We never use exclamation marks. We describe the apartment and the building, not the person who should live there. When we mention price we always say 'starting at' and include the disclaimer line."
Showing beats describing. The samples teach tone. The rules catch the things tone doesn't.
Step 3: The operating rules
This is the instructions box in the GPT builder, or the project instructions in Claude. Not a personality description. A job description.
``` You write marketing copy for [COMPANY], a [X]-community apartment operator in [MARKETS].
Before writing anything about a specific community, check the portfolio file for that community's details. Never invent an amenity, a price, a square footage, or a concession. If the file doesn't have it, ask me.
Match the voice guide file. Every time.
Default output format: give me the copy first, then a one-line note on anything you had to assume.
Fair housing: describe the unit, the building, and the neighborhood. Never describe who should live there, and never reference family status, age, race, religion, disability, national origin, sex, or anything that implies a preferred resident type. If I ask for copy that violates this, tell me and offer the compliant version. ```
That last block matters more than the rest. Models will happily write "perfect for young professionals and growing families" because it reads like normal apartment marketing, and normal apartment marketing has been doing it for decades. It's a fair housing problem. The instruction that fixes it is simple: describe the unit, not the resident. "Two bedrooms, 1,150 square feet, in-unit laundry" is safe and better copy anyway. Keep the rule in your instructions permanently, and still read the output before it ships.
Step 4: Load and test
Upload the two files. Then stress-test it with five prompts you'd actually send:
1. "Write three subject lines for the Brookhaven September prospect email." 2. "A prospect toured Riverside and went quiet for four days. Write the follow-up." 3. "Draft the community description for the new Meridian website page, 120 words." 4. "Respond to this two-star review at Oakfield: [paste]." 5. "What's our weakest concession position across the portfolio right now?"
Number five is the one that tells you if the files are real. A good portfolio file lets the assistant compare across communities and tell you something. A bad one produces a shrug in paragraph form.
Where it breaks: stale files. If your concessions changed three weeks ago and the CSV didn't, your assistant will confidently quote a special you killed. Set a calendar reminder to re-upload the portfolio file the first Monday of every month, and any time pricing moves. Also, it doesn't connect to Entrata or Yardi. It knows what you last told it, nothing more.
Step 5: Make it a team asset
Share it with your on-site teams and your regionals. Custom GPTs share within a workspace; Claude Projects share within an organization plan. The moment a property manager can generate an on-brand resident notice without emailing you, you've bought back real hours and you've raised the floor on everything that goes out with your logo on it.
Build a second one for review responses. Same portfolio file, different instructions, plus five approved response templates and your escalation rule for anything mentioning safety, discrimination, or legal action.
Then go look at what you spent last month on the freelance copywriter.