career=> \conninfo
You are connected to database "career" as user "visitor".
career=>

Moe Babazadeh
CTO at Neuroject · building since 2007
I architect AI-driven platforms and scalable digital products.
CTO at Neuroject, building the alignment layer for construction enterprises. Building since 2007: robots, IoT and firmware, then web, mobile and AI platforms.
Here his career is a database: 13 tables, 230 rows, 9 foreign keys. Pick a saved query or write your own, and watch each row stream up through the query plan.
SELECT value, label FROM facts;6 rows| value | label | Check |
|---|---|---|
| 11.8k+ | commits since 2021 | as stated |
| 10+ | products live | as stated |
| 5 | devices in production | |
| 0.5B+ | sensor records logged | |
| 2 | apps on App Store and Google Play | |
| 300k+ | weekly downloads of packages I patched |
⌘+Enter runs the statement under the caret. Ctrl+Space suggests tables and columns.
Where he works today. Two open rows. CTO at Neuroject since September 2026, after joining as Chief Full Stack Engineer in June 2024, and a contract role at Neuroship since May 2026.
Output
| # | orgtext | titletext | startedyearmonth |
|---|---|---|---|
| Neuroject | CTO | 2026-09 | |
| Neuroship | Chief Full Stack Engineer (contract) | 2026-05 |
Query planEXPLAIN ANALYZE
Planning 0.112 msExecution 0.026 msrows real · costs modelled · times simulated
Plan: 4 operators, 2 rows to the client.
Under the hood
A lexer and a recursive-descent parser that keep a position on every node, so an error can point at its character.
Pushes filters into scans, uses the primary-key index for lookups, and picks Hash Join or Nested Loop with a cost model in Postgres’ units.
Every operator is a generator, so rows really stream: a Limit stops its scan early, a Sort or Hash takes everything first.
Each row that moves between operators is logged on a simulated clock, and the plan view replays the log as particles.
Schema
13 tables and 9 foreign keys, built from his CV and project list. Projects and tech are many-to-many; Attendum and Active-Class are umbrella rows whose parts point back with parent_id. Click a table to query it.
- profile.company_id references orgs.id, optional
- roles.org_id references orgs.id
- duties.org_id references orgs.id
- projects.parent_id references projects.id, optional
- projects.org_id references orgs.id, optional
- project_tech.project_id references projects.id
- project_tech.tech_id references tech.id
- devices.project_id references projects.id, optional
- contributions.project_id references projects.id, optional
Write to him
The only write a visitor may make. Fill in the string literals and execute: the engine checks the constraints, then your mail app takes over.