
There’s a moment every FileMaker developer knows. You’re three scripts deep into a sync routine. You’re parsing JSON by hand, juggling global fields as state holders, building nested loops that made sense at 2pm and are unreadable by 5pm. The logic works — barely — and you already know that six months from now nobody will touch it. Not even you.
That feeling isn’t a skill problem. It’s an environment problem.
FileMaker Is Brilliant. At What It’s Brilliant At. #
Let’s be clear about something before going further: this is not a FileMaker critique. FileMaker is an exceptional tool. It is a rapid UI builder, a trusted persistence layer, a platform that lets small teams build real business solutions faster than almost anything else. Decades of deployed solutions prove it.
The problem isn’t FileMaker. The problem is using FileMaker as something it was never designed to be: a complex logic execution environment.
Scripts are linear and monolithic. Business logic scatters across script triggers, calculations, custom functions, and script parameters until no single file tells you what the system actually does. There is no package ecosystem. No testable pipeline. No native debugging that survives a complex call stack. A coding agent can help you write the scripts — but the scripts are still the wrong tool for the job. You’ve made the wrong thing faster to build, not right.
The Reflex #
The solution lives in FileMaker, so it gets built in FileMaker. Nobody questions it. That’s the reflex.
The developer pushes harder. More scripts. Cleverer JSON parsing. Another layer of table occurrences. More global fields holding intermediary state. It ships. The client is happy. And twelve months later the developer who built it — maybe you, maybe someone who inherited it — opens that file and feels that familiar dread.
The reflex isn’t laziness. It’s loyalty to the platform. But loyalty to a platform shouldn’t mean ignoring what the platform is bad at.
The Inversion #
Before writing the next script, ask one question: does this logic have to live here?
In most integration scenarios — sync routines, data transformation, external API orchestration, geo queries, classification pipelines — the honest answer is no. The logic can live anywhere that can read and write FileMaker data. And FileMaker, since version 19, exposes a clean, standards-compliant OData API that any external system can call.
Which means your logic can live in Node. In Python. In any environment where coding agents work freely, where npm and PyPI give you a package for almost anything, where you write testable functions, commit to version control, and iterate without fighting the platform.
FileMaker becomes what it has always been best at: a trusted data store and a trigger surface. The complexity moves to terrain where complexity is cheap.
This is the inversion. Not a workaround. Not a last resort. In many scenarios, it should be the first instinct.
Three Times This Was The Right Call #
PrestaShop Sync — Inversion by Structural Complexity #
Syncing a FileMaker product catalog with a PrestaShop store is, on paper, a straightforward integration. In practice it means handling nested product variants, category hierarchies, stock updates, price rules, and bidirectional conflict resolution — all through a REST API with its own data model that maps imperfectly onto FileMaker’s.
You can build this in FileMaker scripts. Many developers have. The result is typically thousands of lines of script logic spread across dozens of script steps, with JSON parsing happening manually at every layer, error handling bolted on as an afterthought, and no realistic way for a coding agent to navigate or extend it.
The inverted version: a custom module on the PrestaShop side holds all the sync logic. It reads and writes FileMaker data via OData. The FileMaker solution triggers operations and stores results — nothing more. The sync codebase is clean, testable, and something a coding agent can extend in an afternoon.
Cadastral Geo Queries — Inversion by Capability Absence #
A real estate solution needed to let users draw a polygon on a map and retrieve all cadastral properties within that boundary, filtered by a set of criteria. Useful. Powerful. And completely impossible inside FileMaker.
FileMaker has no geometry type. It cannot evaluate ST_Within. There is no spatial index, no PostGIS, no answer to this class of problem inside the platform — full stop.
The solution: PostgreSQL with PostGIS outside, a WebViewer-hosted map interface, and a lightweight proprietary API bridging the two. FileMaker stores the properties and the user’s search history. PostgreSQL answers the spatial questions. Each system doing exclusively what only it can do.
The inversion here wasn’t a choice made for convenience. The capability ceiling was absolute.
NACE/CNAE Activity Classifier — Inversion by UX Impossibility #
Spanish businesses must declare their economic activity using a hierarchical classification system — CNAE, the Spanish implementation of the European NACE standard — with five sequential levels: section, division, group, class, description. To navigate it correctly you need to know the top-level categories well enough to descend through them in order. Almost nobody does.
The FileMaker implementation of this is a well-known pattern: cascading value lists, global fields holding intermediary codes, relationships filtering each level based on the selection above. It can be built. It works. And it produces an interface that real users, especially professionals with no patience for bureaucratic taxonomies, simply will not use.
The inverted version: a chatbot connected to a knowledge base containing the complete official CNAE tables. The user describes their business activity in plain language. The bot returns the full classification chain in seconds. The entire FileMaker infrastructure — tables, value lists, global fields, relationships, five levels of conditional filtering — was replaced by a conversation.
The FM cleanup alone was worth it.
What The Other Answer Looks Like #
It’s worth acknowledging an alternative approach — and a good one. Wim Decorte and the team at Soliant Consulting published a detailed framework for making agentic coding work inside FileMaker: skills that tell the model what FM can do, deterministic tools that assemble XML rather than letting the model hallucinate structure, identity resolution for schema navigation. It’s rigorous, thoughtful engineering for a genuinely constrained environment.
But notice what it is: a harness. A significant investment in scaffolding built to make a capable system work inside a closed binary format that wasn’t designed for it.
That harness is the right answer if you must work inside FileMaker. The question that the “Inversion” strategy asks is whether you ever had to. For integration logic — sync, transformation, orchestration, geo queries — the answer is usually no. The harness is the right answer to a question worth reconsidering.
What You Actually Gain #
Moving logic outside FileMaker isn’t just about escaping friction. It’s about landing somewhere genuinely better.
Outside, coding agents navigate codebases freely. They read functions, trace calls, propose refactors, write tests. npm and PyPI give you a package for almost anything — authentication, retry logic, geospatial operations, queue management — without building from scratch. You version control everything. You test in isolation. You hand the codebase to another developer and they can read it without knowing FileMaker at all.
The FileMaker side gets simpler too. Fewer scripts. Less state. Less fragility. A cleaner surface that does what FileMaker does well and nothing more.
OData is the bridge in both directions — standards-compliant, documented, stable. FileMaker publishes it. The external system consumes it. Data flows cleanly without custom connectors or proprietary middleware.
When Not To Invert #
The inversion is not for everything.
If the logic is simple and the data lives in FileMaker, stay in FileMaker. Summarizing a notes field, classifying a customer complaint, translating a text field, extracting structured data from a pasted address — these are atomic operations where an API call goes out, a result comes back, and it lands in a field. Clean, fast, no reason to add external infrastructure.
The inversion is for when the logic outgrows the environment. When you feel yourself building scaffolding to support the scaffolding. When the script count climbs and the maintainability drops. When a coding agent would need a map just to understand what the system does.
That’s when you stop, ask the question, and move the work to where it belongs.
Close #
FileMaker is where your data lives and where your users work.
It doesn’t have to be where your problems get solved.