Build Your Own Signal: A Developer's Guide to the @geointel/sdk
Move beyond the dashboard. Learn how to integrate Place Signals directly into your applications using our fully-typed TypeScript SDK.
Hero image
A Place Signals score card with confidence, source freshness, and proxy geography labels.
A conceptual Place Signals score card showing why every location score needs source context.
For many people, Place Signals is a dashboard: a place to poke around on a map and see what is going on.
For builders, that is only half the fun. If you are shipping a product, the real goal is to pull place intelligence into your app without turning your codebase into a weekend project.
That is why we built the @geointel/sdk.
Introducing the @geointel/sdk
The @geointel/sdk is a fully typed TypeScript library designed to make spatial data feel less like a scavenger hunt and more like a normal query.
Whether you are building in Node.js, React, or serverless, the SDK gives you a clean way to ask for place intelligence without worrying about the plumbing underneath.
Why an SDK?
- Type safety: Get autocomplete and compile-time checks for signal layers and response shapes.
- Normalization: We handle the coordinate transformations and H3 indexing under the hood.
- Speed: Built-in caching and batching help keep your app responsive.
---
Quick Tutorial: From Zero to Signal
Let's walk through how you can pull a signal into your own code without needing a ceremonial migration plan.
1. Initialize the Client
First, install the package and initialize the GeoIntelClient with your API key.
import { GeoIntelClient } from '@geointel/sdk';
const client = new GeoIntelClient({
apiKey: process.env.GEOINTEL_API_KEY,
baseUrl: 'https://api.placesignals.com'
});
2. Query a Coordinate for a PlaceScore
The most common use case is fetching a score for a specific point on Earth. Instead of raw data, you get a calculated PlaceScore that combines the signals that matter at that location.
const signal = await client.signals.getScore({
location: { lat: 45.523062, lng: -122.676482 }, // Portland, OR
resolution: 'h3_level_9'
});
console.log(`Signal Strength: ${signal.score}/100`);
3. Filter for Specific Layers
You do not always need every signal. You can filter down to the layers that matter for your use case, like quiet-home search, retail screening, or neighborhood analysis.
const neighborhoodIntel = await client.signals.getScore({
location: { lat: 40.7128, lng: -74.0060 }, // NYC
layers: ['acoustic_peace', 'walkable_essentials'],
includeMetadata: true
});
console.log(neighborhoodIntel.layers.acoustic_peace.rank); // "High"
---
Real-World Use Cases
The nice part about an SDK is that it should fit into your workflow instead of making you reorganize your life around it.
Real Estate Portals
Embed a quietness or livability score directly onto listing pages. It is a lot more useful than a vague badge that says "nice area" and then refuses to elaborate.
Investment Analysis
Run bulk scoring against thousands of potential site locations. Once the SDK is wired in, your model can filter out sites that miss your threshold for resilience, growth, or whatever version of "not worth the trouble" you care about.
Delivery and Logistics
Optimize routing not just for distance, but for the kind of friction that makes drivers grumpy and ETAs unreliable. If a route is short but terrible, the SDK can help you notice that before your ops team does.
---
Start Building Today
The era of "GIS as a silo" is over. With the @geointel/sdk, geospatial intelligence becomes just another variable in your code.
Ready to start? Head over to developers.placesignals.com to get your API key, explore the full documentation, and browse our library of example projects.
We can't wait to see what you build.
Related reading
Get the Place Signals Journal
Source-backed notes on places, markets, and relocation. No spam, just data.