Home Listings Treasure Map The Mahoney Minute Contact
Michigan Real Estate · Oakland County & Metro Detroit

Find Your Next
Home Base.

I bring fresh energy, modern strategy, and the full depth of the Warren-Partridge Team to every transaction — backed by over sixty years of combined Michigan real estate expertise.

Backed By · Warren-Partridge Team
Grant Mahoney

New to the Game.
Not the Grind.

I'm Grant Mahoney — a Michigan real estate agent with Berkshire Hathaway HomeServices, Kee Realty, and a proud member of the Warren-Partridge Team. I grew up in the suburbs of Chicago, attended Kalamazoo College in Michigan, and made this state my home. Being newer to real estate isn't something I shy away from — it's an asset. I bring current market thinking, genuine enthusiasm, and a relentless work ethic to every client I serve.

What being newer really means is that I have something to prove — and I do that every day under the direct mentorship of Mark Warren and Evan Partridge, two of Michigan's most seasoned real estate professionals. Their oversight ensures that every deal I'm part of benefits from decades of hard-earned experience, while you still get the attentiveness of an agent fully focused on your transaction.

Hockey has been part of my life since I was young, and the lessons it taught me carry over into everything I do. The sport is the ultimate team exercise — no one wins alone. Every shift, every goal is a collective effort. I bring that same instinct to every client relationship. Your goal is my goal. We work through it together, as a team, until we get there.

Michigan Licensed Warren-Partridge Team BHHS Kee Realty Kalamazoo College Team-First Approach

60+ Years of Michigan Real Estate
Behind Every Deal.

When you work with me, you're not just getting a single agent — you're gaining the full support of one of Michigan's most experienced real estate teams, operating under the Berkshire Hathaway HomeServices banner at Kee Realty. Mark and Evan provide direct oversight on my work, meaning every transaction benefits from both fresh dedication and deep institutional knowledge.

Mark Warren
Mark Warren
Team Lead · ~50 Years in Michigan Real Estate

Mark graduated from Michigan State University in 1977 with a degree in Psychology and Philosophy — and went directly into real estate, never looking back. He has spent nearly five decades navigating every kind of market, selling every type of property, and building a career defined by sharp negotiation and genuine advocacy for his clients. His experience is deep, his judgment is tested, and his commitment to outcomes is unwavering. Working alongside Mark means having that wealth of knowledge available at every step of your transaction.

50
Evan Partridge
Evan Partridge
Team Co-Lead · 20 Years in Michigan Real Estate

Evan grew up in Western Massachusetts, but Michigan had other plans for him. He followed his college sweetheart back to her hometown of Commerce Township in 2005. He's spent the twenty years since building deep roots in the Southeast Michigan market, and the tenacity and organizational precision he brings to every deal have made him an indispensable force on the team.

20
Berkshire Hathaway HomeServices
Global Network · Local Trust

The Name Behind
the Transaction.

Berkshire Hathaway HomeServices

The Berkshire Hathaway name carries a weight that very few brands in any industry can match. Built on a foundation of trust, integrity, stability, and longevity, Berkshire Hathaway HomeServices is one of the world's most recognized real estate franchise networks — spanning thousands of offices and tens of thousands of agents across the globe.

When that name appears on a real estate sign, it is a promise — not just of professional service, but of a standard that every agent in the network is expected to uphold in every interaction and every transaction.

The network's tools give buyers and sellers access to deeper market data, broader property exposure, and a level of institutional credibility that opens doors. It is a powerful platform, and one I'm proud to work within every day.

KEE
Independently Owned · Michigan Rooted

Kee Realty

Kee Realty is something rarer than it sounds: a Michigan-grown, independently owned brokerage that chose to affiliate with one of the world's most prestigious real estate brands — because they believed their clients deserved that combination of local heart and global reach.

Headquartered in Clinton Township and serving communities across Southeast Michigan, Kee Realty has built its reputation one relationship at a time. They call their agents Forever Agents℠ — because the belief here is that real estate isn't just a transaction. It's the beginning of something longer.

It's the kind of brokerage that measures success not just in closed deals, but in clients who come back — and who send their friends.

98% Client Satisfaction Rating

More than listings — a local guide

🏠
Featured Listings

Current Properties

Hand-picked properties with full details, photos, and everything you need to make a confident decision.

View Listings →
🗺
Treasure Map

Local Attractions

My insider guide to the best the area has to offer — restaurants, parks, schools, and hidden gems.

Explore the Map →

Ready to Make a Move?

Whether you're buying, selling, or just starting to explore — fill this out and I'll be in touch within 24 hours. I pick up.

Filter:
Southeast Michigan
💡 Replace with Google Maps or Mapbox embed in production

The Mahoney Minute

Market insights, neighborhood news, and straight talk on Michigan real estate — straight from me to you.

✉ Subscribe on Substack

Loading latest articles...

async function loadData(file) { const r = await fetch(`../data/${file}`); return r.json(); } let listings = [], attractions = []; // ── NAV ─────────────────────────────────────────────── function showPage(id) { document.querySelectorAll('.page').forEach(p => p.classList.remove('active')); document.querySelectorAll('.nav-links a').forEach(a => a.classList.remove('active')); document.querySelectorAll('.mobile-menu a').forEach(a => a.classList.remove('active')); const page = document.getElementById('page-' + id); page.classList.add('active'); const navEl = document.getElementById('nav-' + id); if (navEl) navEl.classList.add('active'); const mnavEl = document.getElementById('mnav-' + id); if (mnavEl) mnavEl.classList.add('active'); window.scrollTo(0, 0); if (id === 'blog') loadBlog(); } function scrollToContact() { // Make sure home page is showing first showPage('home'); setTimeout(() => { document.getElementById('landing-contact-anchor').scrollIntoView({ behavior: 'smooth' }); }, 50); } function toggleMobileMenu() { const menu = document.getElementById('mobile-menu'); const burger = document.getElementById('hamburger'); menu.classList.toggle('open'); burger.classList.toggle('open'); } function closeMobileMenu() { document.getElementById('mobile-menu').classList.remove('open'); document.getElementById('hamburger').classList.remove('open'); } // ── LISTINGS ────────────────────────────────────────── const imgVariants = ['', ' v2', ' v3', ' v4']; function priceNum(p) { return parseInt(p.replace(/[$,]/g, '')); } function renderListings(data) { const grid = document.getElementById('listings-grid'); grid.innerHTML = data.map((l, i) => `
${l.images[0]}
${l.tag}
${l.price}
${l.address}, ${l.city}
${l.beds} Beds
${l.baths} Baths
${l.sqft.toLocaleString()} sqft
${l.garage}
`).join(''); } function filterListings(type, btn) { document.querySelectorAll('.filter-chip').forEach(c => c.classList.remove('active')); btn.classList.add('active'); let filtered = listings; if (type === 'under400') filtered = listings.filter(l => priceNum(l.price) < 400000); if (type === '400to600') filtered = listings.filter(l => { const p = priceNum(l.price); return p >= 400000 && p <= 600000; }); if (type === 'over600') filtered = listings.filter(l => priceNum(l.price) > 600000); if (type === 'featured') filtered = listings.filter(l => l.featured); renderListings(filtered); } function openListing(id) { window.location.href = `listings/${id}.html`; } // ── ATTRACTIONS ─────────────────────────────────────── const pinPositions = [ { top: '22%', left: '27%' }, { top: '45%', left: '50%' }, { top: '65%', left: '68%' }, { top: '33%', left: '71%' }, { top: '68%', left: '30%' }, { top: '40%', left: '20%' } ]; function renderAttractions(data) { // Sidebar list document.getElementById('attr-count').textContent = `${data.length} local gems worth knowing`; document.getElementById('attractions-list').innerHTML = data.map(a => `
${a.emoji}
${a.category}
${a.name}
📍 ${a.distance}
`).join(''); // Map pins const mapArea = document.getElementById('map-area'); data.forEach((a, i) => { const pos = pinPositions[i] || { top: '50%', left: '50%' }; const pin = document.createElement('div'); pin.className = 'map-pin'; pin.style.top = pos.top; pin.style.left = pos.left; pin.title = a.name; pin.innerHTML = `
${a.emoji}
`; pin.onclick = () => openAttraction(a.id); mapArea.appendChild(pin); }); } function openAttraction(id) { window.location.href = `attractions/${id}.html`; } // ── FORMSPREE ───────────────────────────────────────── const landingForm = document.getElementById('landing-form'); if (landingForm) { landingForm.addEventListener('submit', function(e) { e.preventDefault(); const btn = landingForm.querySelector('.lf-submit'); btn.textContent = 'Sending...'; btn.disabled = true; fetch('https://formspree.io/f/xojkarev', { method: 'POST', body: new FormData(landingForm), headers: { 'Accept': 'application/json' } }) .then(function(res) { if (res.ok) { landingForm.style.display = 'none'; document.getElementById('lf-success').style.display = 'block'; } else { btn.textContent = 'Something went wrong — try again'; btn.disabled = false; } }) .catch(function() { btn.textContent = 'Something went wrong — try again'; btn.disabled = false; }); }); } // ── THE MAHONEY MINUTE (RSS) ─────────────────────────── let blogLoaded = false; async function loadBlog() { if (blogLoaded) return; const container = document.getElementById('blog-content'); try { const RSS_URL = 'https://grantmahoney.substack.com/feed'; const API = `https://api.rss2json.com/v1/api.json?rss_url=${encodeURIComponent(RSS_URL)}&count=12`; const res = await fetch(API); const data = await res.json(); if (data.status !== 'ok' || !data.items || data.items.length === 0) { throw new Error('No articles found'); } const cards = data.items.map(item => { const date = new Date(item.pubDate).toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' }); // Strip HTML from excerpt const tmp = document.createElement('div'); tmp.innerHTML = item.description || item.content || ''; const excerpt = tmp.textContent.trim().replace(/\s+/g, ' ').substring(0, 280); return `
${date}
${item.title}
${excerpt}${excerpt.length >= 280 ? '…' : ''}
Read on Substack
`; }).join(''); container.innerHTML = `
${cards}
`; blogLoaded = true; } catch (err) { container.innerHTML = `

Couldn't load articles right now.

Read directly on Substack →
`; } } // ── INIT ────────────────────────────────────────────── (async () => { listings = await loadData('listings.json'); attractions = await loadData('attractions.json'); renderListings(listings); renderAttractions(attractions); })();